W jak najmniejszej liczbie bajtów Twoim zadaniem jest napisanie programu, który wyświetli:
3.14
Oczywiście z okazji późnego dnia Pi! :)
Zasady
Możesz to zrobić w dowolny sposób, ale istnieją pewne ograniczenia.
- Być może nie korzystać z operacji arytmetycznych w dowolnym miejscu w programie. Obejmuje to
+
,-
,*
,/
,%
,^
(potęgowanie), etc ... To również obejmuje inkrementacji (zazwyczaj++
), zmniejszanie (--
), operacje bitowe , oraz ewentualne wbudowane funkcje, które mogą być stosowane jako zamiennik takich jaksum()
,prod()
,mod()
,double()
,pow()
,sqrt()
,inc()
,dec()
itp. ... (według uznania autora) - Cyfry
3
,1
i4
może nie pojawić się w dowolnym miejscu w kodzie. - Być może nie stosować żadnych predefiniowane zmienne / stałe, które mogą mieć język jako zamiennik
3
,1
i4
. (Według uznania autora) - Można również nie używać żadnych funkcji trygonometrycznych, takich jak
sin()
,cos()
,tan()
,arcsin()
,arccos()
,arctan()
,sinh()
,cosh()
,tanh()
, itd ... (dyskrecja autora) - Być może nie korzystać z wbudowanego lub predefiniowane wartości PI (lub
3.14
). Brak żądań internetowych . - Twój program nie może wymagać żadnych danych wejściowych (poza jego uruchomieniem).
3.14
jest jedyną rzeczą, którą możesz wydać, nie może być częścią dłuższej / większej produkcji.
Zwycięzca
Odpowiedź z najmniejszą liczbą bajtów 18 kwietnia wygrywa. Powodzenia!
Czekamy na sprytne odpowiedzi od mądrych umysłów! Zaskoczyć kogoś? : P
^
jest to operator potęgowania, a nie bitowy operator XOR.Odpowiedzi:
CJam -
86CJam to nowy język, który rozwijam, podobny do GolfScript - http://sf.net/p/cjam .
Oto wyjaśnienie:
S
jest zmienną wstępnie zainicjalizowaną do spacji („”)`
generuje ciąg znaków reprezentujący ostatnią wartość - która dokładnie" "
(3 znaki),
oblicza długość łańcucha (3)'.
to kropkaE
jest zmienną wstępnie zainicjalizowaną do 14; 3, 1 i 4 są niedozwolone, ale nie mówi nic o 14 :)Podziękowania dla Doorknob za pomysł backtick
źródło
E
.PHP - 22 bajty
Dzień Pi w 1998 roku był naprawdę fajny!
źródło
n.j
jest formatem i8899e5
jest datownikiem uniksowym z 14 marca 1998 roku.,8899e5
. Będzie to poprawne raz w roku.<?=date('w.W',78e5);
1 kwietnia 1970 r. Była środa w 14 tygodniu.C, 39
Zakłada, że maszyna jest little-endian i używa standardu zmiennoprzecinkowego IEEE.
Zabawne jest to, że
"P@I@"
tak naprawdę nie jest to związane,PI
ale jest równoważne0x40494050
z reprezentacją3.144550323486328
http://ideone.com/uXVEtl
źródło
dc ,
119 bajtówz
Wciśnij aktualną głębokość stosu (0) na stosE
Naciśnij E 16 (== 14 10 )[.]
Naciśnij ciąg „.”z
Wciśnij aktualną głębokość stosu (3) na stosn
Pop 3 i wydrukuj jako numerP
Muzyka pop "." i wydrukuj jako charp
Pop 14 i wydrukuj jako numer z nową liniąWynik:
źródło
dc
jest językiem i tłumaczem, tak jak wszystkie inne języki tutaj.dc -e
jest tylko przywołaniem tego tłumacza. Równie łatwo mogłem zapisać 9-bajtowy program w pliku i uruchomićdc pi.dc
. Gdyby bajty te trzeba było policzyć, to samo musiałoby mieć zastosowanie do wszystkich innych języków. np. uwzględniajpython
we wszystkich wpisachruby golfscript.rb
w Pythonie lub we wszystkich wpisach w golfa. Uważam, że uzgodniona konwencja nie obejmuje ich, chyba że konieczne będzie przyjęcie specjalnych opcji.JavaScript ( ES5 ) 20 bajtów
Odmiana rozwiązania JS m.buettnera.
Edycja: JavaScript ( ES5 ) 18 bajtów
Odmiana pomysłu ComFreek na użycie funkcji dekodowania base64.
Edycja: JavaScript ( ES5 ) 16 bajtów
Jeśli
+
operator jednoargumentowy może rzucić ciąg na liczbę, można go zredukować do:źródło
+
tutaj jest akceptowane?Haskell, 41 bajtów
Kiedy jest dzień pi w Australii?
Edytowano, aby dodać: podobnie jak inna odpowiedź Haskella, która wyświetla ciąg znaków, podobnie jak cudzysłowy. Możesz zdobyć 33 punkty i ściśle przestrzegać zasad, ale to mniej zabawne:
źródło
p=[2.9,2.92..]!!([0,6..]!!2)
... i w tym..
wygląda źle. Ale Haskell jest silnie napisany na maszynie, a przyrost odpowiedzi, którego udzieliłem,Char
nieNum
jest i nie jest arytmetyką - rzecz, która jest rzeczywiście zabroniona. PotrzebowałbymfromEnum
przekonwertować znaki z powrotem na liczby, aby użyć ich w ten sposób. W każdym razie moje sumienie jest czyste :)Kod Morse'a, 33 bajtów
Technicznie rzecz biorąc, informacja zajmuje tylko 21 bajtów.
źródło
J -
151110 znakówSkrócił się, używając fantastycznego
i:
.Wyjaśniono:
6.28j8
- Liczba zespolona 6,28 + 8i.i:
- Tutaj dzieje się magia.i:
na liczbie zespolonej A + Bi, B ≠ 0 przyjmuje B + 1 równo oddalone punkty od przedziału [-A, A].6{
- Weź element o indeksie 6, który akurat wynosi 3,14.Wcześniej mieliśmy następujący nonsens:
Wyjaśnione przez wybuch:
źródło
|.'.'2}":22b8d5
możesz zapisać 2 znaki, wybierając liczbę, która nie wymaga cofnięcia:'.'1}":16bbc6
41X3
ponieważ wolno mi modyfikować znaki tylko przy indeksach 0 i 2.Wiersz poleceń systemu Linux, 35 bajtów
Ten jest nigdzie blisko wygranej, ale tutaj jest dla zabawy:
Wyjście (po 2 sekundach):
źródło
:;ping -t${#?} -qc2 67502862|grep -oP '.\..\d'
. To ustawia TTL na 1, więc wychodzące echo ICMP jest odrzucane przez router, zanim dotrze ono gdziekolwiek w pobliżu Internetuping -w2 67502862
. (Edytuj Ninja, ponieważ zanimGolfScript,
181312Stara wersja:
To bardzo artystyczne, tylko 3 unikalne postacie! ;)
Jak to działa:
Oto wyjaśnienie wersji 12-znakowej (o wiele bardziej interesujące, IMO):
Działa, ponieważ
n`,
jest4
, ponieważn`
jest'"\n"'
. Ta sama logika dla'.'`,
. Zamienia także zamiast tworzyć nowy ciąg znaków w celu zapisania znaku (dzięki @algorithmshark).Alternatywna wersja:
lub
Lub cokolwiek w tych ciągach, naprawdę. : P
źródło
'.'.`,\.,n`,
pracowałbyś, żeby uratować chara? Ponowne użycie'.'
przez powielanie i zamianę.Odpowiedź OP.
Mathematica,
212018To wydaje się tanie ...
lub
Zrozumiałem, jak to zrobić 18:
Haskell,
494812(48 zawiera nowy znak linii)
Uruchom go, wywołując
r
funkcję.Korzystając z metody opisanej powyżej w Mathematica, możesz wpisać to w GHCi:
Java,
8786Scala, 27
Przetłumaczone z Java, zgodnie z sugestią Score_Under . (Naprawdę nie znam Scali)
źródło
0xe
jest sprytny. Czy masz coś przeciwko, jeśli poprawię w ten sposób moją odpowiedź JS? ;)[-.86:5][5]
przypadku 11, ale pomyślałem, że to się nie liczy, ponieważ zakresy to tylko matematyka.Bash, 50
Komunikaty pomocy / błędów nie są zasobami zewnętrznymi, są wyjściem polecenia!
Jeśli cokolwiek jest naruszeniem zasad, to jest to. Wykorzystuje zbieg okoliczności, że komunikat pomocy przekazany
STDERR
przez dokładne poleceniema 314 znaków (przynajmniej na Ubuntu 13.10 z
iputils-121221
). EDYCJA: Doceniam to, że jest o wiele mniej przenośny niż się spodziewałem ...Pierwszy wiersz przyjmuje długość znaku komunikatu pomocy i zapisuje go w zmiennej.
Podobnie jak w moich innych odpowiedziach, kilka następnych wierszy otrzymuje numer 1, przyjmując status wyjścia
false
(niezbyt przenośny, ale w końcu to jest golf golfowy !), A następnie użyj tej wartości, aby wstawić kropkę dziesiętną w ostatnim wierszuWynik:
3.14
źródło
info ping6
mamchmod
nadużywającą odpowiedź na to pytanie na codegolf.stackexchange.com/a/25724/16402ping6|&wc -c|sed 's/./&./'
Bash + TeX 28 bajtów
Jeśli masz zainstalowany TeX:
Numer wersji TeXa asymetrycznie zbliża się do pi wraz z poprawą oprogramowania. W miarę upływu czasu możesz używać tej (niezgodnej) implementacji do drukowania coraz większej liczby cyfr!
Wydrukowano 3.1415926 w 2011 roku; od stycznia 2014 r. wydrukuje 3.14159265.
źródło
tex -v|grep -oP '.\..\d'
aby zapisać 4 bajty. (Regex skradziony z odpowiedzi DigitalTrauma .) W każdym razie +1, ponieważ właśnie pomyślałem o tej samej odpowiedzi.JavaScript, 20 bajtów
Użyj go w konsoli, aby wynik został wydrukowany bezpośrednio. W przeciwnym razie
alert(...)
doda kolejne 7 znaków.Podobnie jak moja inna odpowiedź, zauważyłem, że w JS jest o wiele krótszy.
Pomysł użycia
0xe
przez 14 jest wzięty ze złożenia PO za uprzejmą zgodą PO.źródło
(x='.'+0xE).length+x
Data GNU, 17 bajtów
Ten gwarantował, że zadziała tylko w tym roku, ale nie widzę żadnych ograniczeń w przepisach na ten temat ;-)
To
+
po prostu wskazuje początek specyfikatora formatudate
i nie jest dodatkiem arytmetycznym. To samo z-
, wskazując datę wejścia.Wynik:
źródło
only guaranteed to work this year
W porządku .. :)Bash, 17 bajtów
Dash, 41 bajtów
źródło
Bash
2322Powłoka (bez rozszerzenia historii) 20
źródło
seq 2 .06 5|sed -n 20p
działa również tak, jak podano w odpowiedzi Mathematica OP.sed 58!d
jest nieco krótszy.!d
zdpkg ...
którego była ostatnia komenda że wpadłem, że zaczęło sięd
. Działa dobrze,ksh
alezsh
mówi,zsh: event not found: d
więc to zdecydowanie zastępuje coś.pi.sh
i wykonaćbash pi.sh
, to będzie działać dobrze.Python, 39 lub 28
47 lub 34(Dziękuję Score_Under za tak dużo gry w golfa)
+
tutaj jest operator konkatenacji ciągu, a nie dodawanie.Kopiowanie
0xe
sztuczkę z PO, oto 28 znaków z pomocą @psalStare wersje:
źródło
print"%s.%s"%(len('aaa'),0xe)
29 bajtów. Możesz zrobić to samo z pierwszym:print"%s.%s%c"%(len('aaa'),len('a'),52)
przy 39 bajtach.%s
wciąż wymagastr
. Dzięki za podpowiedź :)print('%s,%s'%(0xE9,0xE))[2:]
print('%X.%s'%(675,0xE))[2:]
GolfScript, 8 bajtów
Ten program zawiera niedrukowalne znaki ASCII, więc nie można go tutaj wkleić bezpośrednio. Zamiast tego znaki zapytania w powyższym kodzie powinny zostać zastąpione bajtami
03
i0E
szesnastkowo.Dla wygody oto zrzut szesnastkowy aktualnego programu. Użytkownicy systemów Unix / Linux mogą uruchomić zrzut zrzutu szesnastkowego,
xxd -r
aby zrekonstruować program:Wyjaśnienie:
Pierwsze pięć bajtów programu tworzy literał łańcuchowy z pojedynczym cudzysłowem kodujący trzy znaki kodami ASCII 3, 14 i 46 (= okres ASCII).
(
odcina pierwszy znak z ciągu i wypycha swój kod ASCII (3) na stos.\
zamienia dwa górne elementy na stosie, ciągnąc łańcuch z powrotem na górę, a drugi(
odcina kolejny znak z łańcucha, ponownie wypychając swój kod ASCII (14) na stosie.Na końcu programu stos (wyłączając pusty ciąg wejściowy) wygląda zatem następująco:
Pod koniec programu domyślnym zachowaniem interpretera GolfScript jest stritowanie i drukowanie wszystkiego na stosie, uzyskując pożądany wynik.
źródło
bash - 39
Wszyscy wiemy, że kilka pierwszych cyfr Pi można obliczyć z następującego wyrażenia:
Potrzebujemy tylko 2 miejsc po przecinku, prawda?
źródło
Mathematica - 78
źródło
Perl,
1520 bajtówźródło
tr + Bash, 17 bajtów
Te
-
tutaj znaki nie są operatory arytmetyczne odejmowanie. Wskazują zasięg.Wynik:
źródło
write()
połączenie lub podobne. Pod pokrywami koniecznie będzie pewna arytmetyka, aby zapewnić zapisanie poprawnej liczby bajtów, jeśli nigdzie indziej. Myślę, że chodzi o to, aby ukryć niezbędne obliczenia arytmetyczne / bitowe.BASH, 57
To jest dłuższe niż większość odpowiedzi, ale nie ma nic złego w próbie.
daje
źródło
c=wc\ -c;echo `$c<<<..`.`$c<<<''``$c<<<...`
C, 36
źródło
main(){printf("%d\b.%d",' ',0xe);}
JavaScript - 23 bajty
Dzięki nderscore (zobacz jego komentarze)!
źródło
4
jednak;)btoa()
uda3.14
?atob('Mw')+atob('LjE0')
i 14-bajtowa „nielegalna” wersja:atob("My4xNA")
DO#
ĺ jest znakiem 314, a nie predefiniowaną zmienną lub stałą. .ToString formatuje dane wyjściowe na cyfrę, kropkę, a następnie 2 kolejne cyfry.
źródło
GolfScript,
1310Dzięki Ilmari Karonen za ulepszoną wersję!
x
iy
są znakami, których nie można wydrukować ( więcej informacji można znaleźć na stronie http://www.asciitable.com/ )ETX
iSO
, które dekodują do 3 i 14.To, co robi ten kod, powinno być całkiem jasne.
Uwaga: następująca reguła
You may not use any predefined variables/constants that your language may have as a replacement for 3, 1, and 4. (Author's discretion)
nie jest zepsuty, ponieważ znaki ASCII nie są ani zmiennymi, ani stałymi.
źródło
The digits 3, 1, and 4 may not appear anywhere in your code.
,Your program cannot require input of any kind (besides running it).
{}.*.{}.*
, aw nawiasach znajdują się odpowiednio 2 niedrukowalne znaki ( asciitable.com )ETX
iSO
{xy}.*'.'\
(10 znaków). Mój jest jednak jeszcze krótszy. ;-) Ale +1 za nauczenie mnie o{ }.*
(i{ }.%
), będę musiał pamiętać o tej sztuczce.Nowy na stronie i nie może jeszcze pisać komentarzy, więc opublikuję go tutaj. Zastanawiam się nad tym rozwiązaniem Javascript:
i ta zasada:
3.14 jest jedyną rzeczą, którą możesz wydać, nie może być częścią dłuższych / większych wyników.
Jeśli uruchomię ten kod w konsoli przeglądarki, otrzymam:
lub używając Węzła w linii poleceń:
ale jeśli uruchomię ten kod:
Dostaję:
Używając Node.js do uruchomienia pliku .js, mogę napisać:
i dostać:
źródło
console
zwykle wyświetla ciągi w cudzysłowach podczas ich wyświetlania ...+
Użyłeś, ale nie arytmetycznie, jest on używany jako konkatenator, więc to jest ważne ... Również mógłbyś to zmniejszyć, używającalert
zamiastconsole.log
... Ale poza tym wielki wysiłek. Mamy nadzieję, że Ci się spodoba tutaj ...Mathematica, 56 bajtów
Niewiele do powiedzenia. Generuję cyfry jako długości łańcuchów i łączę je.
źródło