var QUESTION_ID=17005,OVERRIDE_USER=7110;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 commentUrl(e,s){return"https://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return r-a});var s={},r=1,a=null,n=1;e.forEach(function(e){e.size!=a&&(n=r),a=e.size,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var o=e.language;/<a/.test(o)&&(o=jQuery(o).text()),s[o]=s[o]||{lang:e.language,user:e.user,size:e.size,link:e.link}});var t=[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o]);t.sort(function(e,s){return e.lang>s.lang?1:e.lang<s.lang?-1:0});for(var c=0;c<t.length;++c){var i=jQuery("#language-template").html(),o=t[c];i=i.replace("{{LANGUAGE}}",o.lang).replace("{{NAME}}",o.user).replace("{{SIZE}}",o.size).replace("{{LINK}}",o.link),i=jQuery(i),jQuery("#languages").append(i)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",answers=[],answers_hash,answer_ids,answer_page=1,more_answers=!0,comment_page;getAnswers();var SCORE_REG=/<h\d>\s*([^\n,]*[^\s,]),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/,OVERRIDE_REG=/^Override\s*header:\s*/i;
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><td>Language</td><td>Size</td></tr></thead> <tbody id="answers"> </tbody> </table> </div><div id="language-list"> <h2>Winners by Language</h2> <table class="language-list"> <thead> <tr><td>Language</td><td>User</td><td>Score</td></tr></thead> <tbody id="languages"> </tbody> </table> </div><table style="display: none"> <tbody id="answer-template"> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table> <table style="display: none"> <tbody id="language-template"> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table>
++++++[>++++++++<-]>++.--.+.+++.
Odpowiedzi:
Mysz-2002 , 4 bajty.
To 4 bajty czystego, słodkiego ASCII.
W Mysz litery alfabetu są inicjowane na wartości 0-25.
!
jest operatorem wypisującym liczby całkowite, więc drukuje się20
wtedy14
(bez przerywanej nowej linii).Nie ma dostępnego tłumacza online, ale tutaj znajdziesz tłumacza napisanego w C (wymagającego drobnych poprawek, zanim będzie można wymusić
gcc
jego kompilację) i tego samego skompilowanego tłumacza,Win32
ale działającego doskonale w systemie Linuxwine
.Tutaj możesz znaleźć stałą wersję interpretera, który się kompiluje.
źródło
KE
, ale w rzeczywistości jest ważne, ponieważ jest to język sprzed 2014 roku.Python, 52 bajty
Zaktualizowano w 2015 roku dzięki @Frg:
Najedź myszką, aby zobaczyć wersję 2016:
Wypróbuj online!
źródło
print sum(ord(c) for c in 'HAPPY NEW YEAR To you too.')
Och, czekaj, jestem spóźniony o rok. To 2013.sum(map(ord,'Happy new year to you!'))
uratuje 7 znaków.Befunge 98 -
171198 bajtówPodobne do starej wersji, ale o tym pamiętałem
'
Co ciekawe, 45 2 -11 jedyny parowania liczb a, b, gdzie Znaczenie tych zestawów jest [32,126 ] to zbiór drukowanych znaków ascii, a [10,15] to zbiór łatwo dostępnych liczb Befunge. Znalazłem tę parę z tym programem python :
Lub, jeśli twój tłumacz obsługuje Unicode, to działa:
Befunge 98-5 bajtów (4 znaki)
Działa przynajmniej na http://www.quirkster.com/iano/js/befunge.html z następującym kodem (Befunge 93 - 6 bajtów / 5 znaków):
Stara wersja
oblicza liczbę, a następnie drukuje:
Starsza wersja:
Przesuwa wartości ascii dla 2014, -10. Następnie drukuje każdy po dodaniu do niego 10.
źródło
randomstuff2randomstuff0randomstuff1randomstuff4
nie uważam go za prawidłowe rozwiązanie.Ruby, 15 lat
Tymczasowe;)
Zauważ, że sekcja pytania
nie był edytowany długo po opublikowaniu mojej odpowiedzi ...
Jan Dvorak oferuje doskonałą alternatywę w komentarzach :
Ale to nie jest entuzjastyczne. Wolę:
Lub nawet:
A oto poprawna interpunkcja angielska:
Okej, nic nie mogłem na to poradzić:
źródło
Happy = Time; Happy.new.year
Idź, 2 bajty (UTF-16)
Jeden znak Unicode (2 bajty w UTF-16, 3 bajty w formacie UTF-8), dane wyjściowe 2014 jako część błędu
http://ideone.com/dRgKfk
źródło
Python, 26
źródło
0
-9
.MATLAB, Scala (4 znaki, 5 bajtów)
Tutaj możesz skorzystać ze stosunkowo słabego systemu typów MATLAB (i Scali). Sztuką jest zastosowanie
+
operacji jednoargumentowej na łańcuchu złożonym tylko ze znakuߞ
(punktu kodowego UTF-8 U + 07DE lub 2014 w systemie dziesiętnym). Ta operacja niejawnie konwertuje ciąg znaków na podwójne (w MATLAB) i naInt
(w Scala):Szczegóły dotyczące liczby bajtów:
+
jest ASCII i liczy 1 bajt'
jest ASCII i liczy 1 bajt (ale pojawia się dwa razy w wyrażeniu)ߞ
jest 2-bajtowym znakiem UTF-8Razem: 5 bajtów
TeX (
3226 znaków, tyle bajtów)Jeszcze krótszą alternatywą (zaproponowaną przez Josepha Wrighta ) jest
XeTeX / LuaTeX (13 znaków, 14 bajtów)
Jeśli dozwolone są XeTeX lub LuaTeX, wejścia UTF-8 można użyć bezpośrednio (jak zaproponował Joseph Wright ):
źródło
\let~\number~`^^T~`^^N\bye
25 znaków / bajtów. Uważasz, że nie zgadzasz się, to również 25 dla twojego rozwiązania.\the\year\bye
+'ߞ'
działa również w Scali (i kilku innych językach, jakie sobie wyobrażam)dc, 6 znaków
D
popycha 13 na stos, nawet jeśli początkowa podstawa wynosi 10i
zmienia podstawową wartość wejściową (na 13 z 10)BBC
to podstawa 13 z 2014 r.p
odbitki.Dane wyjściowe konsoli:
źródło
DiBBCp
(6 znaków), reszta to tylko sposób na uruchomienie go.D
polecenia na stronie man. Co to robi? Nieważne ... D jest hex na 13.Kod Morse'a, 23
;)
źródło
7245 znaków w kodzie; Zero kodów znakówJest to dalekie od najkrótszej opublikowanej odpowiedzi, ale nikt jeszcze jej nie opublikował
Używając czystej matematyki (dobra i automatycznej konwersji boolowskiej) w R z konsoli R:
Drukuje liczbę 2014.
T
jest wstępnie zdefiniowanym synonimem true w R. Funkcjefloor
iexp
są bezpośrednio dostępne w pakiecie podstawowym, podobnie jakpi
stała. R nie ma operatora inkrementacji, ale powtórzenie(x*x)
okazało się, że jest mniej znaków, które wykonują inkrementację i dekrementację dwa razy.Oryginalna wersja w JavaScript (72 znaki)
Z tego prostego powodu, że mógłbym przetestować konsolę i nie przeszkadza jej całkowity brak białych znaków:
uruchom w konsoli, a wydrukuje liczbę 2014.
Propozycje dla xkcd (i także ) za skłonienie mnie do myślenia o exp (pi):
PS Jeśli możesz skrócić ten sam algorytm w innym języku, opublikuj w nim komentarz.
źródło
cdd**e-.@
(opublikowane wcześniej), które nie korzysta z kodów znaków ani daty systemowej. Oblicza liczbę 2014c
,d
ie
są cyfry szesnastkowe numer.a
,b
, ...,f
Push (odpowiednio) 10,11, ... 15 więc12 * 13 * 13 - 14
jest obliczenie.Scala REPL
3429 znaków.Cóż, ok, jeśli naprawdę chcesz grać w golfa z dowolnymi znakami, możesz użyć:
lub
które mają odpowiednio 11 i 22 znaki.
źródło
toInt
tego:+"Happy new year to you!".sum
TestPHP, 9 bajtów
Wymaga to PHP 7.1 lub niższej. Będzie działał w PHP 7.2, ale spowoduje ostrzeżenie. Brak gwarancji na przyszłe wersje.
xxd
potrzebne ze względu na dane binarne (więc kopiowanie i wklejanie byłoby łatwiejsze). Może wrócićE_NOTICE
, ale to nie ma znaczenia, prawda?Możesz też zapisać to przy użyciu kodowania ISO-8859-1.
źródło
echo date('Y');
?<?=date(Y);
byłoby 11 znaków, a mam rozwiązanie w 9 postaciach.C, 33 bajty
źródło
Mathematica, 14 znaków (lub 15, jeśli policzisz bitmapę jako znak)
TextRecognize @
źródło
\d
zakresie. Mianowicie, jeśli jest to GIF, to sam nagłówek z pewnością zawiera niektóre.Python3.4.0b2 (0 bajtów)
źródło
JavaScript, 23 bajty
Wykorzystuje konwersję Base 64
23 znaki (16 z atobem w sobie)
Lub
źródło
MMXIV
nie ma żadnych wspólnych znaków2014
, ostatnio sprawdziłem ...// ;)
[!+[]+!+[]]+[+[]]+[+!+[]]+[!+[]+!+[]+!+[]+!+[]]
-alert([!+[]+!+[]]+[+[]]+[+!+[]]+[!+[]+!+[]+!+[]+!+[]]);
chociaż nie jestem pewien, czy spełniaJoe Z
wymagania.Perl - 10 znaków
To rozwiązanie jest dostępne dzięki uprzejmości BrowserUK w PerlMonks , chociaż odrzuciłem trochę niepotrzebnej interpunkcji i białych znaków w rozwiązaniu, które opublikował. Jest nieco „nie” na czteroznakowym ciągu dwójkowym.
Znaki wyświetlane powyżej reprezentują binarne oktety cd: cf: ce: cb i są takie, jak wyglądają w ISO-8859-1 i ISO-8859-15.
Oto cały skrypt w systemie szesnastkowym, a także przykład jego uruchomienia:
Perl (bez wysokich bitów) - 14 znaków
Ten wykorzystuje logiczną „lub” na dwóch strunach czterech znaków
"RPQT"
i"````"
(czyli cztery backticks).(Początkowo miałem dwa łańcuchy na odwrót, co wymagało spacji między
print
iRPQT
aby oddzielić tokeny. @DomHastings wskazało, że przełączając je, mogę zapisać znak.)Perl (oszukiwanie) - 8 znaków
Prawdopodobnie nie leży to w duchu konkurencji, ale hdb na PerlMonks zwrócił uwagę, że Perl udostępnia zmienną o nazwie,
$0
która zawiera nazwę aktualnie wykonywanego programu. Jeśli wolno nam nazwać plik zawierający skrypt „2014”, to$0
będzie równy 2014.$0
zawiera cyfrę, więc nie możemy go użyć bezpośrednio, ale${...}
zawierające wyrażenie o wartości 0 będzie w porządku; na przykład:Aby zachować spójność, zróbmy hexx-then-perl z tym:
Myślę, że to oszustwo, ale mimo to jest to interesujące rozwiązanie, o którym warto wspomnieć.
źródło
print"````"^RPQT
. Może być możliwe użyciesay
również w wersji 5.10+ za pomocą opcji -E zamiast -e, ale nie wiem, czy spowoduje to karę +2 za różne argumenty wiersza poleceń?say
kary.say ABCD^srrp
.Ruby, 20 lat
Objaśnienie:
bbc
jest2014
w bazie 13. Krótszy niż Python. Nie tak krótki jak Forth.źródło
p 'ߞ'.ord
dla w pełni funkcjonalnego programu'ߞ'.ord
wewnątrzirb
. Działa na wersji 1.9+?-*?--?\v
(45 *?.*?.-?f
(46 * 46 - 102) (tylko Ruby 1.8)PowerShell, 9
ߞ
( U + 07DE NKO LETTER KA ) jest liczony jako dwa bajty zgodnie z informacjami o znaczniku code-golf .[""]
zwraca pierwszy znak z ciągu (""
jest konwertowany na0
). Unary plus opeartor (+
) konwertuje znak na liczbę całkowitą.źródło
['']
niezła sztuczka. Zwykle używałem,[char]
ale to rzeczywiście krótsze :)Scala REPL - 6 znaków
(
##
oznacza symbol ScalihashCode
, a ciąg Java ma"?="
skrót do 2014 r.)Scala REPL - 4 znaki, 5 bajtów
Matematyka na naszej ulubionej postaci z Unicode tworzy
Int
.źródło
JavaScript, 18 znaków
Aktualizacja: w ES6 użycie literału szablonu pozwala zapisać dwa znaki:
Powyższy kod jest dość łatwy do zrozumienia, pamiętając, że
btoa
konwertuje łańcuch na inny łańcuch zgodnie z zestawem dobrze zdefiniowanych reguł ( RFC 4648 ). Aby zobaczyć, jak działa konwersja, napiszemy ciąg wejściowy „ÛMx” jako ciąg cyfr binarnych, gdzie każdy znak jest renderowany jako 8-bitowy kod znaku.Po reorganizacji cyfr binarnych w ostatnim rzędzie w grupach po 6, otrzymujemy binarną reprezentację 4 nowych liczb, odpowiadających indeksom Base64 4 znaków w ciągu „2014”.
Zgodnie ze specyfikacją HTML znaki wyjściowe można pobrać z ich indeksów Base64 zgodnie z poniższą tabelą: http://dev.w3.org/html5/spec-LC/webappapis.html#base64-table .
Jeśli nie zależy ci na szczegółach, możesz pozwolić przeglądarce wykonać obliczenia za Ciebie i dowiedzieć się, że „ÛMx” jest wynikiem oceny
atob('2014')
w JavaScript.źródło
alert
najczęściej).alert
połączenie.alert
. Zastanawiam się, czy zmieniły się standardy dla kodegolfa JS, czy to tylko zmiana, którą przyjęła społeczność.Jeszcze jeden wpis GolfScript, 9 znaków do wydrukowania
Uważam, że jest on krótszy niż jakikolwiek z dotychczasowych drukowanych wpisów GolfScript:
( 7-znakowy wpis Petera Taylora bije go, ale zawiera znaki kontrolne, które nie mogą być drukowane).
Nazywam to „ tak jest w zeszłym roku!” wpis, ponieważ tak naprawdę generuje liczbę 2013 w 8 znakach, czyli 33 × 61, a następnie zwiększa ją o jeden. ;-)
źródło
C (31)
C (32)
C (30)
C (30)
źródło
"%x"
i'b'*'S'
? To 8212 grudnia lub heks 2014. Zapisuje jeden znak, jeden literał i dwa w ciągu formatu.'b'*'S'
wynosi 8134. Pierwotna faktoryzacja 8212 wynosi 2 * 2 * 2053, więc nie widzę łatwego sposobu jej wytworzenia.8212/'b' == 'S'
:(Czwarty, 14
źródło
62 34 * 94 - .
jeśli nie mówisz dalej, to znaczyprint (62 * 34 - 94)
.'ߞ .
Drukuje znak.GolfScript, 14
Jak to działa: ASCII wygląda następująco:
To bierze kody ASCII każdego znaku, odejmuje pięć i umieszcza go w ciągu.
{...}%
zwraca tablicę znaków ciągu odwzorowanego, gdy podano ciąg jako argument. Tak więc zwiększa każdy znak o 5 ()
oznacza przyrost).źródło
+
Na końcu jest niepotrzebna. Zamiast dodawać 5 razy, po prostu dodaj pięć. Łączne oszczędności: 4 znaki.'-+,/'{5+}%
5
jest liczbą."-+,/"_,)f+
. :) (Znowu CJam maKD
.)Python, 32 znaki
Prawdopodobnie można to zmniejszyć za pomocą 2014-szego znaku Unicode
ߞ
, ale nie próbowałem.Quincunx zauważa, że
jest krótszy o trzy znaki.
źródło
print(ord("ߞ"))
. Nie działa w Pythonie 2; Python 2 prawdopodobnie nie obsługuje Unicode.a=ord('.');print(a*a-ord('f'))
jest o 2 znaki krótszy.u
na końcu łańcucha (byłoby"ߞ"u
)u
powiedzieć, że były one Unicode, ale w Pythonie 3 wszystkie ciągi są automatycznie unicodeprint ord('.')**2-ord('f')
jest nieco krótszy.APL (6 bajtów, 4 znaki)
Działa tylko w tym roku.
Dlaczego to działa:
Bez polegania na dacie systemowej, ma 10 bajtów (7 znaków):
źródło
⎕
), tak powinno wyglądać.Python
3210 bajtów,9185 (66math
domyślnie importowanych) bajtów czystej matematykiBawiłem się pisząc to:
Drukuje wszystkie możliwe sposoby pisania
2014
przy użyciu metody Bruno Le Flocha (32 znaki):Ale jest to oczywiście zbędne, więc jeśli twój interpreter jest domyślnie ustawiony na utf-8, wtedy wystarczy:
Ponadto, dzięki AmeliaBR (za pomysł), starałem się jak najlepiej wdrożyć wersję czysto matematyczną:
źródło
a,b=int(e),int(pi);c=a+a;print a**(b*c-c+b)-a*a**c-a
i możesz całkowicie wyeliminować import matematyki, korzystając z faktu, żeTrue
w Pythonie 2.x jest identyczna z liczbą całkowitą 1 w działaniu, zmniejszając ją do 50 znaków:o=True;a=o+o;b=a+o;c=b+o;print a**(b*c-o)-a*a**c-a
ord('ߞ')
R (20 znaków)
@ popojan (nie ma jeszcze możliwości opublikowania odpowiedzi tutaj) podał rozwiązanie w ciągu 20 znaków.
Wynik:
R (22 znaków)
Anonimowy użytkownik zaproponował krótsze rozwiązanie.
2014
jestBBC
w bazie 13.pi*pi+pi
(= 13.0112) jest traktowany przez R w tym kontekście jako liczba całkowita 13. Dane wyjściowe:R (30 znaków)
Dzięki @Tomas!
Wynik:
R (31 znaków)
Zainspirowany odpowiedzią AmeliaBR . Wynik:
źródło
cat(a<-T+T,T-T,T/T,a^a,sep="")
(30 znaków),paste0(aT+T,T-T,T/T,a^a)
(26 znaków)paste0
jest niedozwolona, ponieważ zawiera symbol0
. Twoje rozwiązanie składa się z 30 znaków, jeśli używaszcat
.2014
w bieżącym katalogu i napiszlist.files()
- 12 znakówJava -
7775 znaków75 znaków, jeśli
print
zostanie dodany do klasy za pomocą głównej metody:Oznacza to,
35*60-86
co jest równe 2014źródło
class a{static{System.out.println('#'*'<'-'V');}}