Dobrym rozwiązaniem na 2015 r. Jest życie w bardziej zrównoważony sposób. Zaczniemy od recyklingu. To znaczy kod do recyklingu!
Twoim zadaniem jest wydrukowanie numeru 2015
do STDOUT, z końcowym znakiem nowej linii lub bez (i tylko to). Musisz to jednak zrobić poprzez recykling starego kodu z PPCG. Oto jak to działa:
- Wybierz dowolną odpowiedź opublikowaną na CodeGolf.SE przed 16.12.2014 00: 00: 00Z (dzień, w którym opublikowałem to w piaskownicy). Wyjątek: nie możesz używać żadnych odpowiedzi z zeszłorocznego wyzwania noworocznego .
- Wybierz jeden blok kodu z tej odpowiedzi (nie wbudowany fragment kodu, musi to być własny akapit). Ten blok musi być reklamowany jako rzeczywisty kod, np. Nie można użyć przypadków testowych lub przykładowych danych wyjściowych, które zdarzają się przy użyciu formatowania w przestrzeni pojedynczej.
- Zmień układ znaków w tym bloku kodu, aby utworzyć zgłoszenie do tego wyzwania. Możesz jedynie zmienić kolejność, nie dodawać ani nie usuwać żadnych znaków. Obejmuje to nowe linie.
- Musisz być w stanie wykazać, że oryginalny blok źródłowy jest poprawny pod względem składniowym w twoim języku. W najlepszym przypadku możesz to zrobić, pokazując, że działa bez błędów kompilacji lub błędów w czasie wykonywania. Więc chociaż oryginalnym kodem mógł być Java, możesz go użyć do odpowiedzi na spację (ponieważ każdy plik jest poprawny w spacji), ale prawdopodobnie nie może użyć go do odpowiedzi w Pythonie (ponieważ oryginał nie będzie poprawną składnią Pythona ).
Pamiętaj, że twoja odpowiedź musi zignorować wszystkie dane wejściowe i zewnętrzne (w tym aktualną datę). To może czytać ze standardowego wejścia, powiedzmy, o ile nie psuje, jeśli jest pusta, i wytworzy dla wszystkich możliwych zawartości strumienia.
Wynikowy kod musi być pełnym programem (nie funkcją ani fragmentem, który zakłada środowisko REPL).
To jest kod golfowy, więc wygrywa najkrótsza odpowiedź (w bajtach ).
Liderów
Jestem pewien, że będzie to wyglądać zupełnie inaczej w różnych językach. Tak więc poniższy fragment kodu generuje zarówno zwykłą tabelę wyników, jak i przegląd zwycięzców według języka.
Aby upewnić się, że twoja odpowiedź się pojawi, zacznij od nagłówka, korzystając z następującego szablonu Markdown:
# Language Name, N bytes
gdzie N
jest rozmiar twojego zgłoszenia. Jeśli poprawić swój wynik, to może zachować stare porachunki w nagłówku, uderzając je przez. Na przykład:
# Ruby, <s>104</s> <s>101</s> 96 bytes
function answersUrl(e){return"http://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function getAnswers(){$.ajax({url:answersUrl(page++),method:"get",dataType:"jsonp",crossDomain:true,success:function(e){answers.push.apply(answers,e.items);if(e.has_more)getAnswers();else process()}})}function shouldHaveHeading(e){var t=false;var n=e.body_markdown.split("\n");try{t|=/^#/.test(e.body_markdown);t|=["-","="].indexOf(n[1][0])>-1;t&=LANGUAGE_REG.test(e.body_markdown)}catch(r){}return t}function shouldHaveScore(e){var t=false;try{t|=SIZE_REG.test(e.body_markdown.split("\n")[0])}catch(n){}return t}function getAuthorName(e){return e.owner.display_name}function process(){answers=answers.filter(shouldHaveScore).filter(shouldHaveHeading);answers.sort(function(e,t){var n=+(e.body_markdown.split("\n")[0].match(SIZE_REG)||[Infinity])[0],r=+(t.body_markdown.split("\n")[0].match(SIZE_REG)||[Infinity])[0];return n-r});var e={};var t=1;answers.forEach(function(n){var r=n.body_markdown.split("\n")[0];var i=$("#answer-template").html();var s=r.match(NUMBER_REG)[0];var o=(r.match(SIZE_REG)||[0])[0];var u=r.match(LANGUAGE_REG)[1];var a=getAuthorName(n);i=i.replace("{{PLACE}}",t++ +".").replace("{{NAME}}",a).replace("{{LANGUAGE}}",u).replace("{{SIZE}}",o).replace("{{LINK}}",n.share_link);i=$(i);$("#answers").append(i);e[u]=e[u]||{lang:u,user:a,size:o,link:n.share_link}});var n=[];for(var r in e)if(e.hasOwnProperty(r))n.push(e[r]);n.sort(function(e,t){if(e.lang>t.lang)return 1;if(e.lang<t.lang)return-1;return 0});for(var i=0;i<n.length;++i){var s=$("#language-template").html();var r=n[i];s=s.replace("{{LANGUAGE}}",r.lang).replace("{{NAME}}",r.user).replace("{{SIZE}}",r.size).replace("{{LINK}}",r.link);s=$(s);$("#languages").append(s)}}var QUESTION_ID=43048;var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe";var answers=[],page=1;getAnswers();var SIZE_REG=/\d+(?=[^\d&]*(?:<(?:s>[^&]*<\/s>|[^&]+>)[^\d&]*)*$)/;var NUMBER_REG=/\d+/;var LANGUAGE_REG=/^#*\s*([^,]+)/
body{text-align:left!important}#answer-list,#language-list{padding:10px;width:290px;float:left}table thead{font-weight:700}table td{padding:5px}
<script src=https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js></script><link rel=stylesheet type=text/css href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"><div id=answer-list><h2>Leaderboard</h2><table class=answer-list><thead><tr><td></td><td>Author<td>Language<td>Size<tbody id=answers></table></div><div id=language-list><h2>Winners by Language</h2><table class=language-list><thead><tr><td>Language<td>User<td>Score<tbody id=languages></table></div><table style=display:none><tbody id=answer-template><tr><td>{{PLACE}}</td><td>{{NAME}}<td>{{LANGUAGE}}<td>{{SIZE}}<td><a href={{LINK}}>Link</a></table><table style=display:none><tbody id=language-template><tr><td>{{LANGUAGE}}<td>{{NAME}}<td>{{SIZE}}<td><a href={{LINK}}>Link</a></table>
Odpowiedzi:
GolfScript, 9 bajtów
Oryginalna odpowiedź (dibs!) Jest również w GolfScript, który jest, jak wiem, że jest składniowo poprawny. Testowałem na http://golfscript.apphb.com/ .
Nienawidzę używania języków przeznaczonych do gry w golfa, ale musiałem wygrać to wyzwanie, dlatego zdradziłem swoje wartości, zamieszczając tę odpowiedź. Nie wiem, co większość postaci robi w tym języku, ale kiedyś niechcący nauczyłem się, przeglądając odpowiedź GolfScript, że niedopasowane
}
komentarze komentują resztę programu. To pozwoliło mi zignorować resztę postaci.źródło
Befunge-93, 2085 bajtów
Pomyślałem, że dobrze się bawię i wykorzystam meta, przetwarzając to, co najlepsze z recyklingu . Nie będzie tu żadnych nagród za zwięzłość.
W rzeczywistości jest to również poliglot dla 5 języków: Befunge-93 , oOo Code , Pyth , Python 3 i Ruby. Ponieważ jednak oryginalny kod jest poprawny pod względem składni tylko dla Befunge-93, liczę tylko to.
Niestety oryginalny kod miał tylko jedną parę
[]
i za dużo.
s, więc nie byłem w stanie dopasować Brainfuck (stąd kod oOo).Notatki
Okazało się to zaskakująco restrykcyjne, ponieważ:
001111111222
, wymagających użycia językaord
Ruby i Python. W szczególności nie ma5
, co okazało się dla Pyth uciążliwe.@
oznacza, żep
trzeba było użyć do postawienia@
Befunge.*
oznaczał, że musieliśmy pomnożyć dzieląc przez odwrotność liczby. Zabawa.Befunge-93
Program Befunge to
gdzie pominęliśmy niepotrzebne instrukcje. Mamy kodować każdą cyfrę jako różnicę pomiędzy wartościami ASCII znaków, a konkretnie
cabf
vs.a
.oOo Code
Odpowiedni BF to
, którego jedyną istotną częścią jest
Pyt
Pyth wykonuje tylko pierwszą linię, więc
Zauważ, że Pyth używa notacji przedrostkowej, więc pierwsza część wiersza jest w rzeczywistości
( Uwaga:
e
oznacza%10
)Ze względu na charakter Pyth jest on automatycznie drukowany. Reszta wiersza jest poprawna w Pyth, ale poprzedzająca ją spacja przed
o
pomijaniem automatycznego drukowania.Python 3
Większość kodu Pythona jest komentowana za pomocą ciągów, szczególnie dużego potrójnego cudzysłowu w środku. Ignorując kilka bezpańskich ciągów, mamy:
Pierwszy i ostatni wiersz są poprawne składniowo, ale nie rób nic. Dwie środkowe linie drukują to, czego potrzebujemy.
Rubin
Kod Ruby jest podobny, ale używamy heredoc zamiast potrójnego cudzysłowu, aby skomentować większość programu. Ignorując niektóre zbłąkane ciągi, mamy:
Ponownie pierwszy wiersz jest poprawny pod względem składniowym, ale nic nie robi. Druga linia wypisuje to, czego potrzebujemy.
źródło
CJam, 12 bajtów
Rozszyfrować kod wątek jest bardzo dobrym źródłem losowej drukowania numeru. Ten był fajny do złożenia :)
Dodatkowe odpowiedzi
14 bajtów:
19 bajtów:
źródło
Struś, 198
Jestem podekscytowany, że mogę uzyskać odpowiedź na strusia; Nie obchodzi mnie, jak długo to trwa. : P ( nawiasem mówiąc , to jest wersja 0.5.0 )
Oryginał :
Wszystko, co zmieniłem, to:
Zawija wszystko inne niż
2 n15
w bloku ({}
), który jest natychmiast otwierany (;
).Utknął
2 n15
na końcu.2
popycha a2
,n
popycha a0
i15
popycha15
, co ostatecznie staje się,2015
gdy dane wyjściowe.To rzeczywiście pomógł mi znaleźć błąd:
2n15
nie działa z jakiegoś powodu (drukuje215
), ale zarówno2 n15
i2n 15
pracę. Będę musiał dowiedzieć się, dlaczego tak jest ....Oto zapytanie, którego użyłem do znalezienia idealnej próbki kodu:
Ta odpowiedź działałaby dla 140, ale zobaczę, czy mogę zmniejszyć ...
źródło
JavaScript, 26 bajtów
Oryginał :
Z recyklingu:
Po prostu przesuwa 4030 nieco w prawo.
źródło
CJam, 14 bajtów
Ten jest nieco trudny, więc musiałem go opublikować, chociaż jest trochę długi. Oryginalna odpowiedź znajduje się również w CJam, więc jest poprawna.
Oryginalna odpowiedź:
Recycled 2015:
Jak to działa
Tak więc stos zawiera
20
i15
które są drukowane jeden po drugim, drukując 2015Wypróbuj online tutaj
źródło
Cudowny, 54 bajty
Nudna odpowiedź (54 bajty)
(po której następuje tona nowych linii do 54 bajtów)
Oryginalna odpowiedź
Płyta główna po prostu upuszcza kulki reprezentujące każdą postać
2015
.R
iQ
tablice są zdefiniowane, ale nigdy nie są używane.Alternatywna odpowiedź (92 bajty)
Oryginalna odpowiedź
Odstępy jako puste komórki należy sprawdzić. Najpierw drukowane
2
(0x32), a następnie drukowane0x03+0x02+0x0A=0x0F=15
jako trzycyfrowe dziesiętne (015
). Pierwsze trzy linie nic nie robią.Testuj odpowiedzi tutaj.
źródło
Pyth, 25
https://github.com/isaacg1/pyth
Oto oryginalna odpowiedź (również napisana w pyth). Wiem, że nie jest to bardzo konkurencyjna odpowiedź (istnieje odpowiedź python o długości 26), ale naprawdę podobało mi się wymyślanie tego i myślę, że wychodzi to dość humorystycznie.
Wyjaśnienie:
Zasadniczo jest to filtrowanie listy pierwszych dwóch milionów liczb za równe 2015 r. Następnie traktuje tę listę liczb jako cyfry podstawowej liczby 10 MILIARDÓW. Na szczęście w zakresie jest tylko jedna liczba równa 2015, więc otrzymujesz 2015 * 10000000000 ^ 0, czyli tylko 2015. Uruchomienie zajmuje kilka sekund.
źródło
Perl, 48 bajtów
Oryginalna odpowiedź
źródło
Python 2, 26 bajtów
Wykonano z najmniejszego skryptu Pythona, aby wydrukować parzyste liczby od 0 do 100 wątków. Prawdopodobnie jest to rozwiązanie, do którego nawiązał @FryAmTheEggman.
źródło
Mathematica, 60 bajtów
Źródło
Część w
Floor
nawiasach to tylko szereg aplikacji funkcyjnych nieistniejących funkcji (z którymi Mathematica nie ma problemu ze względu na swój symboliczny model obliczeniowy). Podobnie samo pisanie podłogi iPrint@2015
mnożenie, na co Mathematica też nie narzeka. Bez cukru syntaktycznego byłobyPonieważ nie zakładamy środowiska REPL, wynik tego nigdy nie jest drukowany (co byłoby
Null Floor[ggggiiimmnnoorrrstt[ee[RS[DF[IM], ad], ee], 0.22346]]
), a jedynie efekt ubocznyPrint
faktycznie przechodzi na STDOUT.Dzięki Sp3000 za zwiększenie źródła do tego.
źródło
> <>, 57 bajtów
Oryginalny kod C ++ z wyzwania RadioASCII :
Recycled > <> (Fish) code:
Podobnie jak Befunge,> <> jest językiem 2D opartym na stosie. Wykonanie rozpoczyna się od lewego górnego rogu i początkowo jest prawe. Wykonywany jest tylko pierwszy wiersz programu w następujący sposób:
Najważniejsze pytanie brzmi: dlaczego kod C ++ jest prawidłowy> <>? W> <> są sposoby na zmianę kierunku przebiegu programu (w końcu jest to język 2D):
Kiedy kod C ++ jest wykonywany, początkowy
#
odzwierciedla przepływ programu w lewo. Ale> <> jest toroidalne, więc wskaźnik instrukcji zawija się, pojawiając od końca linii, spotykając kierunek,>
który ponownie kieruje przepływ programu w prawo. Wskaźnik następnie wraca do#
, odbija się do>
... i dlatego pojawia się nieskończona pętla i błąd nigdy nie jest generowany.źródło
Python 3, 1878 bajtów
Bardzo długo, ale mimo to chciałem się podzielić:
Zaczerpnięte z odpowiedzi Kenny'egoTM .
Widziałem, że 2, 0, 1 i 5 i # można znaleźć w kodzie, więc przesunąłem kilka znaków, aby zrobić,
print(2015)
i mogłem skomentować resztę. W komentarzu umieściłem również import PIL, aby nie wymagał tej biblioteki.źródło
PHP, 21 bajtów
Spróbujmy jeszcze raz. Zaczerpnięte z innej odpowiedzi PHP z Rozszyfrować kod źródłowy. Jest dość prosty, ale jak dotąd jest to najkrótszy program w języku innym niż golfowy. Możesz to sprawdzić na stronie http://codepad.org/15EjIYAU . Oryginalny kod jest następujący:
źródło
4*2/8
;)