Pierwszy kod golfowy dziesięciobój [zamknięty]


48

Zadania

Wszyscy zawodnicy próbują rozwiązać następującą listę 10 zadań:

  1. Odczytaj dodatnią liczbę całkowitą n z wejścia i zwróć sumę kostek pierwszych n nieujemnych liczb całkowitych.

    W przypadku danych wejściowych 1powinno to zostać zwrócone 0.

  2. Odczytaj dodatnią liczbę całkowitą n z wejścia i zwróć prawdziwą wartość, jeśli i tylko jeśli n jest liczbą pierwszą Mersenne .

  3. Przeczytaj niepustą listę n liczb całkowitych z wejścia i zwróć ich medianę .

    Jeśli n jest parzyste, użyj mniejszej z dwóch średnich wartości.

    Na przykład mediana [1 4 3 2]wynosi 2.

  4. Odczytaj liczbę całkowitą (dodatnią, ujemną lub 0) lub ciąg znaków w bazie 10 lub unarnej z wejścia i zwróć jej cyfry w negatywie , bez zer wiodących (z wyjątkiem wejścia 0).

    Dane wyjściowe można sformatować w dowolny dogodny sposób (cyfry, tablica, ciąg itp.).

  1. Return pneumonoultramicroscopicsilicovolcanoconiosis.

  2. Sprawdź aktualną datę i w Happy New Year!razie potrzeby wróć zgodnie z kalendarzem gregoriańskim.

  3. Pseudolosowo wybierz 64 unikalne przypisane punkty kodowe z bloku Unicode CJK Unified Ideographs Extension-A (U + 3400 - U + 4DB5) i zwróć ciąg odpowiednich znaków.

    Wszystkie możliwe ciągi powinny mieć takie samo prawdopodobieństwo wybrania.

  4. Odczytaj dwa ciągi znaków ASCII do wydrukowania z wejścia i zwróć prawdziwą wartość wtedy i tylko wtedy, gdy znak pierwszego ciągu tworzy podsekwencję drugiego ciągu.

    Na przykład abc, axbxcnależy powrócić truthy i bac, axbxcpowinien zwrócić falsy.

  1. Odczytaj wielowymiarową, prostokątną tablicę liczb całkowitych i liczbę całkowitą n z wejścia i zwróć zmodyfikowaną tablicę ze wszystkimi liczbami całkowitymi pomnożonymi przez n .

  1. Odczytaj na wejściu nieujemną liczbę całkowitą n i zwróć łańcuch n wagonów kolejowych, jak pokazano poniżej.

    Przykładowe dane wyjściowe dla n = 3 :

     ______   ______   ______ 
    |      | |      | |      |
     ()--() ~ ()--() ~ ()--()
    

    Dane wyjściowe mogą być otoczone dowolną ilością białych znaków, tak długo jak to wygląda w przykładzie.

Wyjaśnienia

  • 0 nie jest ani dodatnie, ani ujemne.

  • Końcowe białe znaki są zawsze dozwolone w danych wyjściowych.

  • Kilka danych wejściowych można odczytać w dowolnej spójnej, wygodnej kolejności.

Zasady

  1. Żadna odpowiedź nie może rozwiązać dwóch różnych zadań w tym samym języku programowania. 1

  2. Do każdego zadania obowiązują standardowe zasady .

    W szczególności można przesyłać programy lub funkcje ze zwykłymi ustawieniami domyślnymi we / wy , ale nie można skorzystać z tych luk .

    Zadanie 5 jest w zasadzie wyzwaniem , więc danych wyjściowych jest nie tylko dozwolone, ale oczekiwane.

  3. Należy wysłać tylko jedną odpowiedź na użytkownika, zawierającą co najwyżej jedno rozwiązanie dla każdego zadania.

    Sformatuj swoją odpowiedź jak w poniższym przykładzie:

    ## Task 1, Python, 42 bytes
    
        <code goes here>
    
    Explanation, I/O, required Python version, etc. go here.
    
    ---
    
    ## Task 7, C, 42 bytes
    
        <code goes here>
    
    Explanation, I/O, required compiler (flags), etc. go here.
    

Punktacja

  1. Za każde rozwiązane zadanie otrzymasz jeden punkt.

    Oznacza to, że nie musisz rozwiązywać wszystkich zadań, aby wziąć udział.

  2. Jeśli Twoje rozwiązanie dla zadania n jest najkrótsze w tym języku programowania, otrzymasz dodatkowy punkt.

  3. Jeśli Twoje rozwiązanie dla zadania n jest najkrótsze ze wszystkich języków programowania, otrzymasz dodatkowy punkt.

  4. Punkty bonusowe zostaną przyznane tylko raz za odpowiednio każdą kombinację język zadania i każde zadanie.

    Jak zwykle, jeśli dwa rozwiązania mają tę samą liczbę bajtów, czas wysłania jest przerywnikiem remisu.

    Jeśli później ktoś Cię przerazi, tracisz punkty bonusowe, które zarabia drugi rozmówca.

  5. Możesz przesłać do golfa, dodać / usunąć języki z odpowiedzi lub zamienić języki używane do dwóch zadań.

    Za każdym razem, gdy ktoś edytuje swoją odpowiedź, wszystkie odpowiedzi są zapisywane ponownie.

  6. Po zmianie języka dla zadania tracisz starszeństwo. 2)

Odpowiedź z najwyższym wynikiem wygrywa. 3)

Tabela liderów dla poszczególnych zadań

<style>body{text-align:left!important}#answer-list{padding:10px;width:290px;float:left}#language-list{padding:10px;width:290px;float:left}table thead{font-weight:700}table td{padding:5px}</style><script src=https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js></script><link rel=stylesheet href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"><div id=answer-list><table class=answer-list><thead><tr><td>Task<td>Author<td>Language<td>Score<tbody id=answers></table></div><table style=display:none><tbody id=answer-template><tr><td>{{TASK}}<td>{{NAME}}<td>{{LANGUAGE}}<td>{{SIZE}}</table><script>function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),e.has_more?getAnswers():process()}})}function process(){answers.forEach(function(e){var s=e.body_markdown.split("\n").filter(function(e){return"#"==e[0]});s.forEach(function(s){var r=s.match(NUMBER_REG)[0],t=(s.match(SIZE_REG)||[0])[0],a=s.match(LANGUAGE_REG)[1],n=e.owner.display_name;entries.push({task:r,user:n,language:a,size:t})})}),entries.sort(function(e,s){var r=e.task-s.task;return r?r:e.size-s.size});for(var e=0;e<entries.length;e++){var s=jQuery("#answer-template").html();s=s.replace("{{TASK}}",entries[e].task).replace("{{NAME}}",entries[e].user).replace("{{LANGUAGE}}",entries[e].language).replace("{{SIZE}}",entries[e].size),s=jQuery(s),jQuery("#answers").append(s)}}var QUESTION_ID=52152,ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",answers=[],page=1;getAnswers();var SIZE_REG=/\d+(?=[^\d&]*(?:&lt;(?:s&gt;[^&]*&lt;\/s&gt;|[^&]+&gt;)[^\d&]*)*$)/,NUMBER_REG=/\d+/,LANGUAGE_REG=/^#*.*?,\s*\[*([^,\]]+)/,entries=[];</script>

Łączona tabela liderów (2015-07-30 20:00 UTC)

User / Task      1 2 3 4 5 6 7 8 9 A   TOTAL   Tie breaker (if any)

DLosc            2 2 3 2 2 2 2 3 2 2      22
Sp3000           2 2 2 2 2 3 2 2 2 2      21
Doorknob         2 2 2 2 2 2 2 2 2 2      20
mathmandan       2 2 2 2 2 2 2 2 2 2      20   Combined byte count.
MickyT           2 2 2 2 2 2 1 2 2 2      19
Alex A.          2 1 2 2 2 2 1 2 2 2      18
Jacob            2 2 2 2 2 1 0 0 0 2      13
alephalpha       2 2 2 0 2 2 0 0 2 0      12
Martin Büttner   2 0 0 2 2 0 0 2 2 2      12   Combined byte count.
kirbyfan64sos    1 2 2 0 2 X 0 2 0 3      12   Per-language wins.
Maltysen         3 0 0 0 3 2 1 X 2 0      11
plannapus        2 2 0 0 2 2 0 2 0 2      10
jimmy23013       0 0 2 3 0 0 3 2 0 0      10   Solved tasks.
Tom              0 3 0 0 2 2 0 X 3 0      10   Combined byte count.
FryAmTheEggman   1 0 2 0 2 0 2 0 2 0       9
Vioz-            1 0 2 2 2 2 0 0 0 0       9   Combined byte count.
Toby Speight     2 0 0 0 2 2 0 0 0 2       8
Ismael Miguel    0 0 0 0 2 2 0 0 0 2       6
Pulga            0 2 2 0 0 0 0 0 0 2       6   Combined byte count.
flawr            2 0 2 0 0 0 0 0 0 0       4     
manatwork        2 0 0 0 0 2 0 0 0 0       4   Combined byte count.
TheNumberOne     1 0 0 0 2 0 0 0 0 0       3

Zadania oznaczone symbolem Xsą obecne, ale nieprawidłowe.

Połączony ranking został skonstruowany ręcznie. Poinformuj mnie, jeśli są jakieś błędy.


1 Języki liczą się jako różne, jeśli nie są różnymi wersjami tego samego języka, więc jest tylko jeden JavaScript, jeden Python i jeden TI-BASIC, ale C, C ++, Octave i MATLAB to cztery różne języki.

2 Jeśli rozwiążesz zadanie n za pomocą języka L w bajtach x , ktoś inny rozwiąże to samo zadanie w tym samym języku z tą samą liczbą bajtów, zmienisz język na M i cofniesz edycję, drugi odpowiadający zachowa punkt bonusowy.

3 Liczba punktów uzyskanych z reguł punktacji 1, 2 i 3 (w tej kolejności), łączna liczba bajtów wszystkich rozwiązanych zadań (im niższa, tym lepsza), a na koniec, suma głosów (im wyższa, tym lepsza) służy jako rozstrzygający.


6
Aby wyjaśnić, to wyzwanie jest ograniczone do tych, którzy znają co najmniej 10 języków? Proszę o ... przyjaciela ...
vijrox

2
@VijayRamamurthy: Nie musisz rozwiązywać wszystkich zadań, aby wziąć udział, więc jeśli rozwiązujesz tylko jedno zadanie, musisz znać tylko jeden język.
Alex A.

2
@JoeZ .: Mieliśmy tutaj 9-dołkowe wyzwania, ale te zdobyły bramki według łącznej liczby bajtów. Nie dlatego, że moja punktacja jest w jakikolwiek sposób związana z tym, jak są liczone dziesięciosiatki, ale chciałem wyjaśnić, że jest to inny rodzaj wyzwania.
Dennis

4
@lolesque: To byłoby standardowe wyzwanie golfowe. Chodzi o to, że do każdego zadania używa się innego języka.
Dennis

3
@NotthatCharles: Zapytałem Gregory'ego, a on powiedział 1 stycznia.
Dennis

Odpowiedzi:


5

Zadanie 1, GolfScript, 8 bajtów

~,{+}*.*

Ten sam pomysł, co odpowiedź Martina na CJam .


Zadanie 2, QBasic, 74 71 bajtów

INPUT a
r=a>1
FOR i=2 TO a-1
r=r*(a MOD i)
NEXT
?r*((a\2AND a)=a\2)

Testowany na QB64 z wyłączonym rozszerzaniem składni. 1 Większość programu sprawdza, czy podana liczba ajest liczbą pierwszą, pobierając amod do każdej liczby 2 <= i< ai mnożąc wyniki. Wynik jest równy r0, jeśli liczba nie jest liczbą pierwszą, a niezerowa w przeciwnym razie. Ostatni wiersz używa bitowego ANDz dzieleniem liczb całkowitych przez 2, aby sprawdzić, czy reprezentacja binarna awszystkich jest jedyna, tj. Ma apostać 2 n -1. Pomnożenie tego przez rdaje 0 (fałsz), jeśli liczba nie jest liczbą pierwszą Mersenne, a inną niezerową (prawdą) wartością w przeciwnym razie. ?jest skrótem do PRINT.

Największa testowana 1.#INFprzeze mnie liczba pierwsza Mersenne, 8191, daje wynik - który wciąż jest prawdą! (Sprawdziłem za pomocą IFoświadczenia, aby się upewnić).

1 To nie zmienia semantyki programu. Jeśli wpiszesz powyższy kod w standardowym systemie DOS QBasic, zostanie on automatycznie sformatowany z dodatkowymi spacjami, ale będzie działał dokładnie tak samo.


Zadanie 3, Pyth, 6 bajtów

ehc2SQ

Czyta listę w stylu Pythona ze standardowego wejścia. Główną magią tutaj jest coperator przeskoku: biorąc pod uwagę liczbę całkowitą i listę, dzieli listę na n kawałków. Więc c2SQprzecina posortowaną listę wejściową na pół. Dogodnie, gdy długość jest nieparzysta, pierwsza połowa jest większa, więc mediana jest zawsze ostatnim elementem pierwszej połowy. To end z hEAD wyników kotlet.


Zadanie 4, CJam, 26 bajtów

ri{_2%z\_0>\-2/_3$+?}h;]W%

Podejrzewam, że można to skrócić.

Algorytm:

  • Przeczytaj liczbę całkowitą.
  • Wykonaj, gdy wartość nie jest równa 0:
    • Weź abs (i% 2). To jest następna cyfra (negabit?).
    • Podziel i przez -2.
    • Iff I był niepozytywny, dodaj abs (i% 2) do wyniku. Ma to na celu skorygowanie przypadku narożnika: 3 przechodzi do -1, ale -3 powinno przejść do 2, a nie 1.
  • Upuść zbędne 0, zbierz stos do tablicy, odwróć i wydrukuj.

Fakt, że jest to pętla „do-while” zajmuje się przypadkiem 0.


Zadanie 5, Bash, 50 bajtów

echo pneumonoultramicroscopicsilicovolcanoconiosis

Nie wiele do wyjaśnienia.


Zadanie 6, Python, 78 bajtów

from datetime import*
d=date.today()
if d.day<2>d.month:print"Happy New Year!"

Wymaga Python 2. Tutaj można ładnie wykorzystać łańcuchowe operatory nierówności w Pythonie.


Zadanie 7, ActionScript, 82 bajty

x=""
while(x.length<64){c=chr(13312+random(6582));if(x.indexOf(c)<0)x+=c}
trace(x)

ActionScript jest członkiem rodziny ECMAScript. Ten kod wymaga ActionScript 2 - znacznie lepszego do gry w golfa, ponieważ mogę używać przestarzałych funkcji, takich jak chrzamiast wersji 3 String.fromCharCode!

Dane wyjściowe są w okienku konsoli:

Zrzut ekranu zadania 7


Zadanie 8, pip, 9 19 bajtów

Rozwiązanie wyrażenia regularnego nie do końca działało, więc oto jedno z operacjami na łańcuchach.

Fcab@>:o&:(b@?c)+1o

Repozytorium Github dla Pip .

Bierze dwa ciągi jako argumenty wiersza poleceń. Kiedy ajest podciągiem, wypisuje dodatnią liczbę całkowitą (prawda); w przeciwnym razie wynikiem jest zero (fałsz), co nie daje wyniku.

Wyjaśnienie:

                     Cmdline args -> a,b; o = 1 (implicit)
Fca                  For each character in a:
           b@?c      Find character's index in b (nil if not found)
          (    )+1   Add 1; all possible indices except nil are now truthy
       o&:           Logical AND with o
   b@>:              Slice b to everything at index o and afterward (Python b=b[o:])
                     (If c wasn't found, b becomes nil, but we don't care at that point)
                  o  Auto-print o

Zadanie 9, Prolog (SWI), 68 bajtów

m(L,N,R):-L=[H|T],m(H,N,I),m(T,N,U),R=[I|U];L=[],R=[];R is L*N.

Prolog zwykle nie gra w golfa kodem, więc jestem bardzo zadowolony z tego rozwiązania.

Definiuje predykat m z parametrami wejściowymi Ldla listy oraz Ndla liczby i parametru wyjściowego R. Definicja mto potrójne rozłączenie:

  • Jeśli Lmoże być ujednolicone z [H|T], jest to lista z co najmniej jednej pozycji w nim. Wywołaj mrekurencyjnie na czubku i na końcu tej listy i ponownie połącz wyniki razem w nową listę, która jest zunifikowana R.
  • Jeśli Lmoże być ujednolicone z []jednoczy Rsię []również.
  • W przeciwnym razie Lprzyjmuje się, że jest liczbą; L*Njest obliczany i przypisywany do R.

Przykład uruchomienia za pomocą swiplUbuntu:

dlosc@dlosc:~/golf$ swipl -qs arrayMult.prolog
?- m([1,2,3],5,R).
R = [5, 10, 15] .

?- m([[3,4],[5,6]],3,R).
R = [[9, 12], [15, 18]] .

?- m([[[1,2],[3,4]],[[5,6],[7,8]]],2,R).
R = [[[2, 4], [6, 8]], [[10, 12], [14, 16]]] .

Zadanie 10, C, 114 112 106 bajtów

#define F;printf("\n");for(i=0;i<c;i++)printf(
i;t(c){F" ______  ")F"|      | ")F" ()--() ~");putchar(8);}

Testowane gccna Ubuntu. Definiuje funkcję, tktóra przyjmuje argument liczby całkowitej. Wykorzystuje trzy forpętle do wyjścia, znacznie skondensowane przez nadużycie makr. Użycie znaku backspace do wymazania końcowego ~powoduje raczej dziwny wzór białych znaków, aleThe output may be surrounded by any amount of whitespace as long as it looks like in the example.

Przykładowy przebieg t(3):

dlosc@dlosc:~/golf$ ./a.out

 ______   ______   ______
|      | |      | |      |
 ()--() ~ ()--() ~ ()--() dlosc@dlosc:~/golf$

Niestety, kod dla zadania 8 identyfikuje się a.cjako podsekwencja abc.
Dennis

@Dennis To jest niefortunne. (Dobry chwyt, dziękuję.) Naprawiono, kosztem 10 bajtów.
DLosc

17

Huzzah, najpierw wykonaj wszystkie zadania! \ o /

Zadanie 1, Perl, 32 bajty

$_=eval join"+",map$_**3,0..$_-1

+1 bajt dla -pflagi. Komentarz: Perl jest dziwny .


Zadanie 2, CJam, 14 bajtów

{_mp\)2mL_i=&}

Mój pierwszy program CJam!


Zadanie 3, GolfScript, 8 bajtów

~$.,(2/=

Ewaluuj dane wejściowe STDIN, sortuj, określaj długość, zmniejszaj, dziel przez dwa, a następnie weź element posortowanej tablicy pod tym indeksem.


Zadanie 4, Python, 77 bajtów

def f(i,d=''):
 while i:i,r=i/-2,i%2;i+=r<0;r+=2*(r<0);d=`r`+d
 return d or 0

Dzięki @ mbomb007 za zgolenie 24 (!) Bajtów i @ Sp3000 za kolejne 11.


Zadanie 5, Java, 66 bajtów

String f(){return"pneumonoultramicroscopicsilicovolcanoconiosis";}

Nudny. Znokautowałem tutaj pełny język, aby później zaoszczędzić miejsce na języki dla golfistów.


Zadanie 6, Bash, 39 bajtów

((`date +%j`<2))&&echo Happy New Year\!

Dzięki @manatwork za nauczenie mnie %j, goląc 10 bajtów.


Zadanie 7, JavaScript, 148 bajtów

a=[];Array(65).join('x').replace(/./g,function(){while(a.push(s=String.fromCharCode(13312+Math.random()*6582))&&a.indexOf(s)==s.length-1);return s})

Wygeneruj ciąg 64 x, a następnie zamień je wszystkie na funkcję wywołania zwrotnego, która zwraca losowy jeden z tych znaków, jeśli nie znajduje się już w tablicy użytych znaków.


Zadanie 8, Rdza, 130 bajtów

fn f(a:String,b:String)->bool{let mut c=b.chars();for x in a.chars(){match c.find(|&y|x==y){Some(_)=>(),None=>return false}};true}

Tak, Rust bardzo źle gra w golfa.


Zadanie 9, Struś, 18 bajtów

{:n;'`\d+`{~n*}X~}

Wersja 0.7.0 . Sprawdza tablicę, zamienia wyrażenie regularne w celu zmiany liczb na ich zwielokrotnione wersje, a następnie ponownie analizuje otrzymany ciąg.


Zadanie 10, Ruby, 58 bajtów

->n{([' ______  '*n,'|      | '*n,' ()--() ~'*n]*$/).chop}

"\n"jest jedną postacią dłuższą niż "{actual newline}", która jest jedną postacią dłuższą niż $/. Dzięki @ MartinBüttner za golenie {nieokreślonych, ale dużej liczby} bajtów za pomocą różnych sztuczek czarnej magii.


Zadanie 6 - $(…)`…`.
manatwork,

@manatwork Dzięki, edytowane.
Klamka

Zastanawiając się ponownie (wchłanianie kofeiny w toku…), dlaczego ten długi format% D? [ `date +%j` = 001 ]Lub nawet ((`date +%j`<2)). (Przy założeniu GNU date, który z pewnością obsługuje format „% j dnia roku (001..366)”.)
manatwork

@manatwork Ooh, bardzo miło. Jeszcze raz dziękuję, dodano odpowiedź.
Klamka

Zadanie 4 można skrócić za pomocą alg ((num + 0xAAAAAAAA) ^ 0xAAAAAAAA).
Jacob

15

Zadanie 1, 3var, 14 13 bajtów

'><k*>#aa/>sp

( Strona wiki Esolang dla 3var )

'                  R = n
 >                 A = n
  <k               B = n-1
    *              R = A*B = n(n-1)
     >             A = n(n-1)
      #aa          B = 2
         /         R = A/B = n(n-1)/2
          >s       A = (n(n-1)/2)^2
            p      Output A

Pobiera dane wejściowe przez punkt kodowy, np. Spacja to 32.

Na szczęście wszystkie operacje, których potrzebujemy do implementacji formuły, n^2 (n-1)^2 / 4to pojedyncze znaki (zmniejszanie, mnożenie i kwadratowanie), ale ustawienie 3 bajtów zajmuje B2 (reset-przyrost-przyrost).


Zadanie 2, Retina, 38 33 bajty

^
1
^(..|.(..+)\2+|(.(..)+)\3*)$
<empty>

( Repozytorium Github dla Retina )

Każda linia przechodzi w osobny plik, ale możesz przetestować powyższe tak, jak w przypadku -sflagi (zamieniając na <empty>nic). Wejście powinno być jednoargumentowe z 1s, np. 1111111Dla 7.

Oto, co robi każde podstawienie wyrażenia regularnego (określone przez parę linii):

  1. Zatrzaśnij 1 z przodu
  2. Wymień cokolwiek formy 2, 1 + compositeani not power of 2z niczym.

To dodaje dodatkową 1liczbę liczb pierwszych Mersenne, podczas gdy każda inna liczba jest zatarta.


Zadanie 3, Rakieta, 71 bajtów

#lang racket
(define(m x)(list-ref(sort x <)(quotient(-(length x)1)2)))

Języki podobne do Lisp są po prostu zbyt dziwne. Przykładowy przebieg:

> (m `(1 3 4 2))
2

Zadanie 4,> <>, 31 bajtów

:?!v:2%:@-02-,
)?~\l1
!;n>l?

( Strona wiki Esolang dla> <> )

Powyższe ma 28 bajtów i wymaga -vflagi w interpreterie Pythona dla kolejnych 3 bajtów , np. Działa podobnie

$ py -3 fish.py negabinary.fish -v -137
10001011

Zaletą>> jest to, że możemy obliczyć cyfry jeden po drugim za pomocą modulo i dzielenia, co daje cyfry w odwrotnej kolejności, idealne do wydrukowania stosu.


Zadanie 5, nawiasy, 1448 1386 bajtów

((()()())(()()()())((()())((()(())()))((()(())(())())((()(()))(()(())())((()(()))((())())((()()(()))((())()()()()()()()())((())()()()()()()()()()()()())))))))((()()())(()()())((()())((()(())()))((()()()())((()(()))(()(())())((())()()()()()()()()()()())))))((()(()))((()()())((())()()()()))((()()())((())()()))((()()()())((())()()()()))((()()())((())()()()()()()()()()))((()()())((())()))((()()())((())()()()))((()()())((())()()))((()()())((())()()()))((()()())((())()()()()()()()()()))((()()())((())))((()()())((())()()()()()()()()))((()()())((())()()()()()()))((()()()())((())))((()()())((())()))((()()()())((())()()()()()()()()))((()()()())((())()()))((()()())((())()()()()()()))((()()())((())()()()))((()()())((())()()()()()()()))((()()()())((())()()))((()()())((())()()()))((()()())((())()()()()))((()()()())((())()()()()()()()()))((()()()())((())()()))((()()())((())()()()()()()()))((()()()())((())()()()()()()()()))((()()())((())))((()()()())((())()()()()()()()()))((()()()())((())()()))((()()())((())()()()))((()()())((())()()()()()()()()()()))((()()())((())()()()))((()()())((())))((()()()())((())()()))((()()()())((())))((()()())((())()()))((()()())((())()()()))((()()()())((())()()))((()()())((())()()()))((()()())((())()()))((()()()())((())()()()()()()()()))((()()())((())()()()))((()()())((())()()()()()()()))((()()()())((())()()()()()()()()))((()()())((())()()()()()()())))

( Repozytorium Github dla nawiasów )

Mam na to odpowiedź CJam, która jest krótsza niż sama struna, ale nie mogę jej użyć, więc pomyślałem, że pójdę inną drogą.

Kod generujący Python 3:

char97 = "((()()())(()()()())((()())((()(())()))((()(())(())())((()(()))(()(())())((()(()))((())())((()()(()))((())()()()()()()()())((())()()()()()()()()()()()())))))))"
char108 = "((()()())(()()())((()())((()(())()))((()()()())((()(()))(()(())())((())()()()()()()()()()()())))))"
open_str = "((()(()))"
close_str = ")"

target = "pneumonoultramicroscopicsilicovolcanoconiosis"
output = [char97, char108, open_str]

for c in target:
    if ord(c) >= 108:
        output.append("((()()())((())%s))"%("()"*(ord(c)-108)))
    else:
        output.append("((()()()())((())%s))"%("()"*(ord(c)-97)))

output.append(close_str)
print("".join(output))

Oto odpowiedni kod podobny do Lisp:

(define f (lambda (n) (char (+ n 97))))
(define g (lambda (n) (f (+ n 11))))

(+
   (g 4)  // p
   (g 2)  // n
   (f 4)  // e
   ...
)

Widocznie to było w porządku, aby zastąpić definenazywając gjak ()(), co zaoszczędziło dużo bajtów.


Zadanie 6, CJam, 26 bajtów

XY]et1>>"Happy New Year!"*

Sprawdza, czy [month day]część lokalnej tablicy czasu jest mniejsza niż [1, 2].


Zadanie 7, Python, 73 bajty

from random import*
print(*map(chr,sample(range(13312,19894),64)),sep="")

Prosta implementacja Pythona 3.


Zadanie 8, Preludium, 46 41 bajtów

?(?)#(#)?(v-(#)?)10)!
      ^      1 # (0

( Strona wiki Esolang dla Preludium )

Myślę, że to działa - prawdopodobnie nadal można grać w golfa, ale po raz pierwszy gram w golfa w Preludium. Format wejściowy to <needle>NUL<haystack>, gdzie NULjest 0x00. Działa to najlepiej z NUMERIC_OUTPUT = Trueinterpreterem Pythona, ponieważ spowoduje to, że będzie on generowany 1lub 0odpowiednio.

Wybrałem Preludium, ponieważ istnieją dwie właściwości, które sprawiają, że jest bardzo miły dla tego zadania:

  • Jest oparty na stosie, więc możesz najpierw przeczytać igłę, a następnie przetworzyć stóg siana po jednym znaku na raz i
  • Stos Preludium ma nieskończoną liczbę zer na dole, więc nie musisz zajmować się przypadkiem, w którym w igle zabrakło znaków.

Byłoby jeszcze lepiej, gdyby Prelude miał operatora NOT.

Oto podział:

?(?)#    Read input up to the NUL, discarding the NUL afterwards

(#)      Move the needle to the second voice, effectively reversing the stack
 ^

?(...?)  Read haystack

  v-     Compare top needle char with haystack char by subtraction

  (#)    If equal, pop the needle char
   1 #

10)!     Output 1 if the top needle char is 0 (bottom of stack), 0 otherwise
(0

(-5 bajtów dzięki @ MartinBüttner)


Zadanie 9, Mathematica, 4 bajty

#2#&

Coś podobnego 2 {{0, 1}, {1, 0}}to pośrednio mnożenie w Mathematica, więc po prostu umieszcza się argumenty obok siebie.

Jak zauważyli @MartinButtner i @alephalpha , 1##&to kolejna 4-bajtowa odpowiedź. Zobacz pierwsze wyjaśnienie.


Zadanie 10, Szyna, 246 237 bajtów

$'main'
 0/aima19-@
@------e<
         -(!!)()[ ][ ______ ]{f}[\n\]o()[ ][|      |]{f}[\n\]o()[~][ ()--() ]{f}#
$'f'                 #           #
 -(!x!)(!y!)(!!)()0g<  -(x)o()1g<  -(y)o()1s(y)(x){f}#
                     -/          -/

( Strona wiki Esolang dla Rail )

Nie mogłem przegapić okazji do wykonania zadania związanego z pociągiem w Rail :) Biała przestrzeń wygląda całkiem golfowo, ale z rozgałęzieniem zajmującym trzy linie zajmie trochę pracy.

Wejście jest liczbą całkowitą przez STDIN, ale musi istnieć EOF. Lewa górna część

 0/aima19-@
@------e<

jest pętlą atoi, która konwertuje dane wejściowe na liczbę całkowitą, a nie EOF (sprawdzane przez einstrukcję).

Funkcja fw ostatnich trzech wierszach pobiera x, y, ni wyświetla x nczasy łańcuchów rozdzielone przez y. Funkcja jest rekurencyjna, z każdym nzmniejszaniem o jeden, aż do zera. fjest wywoływany trzy razy, dostarczając różne ciągi dla każdego wiersza. Dziwnie, Rail pozwala, aby nazwy zmiennych były puste, co oszczędza kilka bajtów.

Niestety większość bajtów pochodzi z tego (!x!), który wyskakuje na górze stosu i przypisuje go do zmiennej x, i (x)który przesuwa xsię na stos. Jest to konieczne, ponieważ w Rail nie ma zduplikowanego operatora, więc (!x!)(x)(x)jest to jedyny sposób na skopiowanie górnej części stosu.


Gdyby zadanie 2 znajdowało się w rs, zapisałbyś 2 bajty, a wzięcie liczb zamiast jedności kosztowałoby tylko 14 bajtów. ;)
kirbyfan64sos

Kiedy zobaczyłem rakietę, pomyślałem, że lubisz nawiasy; ale nawias ...
bunyaCloven

13

Zadanie 1, CJam, 7 bajtów

q~,:+_*

Chciałem po prostu uzyskać do tego (prawdopodobnie) optymalne rozwiązanie CJam. Wykorzystuje to fakt, że suma pierwszych n kostek jest kwadratem n- tej liczby trójkątnej, która sama jest sumą pierwszych n liczb całkowitych.

Sprawdź to tutaj.


Zadanie 4, Rozszczepienie, 173 88 78 69 68 bajtów

Repozytorium GitHub dla Fission.

 /@\O/S@+>\
^{ }[<X/ @/;
,\?/@\J^X\
'M~\$ $
UK/W%@]  /
D
?\{\/
0'A Y

Mój drugi dość skomplikowany program rozszczepienia. :)

Format wejściowy jest nieco dziwny. Aby wesprzeć wejść negatywne, oczekuje się, że pierwszy znak, aby być +albo -wskazać znak. Wartość bajtu drugiego znaku jest wówczas wielkością wejściową (ponieważ rozszczepienie nie może natywnie odczytać liczb całkowitych dziesiętnych). Więc jeśli chcesz 111, przekaż to +ona STDIN. A jeśli chcesz -56, zdasz -8. Zamiast +i -możesz użyć dowolnego znaku o niższym lub wyższym kodzie znaków. Może to być pomocne w przekazaniu czegoś takiego -n(co możesz echopotraktować jako argument) jak np 0n.

Spójrzmy, jak możemy znaleźć reprezentację ujemną liczby dodatniej. Chcemy obliczyć liczbę od najmniejszego do najbardziej znaczącego bitu (wepchniemy te bity na stos i wydrukujemy je wszystkie na końcu, aby uzyskać je we właściwej kolejności). Pierwsza cyfra jest wtedy tylko parzystością liczby, a my dzielimy liczbę całkowitą przez 2, aby kontynuować przetwarzanie. Następna cyfra jest teraz ujemna (o wartości -2) - należy jednak zauważyć, że ten bit zostanie ustawiony za każdym razem, gdy 2-bit zostanie ustawiony na normalną liczbę binarną. Jedyną różnicą jest to, że musimy przeciwdziałać -2 dodatnimi cyframi o wyższej wartości. Więc to, co robimy, to:

  • Ponownie określamy parzystość - jest to kolejny negabit - i dzielimy przez 2 jak poprzednio.
  • Jeśli ta cyfra to a 1, zwiększamy pozostałą liczbę o 1, aby przeciwdziałać bitowi ujemnemu (różnica między negabitem a bitem jest jednokrotnie wartością następnego, bardziej znaczącego bitu).

Wielkie uproszczenie kodu wynika z zauważenia, że ​​warunkowe dodanie jednego tutaj jest równoważne zaokrągleniu liczby w górę podczas dzielenia liczb całkowitych (jeśli odrzucony bit miał wartość 1, zwiększamy wynik podzielony przez liczby całkowite o 1).

Następnie kolejny bit jest znowu tylko wartością dodatnią, abyśmy mogli go ustalić normalnie. Oznacza to, że chcemy pętli, która oblicza dwa bity naraz, na przemian między zaokrąglaniem w górę a zaokrąglaniem w dół dla pozostałej liczby, ale chcemy wprowadzić pętlę na środku, więc zaczynamy od zaokrąglania w dół.

Jak poradzić sobie z ujemnymi liczbami całkowitymi? Problem polega na tym, że rozszczepienie nie może tak naprawdę wykonywać arbitralnej arytmetyki na ujemnych liczbach całkowitych, ponieważ masy są zawsze nieujemne. Trzeba więc zrobić coś naprawdę skomplikowanego, na przykład pracować z wielkością i śledzić znak gdzie indziej. Jednak ujemną reprezentację liczby ujemnej można obliczyć na podstawie powiązanej liczby dodatniej:

Jeśli n jest ujemne, oblicz ujemną reprezentację n / 2 (zaokrągloną w górę ) i dołącz parzystość n .

To jest dokładnie pierwszy krok w naszej dwubitowej pętli. Wszystko, co musimy zrobić, to uruchomić pętlę w innym punkcie, jeśli znak jest ujemny.

Większość oszczędności z 173 oryginalnych bajtów pochodziła z tych spostrzeżeń, które pozwoliły mi skompresować trzy kontrole parzystości i pętlę dwusekcyjną w jedną pętlę z pojedynczym sprawdzaniem parzystości.

Ten post będzie zbyt długi, jeśli szczegółowo wyjaśnię cały kod, ale wskażę kilka sekcji, aby podać przybliżony układ przepływu sterowania, i możesz ustalić szczegóły, korzystając z referencji Fission.

 /@\
^{ }[
,\?/
'
U
D
?

Zaczynając od D, wczytuje to znak do energii, a wielkość do masy atomu, który kończy się w [(idzie w prawo). Ten bit znaku będzie się zmieniał po każdym przejściu przez kontrolę parzystości i określi, czy zachowamy zaokrągloną w dół czy zaokrągloną w górę połowę wejścia pętli.

     /S@+>\
    [<X/ @/
 \  @\J^X\
 M  $ $
 K  %@]  /

Jest to pętla, która oblicza poszczególne bity i podaje prawidłową połowę do następnej iteracji. SI Jsą wykorzystywane do tworzenia kopii prawej połowie przeliczona po kawałku podpisu, Xa nie kopiowanie. W >prawym górnym rogu obliczany jest rzeczywisty bit, który jest następnie wysyłany do stosu w Kcelu późniejszego pobrania. Myślę, że układ prawego górnego rogu jest całkiem fajny i na pewno warto go szczegółowo zbadać, jeśli interesuje Cię rozszczepienie.

%Jest przełącznik, który zasila numer z powrotem do pętli tak długo jak będzie ona większa niż 0.

    O


 M~\
 K/W%

 \{\/
0'A Y

Gdy liczba osiągnie 0, zamiast tego jest odbijana. To uruchamia kolejną pętlę, która pobiera bity ze stosu, dodaje je do kodu znakowego 0i drukuje za pomocą O. Program kończy się, gdy stos jest pusty, ponieważ atom kontrolny zostanie ostatecznie zepchnięty na stos (a potem nie będzie już więcej poruszających się atomów).


Zadanie 5, Preludium, 219 179 96 bajtów

Strona Esolangs dla Preludium.

Interpretator fragmentów stosu dla Preludium.

29+129+716705-7607-05-4759+705-14129+05-18705-29+719+05-1507-19+39+449+767549+03-68(67+^+^+^++!)

Zaczęło się od standardowego, ręcznie wykonanego programu Prelude z trzema głosami. Po krótkiej rozmowie ze Sp3000 postanowiłem wypróbować jeden głos. Okazało się, że działało to całkiem dobrze, ponieważ o wiele łatwiej jest ponownie używać starszych liter. Potem Dennis dał mi kilka wskazówek i znalazłem aktualną wersję: chodzi o to, aby przesunąć wszystkie przesunięcia z litery hna stos jednego głosu w odwrotnej kolejności, a następnie wydrukować je pojedynczo w pętli. hjest wybierany, ponieważ nie ma go hw łańcuchu (co jest ważne - w przeciwnym razie 0przesunięcie kończy pętlę) i ponieważ minimalizuje kodowanie przesunięć w odniesieniu do przesunięć dwucyfrowych i ujemnych.

Kodowanie offsetowe zostało wygenerowane za pomocą tego skryptu CJam .


Zadanie 8, Mathematica, 28 bajtów

LongestCommonSequence@##==#&

Yay dla wbudowanych. (Nazewnictwo Mathematiki jest tutaj trochę dziwne ... LongestCommonSubsequenceznajduje najdłuższy wspólny podciąg, a jednocześnie LongestCommonSequencenajdłuższy wspólny podciąg ).


Zadanie 9, J, 1 bajt

*

To samo co odpowiedzi APL i K, ale wydaje się, że nikt jeszcze nie wziął J.


Zadanie 10, Retina, 67 60 bajtów

Repozytorium GitHub dla Retina.

(.*).
 ______  $1<LF>|      | $1<LF> ()--() ~$1
+`(.{9})1
$1$1
~$
<empty>

Każda linia przechodzi w osobny plik i <LF>powinna zostać zastąpiona znakiem nowej linii i <empty>powinna być pustym plikiem. Możesz również umieścić to wszystko w jednym pliku i użyć -sopcji, ale nie pozwala to na osadzanie znaków nowego wiersza zamiast <LF>jeszcze. Możesz to naśladować, robiąc coś takiego

echo -n "111" | ./Retina -s train.ret | ./Retina -e "<LF>" -e "\n"

Jak pokazuje powyższy przykład, oczekuje się, że dane wejściowe będą jednostkowe. Idea kodu polega na utworzeniu trzech kopii pojedynczego wejścia (minus 1), każda z kopią odpowiedniego wiersza. Następnie wielokrotnie powielamy ostatnie dziewięć znaków przed a, 1aż wszystkie 1s znikną, w ten sposób powtarzając wiersze, jeśli to konieczne. Na koniec usuwamy zewnętrzny ślad końcowy ~.


10

Eh, chyba zacznę od pary. Pierwszy raz w golfa.

Zadanie 1, Python, 38 21 bajtów

lambda n:(n*n-n)**2/4

Zsumuj listę wszystkich kostek do x. Zmieniono wyrażenie dzięki xnor

Zadanie 2, TI-Basic 89, 244 bajty

Func
If iPart(log(x+1)/log(2))=log(x+1)/log(2) Then
 Return log(x+1)/log(2)
Else
 Return 0
EndIf
EndFunc
Func
If isPrime(x)=false
 Return 0
If ipart(log(x+1)/log(2))=log(log(x+1)/log(2)) Then
 Return log(x+1)/log(2)
Else
 Return 0
EndIf
EndFunc

Nie jestem w 100% pewien tego, przetestuje się, gdy znajdę nowe baterie do mojego kalkulatora. isPrime jest wbudowany, ipart jest częścią całkowitą (2.3 -> 2)

Zadanie 3, Perl, 45 34 bajtów

@n=sort{$a-$b}@ARGV;print$n[$#n/2]

plik perl 1 2 3 4 -> 2. Zaoszczędziłem kilka bajtów dzięki @nutki. Wydrukowano zamiast zapisywać w zmiennej, a następnie drukować zmienną.

Zadanie 4, Ruby, 43 40 bajtów

x=2863311530
p ((gets.to_i+x)^x).to_s(2)

Przynajmniej działa w wersji 1.9, nie wiem o wersji 1.8. W systemie binarnym „10” * 16 (lub 2863311530) plus liczba, xor z tym 10101010 ... jest nega-binarnym. Zwraca ciąg znaków z cudzysłowami (3 -> „111” zamiast 3 -> 111). Nie mogę znaleźć matematyki do pisania x mniejszą liczbą znaków.

Zadanie 5, Malbolge, 682 354 bajty

D'``_]>n<|49ixTfR@sbq<(^J\ljY!DVf#/yb`vu)(xwpunsrk1Rngfkd*hgfe^]#a`BA]\[TxRQVOTSLpJOHlL.DhHA@d>C<`#?>7<54X8165.R2r0/(L,%k)"F&}${zy?`_uts9Zvo5slkji/glkdcb(fed]b[!B^WVUyYXQ9UNrLKPIHl/.JCBGFE>bBA@"!7[;{z276/.R2r0)(-&J$j('~D${"y?w_utyxq7Xtmlkji/gf,MLbgf_dc\"`BA]\UyYXWP8NMLpPIHGLEiIHGF(>C<A@9]7<;:3W7w5.-210/(L,%k#('~}C{"y?`_uts9wpXn4rkpoh.lNMiha'eGF\[`_^W{h

Przetestuj online tutaj. Pomyśl, że jest tak krótki, jak to możliwe. Grałem w golfa tyle, ile mogłem. Zapisano 300 bajtów, więc whee?

Zadanie 6, bash, 62 50 40 bajtów

[ `date +%j`=1 ]&&echo 'Happy New Year!'

Znaleziono około% j z innego postu.

Zadanie 10, Befunge-98, 121 bajtów

>&:>1-:" ____"v
   |,k8: '"__"<
   >a,$:>1-v
      > |
>' 8k,^ #
^|':k4 '|':<
v ',*25$<
>,:1-: ")(--)("v
^," ~"_@#,k6" "<

Zmieniono na befunge-98. Stary był Befunge-93, 227 157 147 bajtów. Użyto grzybów, napisanych w Haskell do testów. Użyłem „wykonaj wiele razy k” i dodając pojedyncze znaki do stosu za pomocą „. Mam wrażenie, że można grać w golfa do 110 lub mniej, ale spędziłem już na tym zbyt dużo czasu ...


@Dennis, ponieważ nie mogę zapytać w głównym poście, zapytam tutaj. Czy wejście oddzielone spacją jest odpowiednie dla zadania 3? Nie będzie w [].
Jacob

Cokolwiek odpowiada Twoim potrzebom.
Dennis

1
Można skrócić sumę sześcianów ze wzoru jakolambda n:(n*n-n)**2/4
XNOR

Możesz użyć 0=fPart(expression) rather than iPart (wyrażenie) = wyrażenie` w swojej odpowiedzi TI-89 BASIC.
lirtosiast

1
Myślę, że ten argument nie działa dobrze, gdy mówimy o czymś takim jak Python 2/3. Na przykład, `n` działa lepiej niż str (n) w 2, ale nie działa w 3. W tej chwili nie mogę wymyślić innych przykładów, bardziej martwię się golfem, który bardziej odpowiada na pytania: p
Jacob

9

Po pierwsze: zadanie 6 technicznie NIE ma znaczenia; Przesłałem unc niecałą godzinę temu. Jednak prawie przesłałem go dziś rano, ale postanowiłem najpierw napisać zestaw testowy. Idiota.

W każdym razie, oto idzie!

Zauważ, że większość unc nie jest celowo odwrócona, więc tak &&naprawdę oznacza ||i tak, dlatego niektóre operacje wyglądają dziwnie (np. Przy użyciu -do obliczenia kostki).

Zadanie 1, Haskell, 21 bajtów

f n=sum$map(^3)[0..n]

Zadanie 2, Hy, 135 bajtów

(import math)(fn[n](and(if(and(not(% n 2))(> n 2))false(all(genexpr(% n i)[i(->> n(math.sqrt)int inc(range 3))])))(->> n dec(& n)not)))

Zadanie 3, Dart, 37 bajtów

Moja pierwsza funkcja Dart!

f(l){l.sort();return l[l.length~/2];}

Zadanie 5, INTERCAL, 1047 bajtów

DO ,1 <- #46
DO ,1SUB#1 <- #242
DO ,1SUB#2 <- #152
DO ,1SUB#3 <- #208
PLEASE DO ,1SUB#4 <- #248
DO ,1SUB#5 <- #248
DO ,1SUB#6 <- #192
PLEASE DO ,1SUB#7 <- #128
DO ,1SUB#8 <- #128
DO ,1SUB#9 <- #72
PLEASE DO ,1SUB#10 <- #120
DO ,1SUB#11 <- #8
DO ,1SUB#12 <- #224
PLEASE DO ,1SUB#13 <- #200
DO ,1SUB#14 <- #208
DO ,1SUB#15 <- #32
PLEASE DO ,1SUB#16 <- #208
DO ,1SUB#17 <- #120
DO ,1SUB#18 <- #88
PLEASE DO ,1SUB#19 <- #40
DO ,1SUB#20 <- #8
DO ,1SUB#21 <- #208
PLEASE DO ,1SUB#22 <- #232
DO ,1SUB#23 <- #120
DO ,1SUB#24 <- #208
PLEASE DO ,1SUB#25 <- #248
DO ,1SUB#26 <- #56
DO ,1SUB#27 <- #96
PLEASE DO ,1SUB#28 <- #160
DO ,1SUB#29 <- #208
DO ,1SUB#30 <- #208
PLEASE DO ,1SUB#31 <- #136
DO ,1SUB#32 <- #120
DO ,1SUB#33 <- #192
PLEASE DO ,1SUB#34 <- #112
DO ,1SUB#35 <- #64
DO ,1SUB#36 <- #16
PLEASE DO ,1SUB#37 <- #128
DO ,1SUB#38 <- #48
DO ,1SUB#39 <- #208
PLEASE DO ,1SUB#40 <- #128
DO ,1SUB#41 <- #224
DO ,1SUB#42 <- #160
PLEASE DO ,1SUB#43 <- #40
DO ,1SUB#44 <- #56
DO ,1SUB#45 <- #200
PLEASE DO ,1SUB#46 <- #126
PLEASE DO READ OUT ,1
DO GIVE UP

Zadanie 6, unc, 157 bajtów

!include>=fgQVb%U<=
!include>=gVZR%U<=
false lRNe[]<<gVZR_g t:=gVZR[5]:volatile gZ m:=-YbPNYgVZR[&t]:for[#m%gZ_Zba||m%gZ_ZQNl!=6]chgf[L'uNccl ARj LRNe#']:>>

Zadanie 8, rs, 42 bajty

#
+#(.)(.*) .*?\1/\1#\2 
.*# .*$/1
[^1]+/0

Demo na żywo.

Zadanie 10, Pyth, 46 bajtów

jb(j*d2m+\ *\_6Qjdm"|      |"Qj\~m" ()--() "Q)

Demo na żywo.


@Dennis Oops! Naprawiony!
kirbyfan64sos

1
Cóż, nie wiem, ale jestem pewien, że nie potrzebujesz jednego z nich !include. Jednak nie do końca pewny, który z nich.
Dennis

@Dennis Pierwszy to jest stdio.h, drugi to time.h. Potrzebuję obu.
kirbyfan64sos

Do czego uncsłuży kompilacja kodu C? GCC będzie działać bez niego dobrze stdio.h. Nie jestem pewien time.h.
Dennis

@Dennis unc nie ma ustawionego kompilatora. Po prostu wyświetla kod C; Muszę to skompilować sam. Ma to jednak sens; Sprawdzę to później.
kirbyfan64sos

8

Zadanie 1, APL, 7 bajtów

+/3*⍨⍳⎕

Możesz wypróbować online za pomocą ngn / apl, chociaż będzie działać z każdą implementacją APL, która domyślnie ma zerowy początek indeksu.

Kostkuje każdą liczbę całkowitą od 0 do input ( ⍳⎕) -1 przez zamianę ( ) argumentów do operatora mocy ( *). Powstały wektor jest redukowany przez sumowanie ( +/) i zwracany jest skalar.


Zadanie 2, Julia, 42 bajty

n->(isprime(n)&&int(log2(n+1))==log2(n+1))

Tworzy to anonimową funkcję, która przyjmuje liczbę całkowitą jako dane wejściowe i zwraca wartość logiczną. Aby to nazwać, nadaj mu nazwę, np f=n->....

Najpierw używamy wbudowanej funkcji Julii, isprimeaby sprawdzić, czy njest liczbą pierwszą. Jeśli tak, sprawdzamy, czy log2(n+1)jest to liczba całkowita. Jeśli tak, nmoże być napisane jak 2^k-1dla niektórych k, a zatem njest liczbą pierwszą Mersenne.


Zadanie 3, ELI , 19 bajtów

{f:x[<x][~.0.5*#x]}

To tworzy monadę, fktóra zwraca medianę wektora wejściowego.

Niegolfowane + wyjaśnienie:

{f:         // Define a function f
 x[<x]      // Sort the input vector
 [          // Select the element at index...
 ~.0.5*#x   // ceiling of 0.5 * length(input)
]}

Przykłady:

    f 1 2 3 4
2
    f ?.!20   // Apply f to 20 random integers in 1..20
4

Zadanie 4, oktawa, 39 bajtów

@(n,x=2863311530)dec2bin(bitxor(n+x,x))

Spowoduje to utworzenie uchwytu funkcji, który przyjmuje liczbę całkowitą jako dane wejściowe i zwraca powiązany łańcuch negabinary. Aby to nazwać, nadaj mu nazwę, np. f=@...I uruchom feval(f, <input>).

Możesz spróbować online .


Zadanie 5, CJam, 47 bajtów

"pneumonoultramicroscopicsilicovolcanoconiosis"

Ciąg jest po prostu drukowany do STDOUT. Możesz spróbować online, jeśli masz na to ochotę.


Zadanie 6, Windows Batch, 46 bajtów

if "%date:~4,5%"=="01/01" echo Happy New Year!

Zmienna %date%zawiera bieżącą datę w formularzu Thu 06/25/2015. Możemy wybrać miesiąc i dzień przez coraz podciąg długości 5 po omijając pierwsze 4 znaki: %date:~4,5%. Stamtąd sprawdzamy, czy to 1 stycznia, i mówimy Szczęśliwego Nowego Roku, jeśli tak jest.


Zadanie 7, Pyth, 26 bajtów

=Gr13312 19895FNU64pC.(.SG

Najpierw przypisujemy Gzakres od 13312 do 19894 włącznie. Następnie zapętlamy 64 razy i przy każdej iteracji tasujemy G( .SG), usuwamy i zwracamy ostatni element ( .() oraz wypisujemy jego reprezentację znaków ( pC).

Możesz spróbować online .


Zadanie 8, Ruby, 36 bajtów

def f(a,b)!b.tr("^"+a,"")[a].nil?end

Definiuje funkcję, fktóra akceptuje dwa ciągi ai b, gdzie aznajduje się ciąg do znalezienia b.

Wszystko oprócz wprowadzonych znaków ajest usuwane z bużycia .tr()i sprawdzamy, czy wynik zawiera adokładnie użycie []. Będzie to powrót niljeśli ciąg nie zostanie znaleziony, dzięki czemu możemy uzyskać wartość logiczną korzystając !z .nil?.


Zadanie 9, R, 16 bajtów

function(x,n)n*x

Tworzy to nienazwany obiekt funkcji, który akceptuje dowolny rodzaj tablicy lub macierzy xoraz liczbę całkowitą ni mnoży każdy element xprzez n. Jeśli chcesz, możesz spróbować online .


Zadanie 10, Python 3, 92 bajty

n=int(input())
l="\n"
w=" ()--() "
print(" ______  "*n+l+"|      | "*n+l+(w+"~")*(n-1)+w)

Całkiem proste. Możesz spróbować online .


Odpowiedź APL nie ma dość 7 bajtów, ponieważ w wyższych zakresach znajdują się trzy znaki Unicode.
Tom

6
@Tom: Każda odpowiedź może wybrać najwygodniejsze kodowanie. Na stronie kodowej APL jeden znak to jeden bajt.
Dennis

Możesz spróbować online, jeśli masz na to ochotę :-D
Luis Mendo

7

Zadanie 1,> <>, 10 + 3 = 13 bajtów

::*-:*4,n;

Uruchom to, używając oficjalnego interpretera-v języka Python, używając flagi (koszt 3 bajtów). Kwadrat jest równy ilości (n - n*n)i dzielony przez 4, co oczywiście jest równoważne kwadratowi (n*n - n)i dzieleniu przez 4.

Zadanie 2, GAP, 63 62 bajty

b:=function(m)return[2]=AsSet(Factors(m+1))and IsPrime(m);end;

(Zaoszczędził miejsce, pisząc równość na odwrót.)

Zadanie 3, R, 43 39 bajtów

f=function(v)sort(v,d=T)[length(v)%/%2]

Dzięki Plannapus za miłą poprawę!

Zadanie 4, Piet, 155 135 115 5 * 19 = 95 kodów

wprowadź opis zdjęcia tutaj

Przetestuj za pomocą tego internetowego tłumacza o rozmiarze kodu 13. Lub użyj preferowanego tłumacza - daj mi znać, jeśli masz taki, który Ci się podoba!

Uczynienie go wyjściowym 0zamiast pustego ciągu wejściowego 0było niewygodne. Użyłem „wtedy-wtedy” na początku, aby zająć się tą sprawą; następnie pętla while, aby obliczyć cyfry w niezerowym przypadku, i wreszcie kolejna pętla while na końcu, aby wyprowadzić cyfry ze stosu.

Wielkie dzięki dla Sp3000 za bardzo pomocne komentarze, które pomogły mi zapisać niektóre kody!

Zadanie 5, Lua, 52 bajty

print"pneumonoultramicroscopicsilicovolcanoconiosis"

Możesz spróbować tutaj .

Zadanie 6, LaTeX, 157 139 136 127 128 bajtów

\documentclass{book}\begin{document}\count1=\day\multiply\count1 by\month
\ifcase\count1\or Happy New Year!\else~\fi\end{document}

Jeśli jest iloczyn dnia i miesiąca 1, wydrukuj wiadomość; inaczej nic. (Nowy Rok jest szczególnie wygodne dla tego projektu: od wyjścia szukamy jest 1, musimy tylko jedno orStwierdzenia. nTH orzachowanie Instrukcja Określa dla wartości n).

Uwaga: w mojej poprzedniej wersji brakowało powrotu wiersza, co było błędem. (Próbowałem przetestować tę funkcję, ale jej prawidłowe przetestowanie może trochę potrwać ...)

Moja oryginalna wersja korzystała z calcpakietu, co było znacznie wygodniejsze niż moja obecna wersja. Coś, o czym należy pamiętać podczas „prawdziwego życia”!

Zadanie 7, Ruby, 62 bajty

for r in Array(13312..19893).sample(64)
puts [r].pack('U*')end

Zadanie 8, JavaScript, 78 bajtów

h=function(l,m){u=1+m.indexOf(l[0]);return(!l||u&&h(l.substr(1),m.substr(u)))}

Rozwiązanie rekurencyjne, sprawdzające, czy ljest to podciąg m. Jeśli ljest pusty, to !lwyniki truesą kończone, a funkcja kończy się. (W tym przypadku l[0]jest niezdefiniowany, ale JavaScript jest z tym OK.) W przeciwnym razie szuka pierwszej instancji l[0]w m. Jeśli nie znajdziesz, a następnie m.indexOf(l[0])skutkuje -1i tak uskutkuje 0i wygaśnięciem funkcji.

W przeciwnym razie usuwa pierwszy wpis li pierwsze uwpisy mi kontynuuje sprawdzanie.

Zadanie 9, Python, 72 60 bajtów

def i(a,n):
 try:return[i(c,n)for c in a]
 except:return n*a

Przechodzi do „najniższego poziomu”, gdzie anie ma już listy, tylko liczba całkowita, a następnie dokonuje mnożenia.

Ogromne podziękowania dla Dennisa za uratowanie mi 12 bajtów!

Zadanie 10, Groovy, 81 bajtów

def j(n){(' ------  '*n+'\n'+'|      | '*n+'\n'+' ()--() ~'*n).substring(0,27*n)}

Wypróbuj tutaj . Początkowo próbowałem zaimplementować coś w rodzaju .join()metody Pythona dla ciągów, która łączy ciągi z określonym „ciągiem łączącym” (jak powiązania między wagonami kolejowymi). Ale to kosztowało o wiele więcej niż zaoszczędzono.

Mam nadzieję, że nie przestrzegam żadnych konwencji dotyczących akceptowalnych odpowiedzi w tych różnych językach, ale proszę daj mi znać, jeśli tak.

Dziękuję Dennisowi za fantastyczne wyzwanie!


except:return n*azapisuje kilka bajtów dla zadania 9. W przypadku zadania 1 liczę -vflagę jako jeden bajt.
Dennis

@Dennis Zobacz ten meta post . Chociaż w tym poście można prawdopodobnie zastąpić -vflagę i(chociaż myślę, że byłoby dobrze, gdyby wspomniano obie wersje, aby ułatwić testowanie).
Sp3000,

@Dennis, bardzo dziękuję za inteligentną poprawę!
matmandan

1
3 bajty jest poprawna przez postu powyżej (meta kosmicznej -, v). Chodziło mi o to, że masz opcję wprowadzania danych wejściowych jako punktu kodowego za pomocą iinstrukcji.
Sp3000

1
btw, dla # 4, ujemne modulo nie jest takie dziwne - po prostu różni się w zależności od języka (np. Java robi to z pamięci). Jednym ze sposobów na wyprowadzenie całego stosu może być trzymanie czegoś na dole stosu, o którym wiesz, że nie będzie go na wyjściu, i drukowanie znaków, dopóki nie jest to specjalny znak. Jest też PietCreator .
Sp3000,

6

Zadanie 1, Pyth, 5 bajtów

s^R3Q

Pobiera numer ze standardowego wejścia. Dzięki @Jakube za wskazanie na bezużyteczne U.

Zadanie 6, javascript, 56 bajtów

if(Date().slice(4,10)=="Jan 01")alert("Happy New Year!")

Zadanie 7, CJam, 16 bajtów

6581,mr64<'㐀f+

Generuje zasięg, tasuje, wybiera pierwsze 64 i mapuje dodanie wartości początkowej i konwersję do postaci. 14 znaków, 16 bajtów.

Zadanie 8, oktawa, 23 bajty

@(x,y)intersect(x,y)==x

Definiuje funkcję anonimową.

Zadanie 5, PHP, 45 bajtów

pneumonoultramicroscopicsilicovolcanoconiosis

Bez kompresji, po prostu drukuje.

Zadanie 9, bajt APL 1

 ×

To samo co odpowiedź K.


@Dennis Też tego nie wiem - po prostu przejrzałem Google'a na przeczucie i zestawiłem tę odpowiedź bez testowania :). Spróbuję teraz przetestować na emulatorze.
Maltysen

@Dennis oh masz rację, to uśrednia środkową 2, biorąc to w dół.
Maltysen

1
Co robisz z tą przestrzenią .slice(4, 10)?
LegionMammal978

@Dennis derrrp. Przepraszam.
Maltysen

1
Jest tylko jeden miesiąc, który kończy się na „an”, więc możesz zrezygnować z J podczas testowania. (Byłoby to również znacznie krótsze /an 01/.test(Date()).)
NinjaBearMonkey

6

Zadanie 1, R, 21 19 bajtów

sum((1:scan()-1)^3)

Dość bezpośredni. Dane wejściowe ze STDIN.

Zadanie 2, Perl, 40 66 bajtów

$a=log(<>+1)/log(2)+1;print$a==int($a)&&(1x$a)!~/^1?$|^(11+?)\1+$/

Dodano sprawdzanie liczb pierwszych (regex sprawdzania liczb pierwszych Abigails)

Zadanie 3, PARI / GP, 24 22 bajty

m(v)=vecsort(v)[#v\2];

Po raz pierwszy tego dotknąłem. Może trzeba się czegoś więcej nauczyć.

Zadanie 4, T-SQL, 235 bajtów

CREATE FUNCTION D(@ INT)RETURNS TABLE RETURN WITH R AS(SELECT @/-2+(IIF(@%-2<0,1,0))D,CAST(ABS(@%-2) AS VARCHAR(MAX))M UNION ALL SELECT D/-2+(IIF(D%-2<0,1,0)),CAST(ABS(D%-2)AS VARCHAR(MAX))+M FROM R WHERE D<>0)SELECT M FROM R WHERE D=0

Funkcja tabeli wbudowanej za pomocą rekurencyjnego CTE. Bardzo duży, ale przyjemny do zrobienia.

Używać

SELECT * FROM D(18)
M
------
10110

Zadanie 5, GAP, 48 bajtów

"pneumonoultramicroscopicsilicovolcanoconiosis";

Zadanie 6, Excel, 51 48 bajtów

=IF(TEXT(NOW(),"md")="11","Happy New Year!","")

Dzięki @Bond za 3 bajty.

Zadanie 7, Python 2.6, 98 93 85 bajtów

from random import*
l=range(13312,19893)
shuffle(l)
print ''.join(map(unichr,l[:64]))

Po raz pierwszy próbowałem cokolwiek zrobić w Pythonie, więc może być znacznie lepiej. Dzięki @Dennis i @Jacob za wspaniałe wskazówki

Zadanie 8, TCL, 57 bajtów

proc m {a b} {string match [regsub -all (.) $a *\\1]* $b}

Szkoda, że ​​usunięcie białych znaków zabija to

Zadanie 9, Szczupak, 53 bajty

mixed m(array(array(int))a,int n){return(a[*])[*]*n;}

Funkcja, która zwraca tablicę zwielokrotnioną

Zadanie 10, PowerShell, 88 bajtów

Function t($n){Foreach($s in "  ______ "," |      |","~ ()--() "){($s*$n).Substring(1)}}

Funkcja PowerShell. Myślę, że mogę to trochę skrócić, ale oto teraz.

I wreszcie skończyłem :)


Można zapisać 4 bajty na zadania 6: =IF(TEXT(NOW(),"md")="11","Happy New Year!","").
Bond

@Bond Dzięki za to
MickyT,

Nie znam też Pythona, ale l[:63]powinien działać i (13312,19894)jest krótszy niż stałe szesnastkowe (i suma).
Dennis

@Dennis Dzięki wypróbuje to i zmieni
MickyT

@Dennis Jako wysoką wartość wybrałem 19893, ponieważ range(19892,0x4DB5+1)dałem mi[19892, 19893]
MickyT

4

Zadanie 2, J, 10 bajtów

1&p:*/@,#:

Przygotowuje wartość logiczną 0 lub 1, jeśli dane wejściowe są pierwotne do ich reprezentacji binarnej, a następnie przyjmuje produkt. Działa na bieżącej wersji J.


Zadanie 5, HTML, 45 bajtów

pneumonoultramicroscopicsilicovolcanoconiosis

Zadanie 6, ryby, 53 bajty

test 0101 = (date '+%d%m');and echo 'Happy New Year!'

Na podstawie odpowiedzi bash.


Zadanie 8, APL, 12 bajtów

{(⍳⍴⍺)≡⍋⍵⍳⍺}

To jest wyrażenie funkcyjne. Porównuje kolejność znaków znalezionych w większym ciągu z oczekiwaniami, jeśli zostaną posortowane.


Zadanie 9, K, 1 bajt

*

Powinien działać w dowolnej wersji. Operacje arytmetyczne są rozdzielane na tablice.


Komentarze nie są przeznaczone do rozszerzonej dyskusji; ta rozmowa została przeniesiona do czatu .
Martin Ender

2
Twój kod dla zadania 8 nie działa abc caxbxc.
jimmy23013

4

Zadanie 1, Ruby, 40 bajtów

def f n;(0..n-1).inject{|a,b|a+b**3};end

Pierwszy raz piszę cokolwiek w Ruby. Testowane z ruby ​​1.8.7.


Zadanie 2, R, 50 bajtów

n=scan();p=log(n+1,2);!p%%1&sum(!n%%2:n,!p%%2:p)<3

Oblicza p, sprawdź, czy jest to liczba całkowita i czy n i p są liczbami pierwszymi.


Zadanie 5, PostgreSQL, 54 bajty

SELECT'pneumonoultramicroscopicsilicovolcanoconiosis';

Zadanie 6, Lua, 55 bajtów

print(os.date("%j")=="001" and "Happy New Year!" or "")

Zadanie 8, Python, 65 bajtów

import re;f=lambda s,S:bool(re.search(re.sub(r'(.)',r'\1.*',s),S))

Stosowanie:

>>> import re;f=lambda s,S:bool(re.search(re.sub(r'(.)',r'\1.*',s),S))
>>> f('abc','axbxcx')
True
>>> f('bac','axbxcx')
False
>>> f('abc','axdxcx')
False
>>> f('abc','abc')
True

Zadanie 10, Julia, 73 bajty

f(n)=print(" ______  "^n*"\n"*"|      | "^n*"\n"*(" ()--() ~"^n)[1:9n-1])

Dzięki @AlexA. za pomoc w skróceniu tego kodu! Przykład wyników:

julia> f(0)




julia> f(1)
 ______  
|      | 
 ()--() 

julia> f(2)
 ______   ______  
|      | |      | 
 ()--() ~ ()--() 

julia> f(3)
 ______   ______   ______  
|      | |      | |      | 
 ()--() ~ ()--() ~ ()--() 

Do zadania 2 możesz użyćlog2
MickyT,

Liczę obecnie 86 bajtów dla zadania Julia 10. Ale można dostać do 81 przy użyciu funkcji lambda (tj zastąpić f(n)=z n->) i zmieniając 1:(9*n-1)po prostu 1:9n-1.
Alex A.

Właściwie liczyłem \njako 1 bajt, według przyzwyczajenia.
plannapus

Zamiast tego (" "*"_"^6*" ")^nmożesz użyć " ______ "^n(podobnie dla | |części). 70 bajtów: n->print(" ______ "^n*"\n"*"| | "^n*"\n"*(" ()--() ~"^n)[1:9n-1]). (Biała przestrzeń między taktami się tutaj nie wyświetla)
Alex A.,

3

Zadanie 1, Haskell, 17 bajtów

f x=(x*(x-1)/2)^2

Zadanie 2, Mathematica, 30 bajtów

PrimeQ@#&&Mod[Log2[#+1],1]==0&

Zadanie 3, JavaScript, 46 bajtów

function(x){return x.sort()[0|(x.length-1)/2]}

Zadanie 5, MATLAB, 47 bajtów

'pneumonoultramicroscopicsilicovolcanoconiosis'

Zadanie 6, Ruby, 56 bajtów

print Time.now.to_s[5,5]=="01-01"?"Happy New Year!":""

Zadanie 7, Python, 106 bajtów (wcięcie \t)

from random import*
s=''
while len(s)<64:
    c=unichr(randint(0x3400,0x4DB5))
    if c not in s:
        s+=c
print s

Należy pamiętać, że proste użytkowanie list(set(s))ma nie pracować tutaj ponieważ spowoduje to nierównomierny rozkład prawdopodobieństwa w przestrzeni wszystkich możliwych ciągów powodu ponownego zamawiania członków listy.



@Dennis re zadanie 7: Uzgodnione w punkcie 1, naprawię, gdy tylko będę miał okazję. Czy w odniesieniu do REPL istnieje jakaś reguła?
Saran

W porządku, wszystko już naprawione.
Saran

Za 1, prawdopodobnie możesz to zrobić (x*x-x)^2/4?
xnor

Irytujące jest to, że domyślna funkcja sortowania JavaScript konwertuje liczby na ciągi znaków podczas porównywania, więc porównuje tylko pierwszą cyfrę każdej liczby. Dlatego nie działa [2,3,10].
NinjaBearMonkey

1
W 7 możesz umieścić if c not in s:s+=cwszystko w jednym wierszu, oszczędzając kilka znaków. Również 0x3400może być zastąpiony 13312, która jest krótsza o jeden znak (i podobnie dla 0x4db5). Wreszcie nie zmieni to liczby znaków, ale jeśli nie podoba ci się wcięcie tabulatora, możesz zamiast tego wprowadzić wcięcie za pomocą pojedynczej spacji.
matmandan

3

Zadanie 1, Haskell, 15 bajtów

f n=(n*n-n)^2/4

Zadanie 2, Julia, 28 bajtów

n->(isprime(n)&&ispow2(n+1))

Zadanie 3, oktawa, 30 bajtów

@(x)sort(x)(ceil(length(x)/2))

Zadanie 5, Yacas , 45 bajtów

pneumonoultramicroscopicsilicovolcanoconiosis

Zadanie 6, Mathematica, 46 bajtów

If[DateList[][[{2,3}]]=={1,1},Happy New Year!]

Zadanie 9, PARI / GP, 10 bajtów

(n,a)->n*a

3

Zadanie 3, klip, 13 bajtów

gHk[tivt}l`sk

Inna wersja:

gHkci`v``l`sk

The `Wydawało się zbyt kosztowne.

Zadanie 4, KSFTgolf, 16 bajtów

g:]2%:)-2/:;xgpc

Tłumacz jest tutaj.Nie jestem pewien, co robię ... Spowoduje to wydrukowanie negabinaru, a następnie awaria.

W tłumaczu jest błąd. Albo będę mógł zagrać w golfa do 12 bajtów za pomocą wbudowanej konwersji bazowej (ale działa tylko z dodatnimi liczbami całkowitymi):

2*02-ba'Z=;x

Oryginalna wersja CJam:

qi{_1&_@^-2/}h;]W%

Próbowałem Pip, Ostrich, Clip i Burlesque, aby dowiedzieć się, czy jest esolang z wbudowanym negabinary. Żaden z nich nie działał. Używany KSFTgolfnumpy , który wydawał się mieć dziwne dziwne zachowanie, gdy podstawa jest ujemna. Ale nie jest łatwo sprawić, by działało z liczbami nie dodatnimi.

Zadanie 7, CJam, 15 bajtów

'䶶,DAm<>mr64<

Zadanie 8, APL, 21 bajtów

∨/↑{⍺∧0,2∧/∨\⍵}/⌽⍞=↓⍞

Wypróbuj online.


Lol @ „Nie jestem pewien, co robię”
Alex A.,

Pytanie nie było do końca jasne, ale moim zamiarem było, aby kod dla zadania 4 obsługiwał dane wejściowe 0. Wersja bez wbudowanej konwersji bazowej wydaje się dobrze sobie z tym radzić.
Dennis

@Dennis Naprawiono. Ale co, jeśli zdecyduję się na użycie jednego?
jimmy23013

Korzystanie z niektórych stałych przesunięć lub uzupełnień 2 może działać. Akceptuję również znak, po którym następuje jednoznaczny numer.
Dennis

3

Zadanie 2, masm x86, 40 bajtów

C7 45 FC FF FF 07 00 B9 
00 00 00 00 B8 02 00 00 
00 D3 E0 3B 45 FC 7D 03 
41 EB F1 B8 02 00 00 00
D3 E0 48 3B 45 FC 75 13

(z wyłączeniem nagłówka, MessageBox itp. - tylko odpowiednie bajty)

include     \masm32\include\user32.inc  
includelib  \masm32\lib\user32.lib

.data
    ClassName   db "Mersenne Prime Found",0
.data?

.code
start proc
    LOCAL IsMersenne: DWORD
    mov IsMersenne, 524287 ; put number to test in this input
    mov ecx, 0
l00p:
    mov eax, 2
    shl eax, cl
    cmp eax, IsMersenne
    jge br3ak
    inc ecx
    jmp l00p
br3ak:
    mov eax,2                                                                                     
    shl eax, cl 
    dec eax
    cmp eax, IsMersenne                                                           
    jnz n0pr1me                                                              
    invoke MessageBox, 0, addr ClassName, addr ClassName, 40h
n0pr1me:
    ret
start endp
end start

Zadanie 3, C, 136 bajtów

#include<stdio.h> 
int C(void*A,void*B){return(*(int*)A-*(int*)B);} 
main(){int S=4;int A[]={3,1,2,4};qsort(A,S,4,C);printf("%i",A[((S&1)?S:S-1)/2]);}

Kompiluj za pomocą gcc -o Prime main.c


Zadanie 10, C ++, 478 bajtów

#include<stdio.h>
#include<string.h> 
#include<stdlib.h>
void D(int Z){int L=9,i,X=0;const char*A=" ______  ";const char*B="|      | ";const char* C = " ()--() ~ ";char*P=(char*)malloc(27*Z+5);for(i=0;i<Z-1;i++){if(!i){memcpy(P,A,L);X+=L;}memcpy(&P[X],A,L);X+=L;if(i==Z-2){memcpy(&P[X],"\n",1);X++;}}for(i=0;i<Z;i++){memcpy(&P[X],B,L);X+=L;if(i==Z-1){memcpy(&P[X],"\n",1);X++;}}for(i=0;i<Z;i++){memcpy(&P[X],C,L);X+=L;if(i==Z-1)P[X-1]='\0';}printf("%s\n",P);free(P);}
main(){D(15);}

Kompiluj za pomocą g++ -o Trucks main.cpp

C i C ++ można skrócić, ale spowodowałoby to błąd kompilatora. Nie znam dokładnych zasad, więc próbowałem zostawić kod bez błędów kompilatora.


3
Witamy w PPCG! Ostrzeżenia kompilatora można bezpiecznie zignorować, o ile kompilator tworzy użyteczny plik binarny.
Dennis

2
W code golf kompilator C ostrzega cię, że można grać w golfa dalej, nie generując ostrzeżenia.
Comintern

Zignoruj ​​ostrzeżenia - i czuję, że możesz wyciec tyle pamięci, ile chcesz. :-)
Toby Speight

3

Zadanie 1, Python, 35 bajtów

lambda x:sum(_**3for _ in range(x))

Zadanie 3, CJam, 9 bajtów

q~$_,(2/=

Zadanie 4, JavaScript, 55 53 bajtów

function(n){s=0xAAAAAAAA;return((n+s)^s).toString(2)}

Zadanie 5, Pyth, 46 bajtów

"pneumonoultramicroscopicsilicovolcanoconiosis

Zadanie 6, C #, 65 bajtów

string c(){return DateTime.Now.DayOfYear<2?"Happy New Year!":"";}

2

Zadanie 1, jq, 24 bajty

[range(1;.)|.*.*.]|add+0

Zadanie 6, PostgreSQL, 54 bajty

select'Happy New Year!'where'001'=to_char(now(),'DDD')

2

Zadanie 1, Cjam, 7 bajtów

q~,:+_*

Edycja: Właśnie zauważyłem, że Martin opublikował to przede mną. Spróbuję czegoś innego ...

Zadanie 3, Python, 30 bajtów

lambda l:sorted(l)[~-len(l)/2]

Python 2.

Zadanie 5, ///, 45 bajtów

pneumonoultramicroscopicsilicovolcanoconiosis

/// po prostu wyemituje coś bez żadnych /znaków.

Zadanie 7, Pyth, 19 bajtów

s>64.SmC+13312d6582

Program. Proszę, powiedz mi, czy zepsułem matematykę. Wypróbuj tutaj

Zadanie 9, oktawa, 9 bajtów

@(a,n)a*n

Uchwyt funkcji anonimowej. Octave automatycznie robi to z skalarem matrix *.


W przypadku zadania 7 musi być unikalne.
Maltysen

Tak, pyth ma .Stasowanie i możesz użyć sum zamiast jk.
Maltysen

2

Nie znalazłem czasu na wypróbowanie ich wszystkich, ale oto początek

Zadanie 1, dc, 8 bajtów

d1+*d*4/

Wejście i wyjście na górę stosu, zgodnie z dckonwencją.

Zadanie 5, Emacs Lisp, 46 bajtów

'pneumonoultramicroscopicsilicovolcanoconiosis

Nadużycie zasad:

grep 'pn.*v' /usr/*/*/brit*-large

Najlepsze, co udało mi się rozpakować ze skompresowanej formy, to 55, w Perlu:

unpack("H45",'uïFVóÙ¤¼g°0Æö<¥le°°')=~y/0-9bdf/i-v/r

(powyższe znaki niedrukowalne zostają zniekształcone przez SE, ale ponieważ tak naprawdę nie jest to moja odpowiedź, nie naprawiam tego)

Zadanie 6, SQL, 54 bajty

SELECT IF(now()LIKE'%-01-0_%','Happy New Year!','Hi');

Uważam, że pierwsze dziesięć dni stycznia jest „odpowiednimi” dniami na powitanie, ale możesz dostosować się do gustu. now() LIKEKonstrukt odrabia krótszy niż wydobywania dzień-of-rok DATE_FORMAT(now(),'%j').

Zadanie 10, sed, 58 bajtów

s/./ ()--() ~/g;s/.$//;h;y/()-~/___ /;p;g;y/ ()-~/|    /;G

Wejście unarne.


strstrsznurki do podciągów, a nie podsekwencji. Obawiam się, że zadanie 5 to złożoność kolmogorowa, więc pobranie słowa ze słownika może być sprytne, ale nie jest dozwolone.
Dennis

Dzięki. Źle zrozumiałem podsekwencję pierwszą. Zrobię alternatywne zadanie 5, ale jest bardzo nudne.
Toby Speight

Istnieje kilka interesujących rozwiązań zadania 5, ale jak dotąd nikt nie opublikował krótkiego .
Dennis

1

Zadanie 5, MarioGolf , 50 bajtów

To był język, który rozwinąłem od jakiegoś czasu.

Obecna wersja ma wystarczającą funkcjonalność, aby umożliwić uruchomienie tego wyzwania.

Y|<pneumonoultramicroscopicsilicovolcanoconiosis|O

Możesz wypróbować online na http://htmlpreview.github.io/?https://raw.githubusercontent.com/ismael-miguel/mariogolf/master/js/testpage.html#c:Y|<pneumonoultramicroscopicsilicovolcanoconiosis|O

Obecnie prace rozwojowe są zatrzymane, a wdrożenie jest niekompletne.

Ostatnie zatwierdzenie nastąpiło 13 marca 2015 r.

Zadanie 6, PHP, 37 bajtów

Ten jest naprawdę łatwy i przyjemny!

<?=date(jn)==11?'Happy New Year!':'';

Zadanie 10, JavaScript, 121 bajtów

Tak, nie tak golfa ...

Ale to działa!

console.log((' ______  '.repeat(i=prompt()))+'\n'+('|      | '.repeat(i))+'\n'+(' ()--() ~'.repeat(i).replace(/~$/,'')));

Spróbuj:

Kod nie wyświetla się dobrze we fragmencie stosu, ponieważ zaczyna się od " od wyjścia. Dodano dodatkowe przestrzenie, aby to zrekompensować.

Oryginalny kod można wykonać bez problemu na konsoli Chrome, a wynik będzie oczekiwany.


@Dennis Dziękujemy! Źle odczytałem zadanie 5. Nadal zastanawiam się, jak zrealizuję inne zadania, ale mam zły czas.
Ismael Miguel,

1
Jesteś tego pewien date(dM)? Tutaj zwraca „25 czerwca”. (ustawienia narodowe ustawione na en_US) Może „j” i „n” będą służyć lepiej, ponieważ „d” i „m” zwracają wartości 0
dopełniane

@manatwork Masz rację. To był mój błąd. Że za to zauważyłeś.
Ismael Miguel


1

Zadanie 1, oktawa, 15 bajtów

@(n)(n^2-n)^2/4

EDYCJA: Myślałem, że to dodałem, ale wygląda na to, że zapomniałem zapisać: Wykorzystuje to fakt sum(1^3+2^3+3^3+...+n^3) = sum(1+2+3+...+n)^2 = [n*(n+1)/2]^2

Zadanie 3, JavaScript, 24 bajty

x=>x.sort()[x.length>>1]

1

Dobra, zróbmy najpierw proste rzeczy:

Zadanie 5, ASP, 45 bajtów

pneumonoultramicroscopicsilicovolcanoconiosis

Zadanie 6, JavaScript, 46 bajtów

/an 01/.test(Date())&&alert("Happy New Year!")

1

Zadanie 1, VBA, 126 bajtów

Function f(n As Integer)
    Dim i As Integer
    For i = 0 To n - 1
        f = f + i ^ 3
        Next i
End Function

Nie mam pojęcia, jak grać w golfa w VBA. Nie wpisałem ani jednej spacji, VBA automatycznie wstawia białe spacje. =f(5)w komórce w programie Excel wyświetli się 100.

Zadanie 2, oktawa, 32 bajty

@(n)isprime(n)&~mod(log2(n+1),1)

Zadanie 5, skrypt golfowy, 47 bajtów

"pneumonoultramicroscopicsilicovolcanoconiosis"

Zadanie 9, MATLAB, 9 bajtów

@(A,n)A*n

Cóż, to początek ...

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.