In so wenigen Bytes wie möglich müssen Sie ein Programm schreiben, das Folgendes ausgibt:
3.14
Zur Feier eines späten Pi-Tages natürlich! :)
Regeln
Sie können es tun, wie Sie möchten, aber es gibt einige Einschränkungen.
- Sie dürfen in Ihrem Programm keine arithmetischen Operationen verwenden. Dazu gehört
+
,-
,*
,/
,%
,^
(Potenzierung), etc ... Dazu gehört auch die ( in der Regel erhöht wird++
), Erniedrigen (--
), bitweise Operationen und jeder eingebauten Funktionen , die als Ersatz wie verwendet werden könnensum()
,prod()
,mod()
,double()
,pow()
,sqrt()
,inc()
,dec()
usw ... (Autor Ermessen) - Die Ziffern
3
,1
und4
können nicht überall in Ihrem Code angezeigt. - Sie können nicht alle vordefinierten Variablen / Konstanten verwenden , die Ihre Sprache als Ersatz haben kann
3
,1
und4
. (Ermessen des Autors) - Sie können auch nicht alle trigonometrischen Funktionen wie
sin()
,cos()
,tan()
,arcsin()
,arccos()
,arctan()
,sinh()
,cosh()
,tanh()
, etc ... (Autor Ermessen) - Sie dürfen keine integrierten oder vordefinierten Werte von Pi (oder
3.14
) verwenden. Keine Webanfragen . - Ihr Programm kann keinerlei Eingaben erfordern (abgesehen davon, dass es ausgeführt wird).
3.14
ist das einzige, was Sie ausgeben können, es kann nicht Teil einer längeren / größeren Ausgabe sein.
Gewinner
Die Antwort mit der geringsten Anzahl von Bytes am 18. April gewinnt. Viel Glück!
Ich freue mich auf clevere Antworten von cleveren Köpfen! Jemand malbolge? : P
^
der Potenzierungsoperator und nicht der bitweise XOR-Operator ist.Antworten:
CJam -
86CJam ist eine neue Sprache, die ich entwickle, ähnlich wie GolfScript - http://sf.net/p/cjam .
Hier ist die Erklärung:
S
Ist eine Variable auf Leerzeichen vorinitialisiert (""),`
wird die Zeichenfolgendarstellung des letzten Wertes generiert - was genau" "
(3 Zeichen),
die Zeichenfolgenlänge berechnet (3) Ist'.
das PunktzeichenE
eine Variable auf 14 vorinitialisiert; 3, 1 und 4 sind nicht erlaubt, sagen aber nichts über 14 :)Dank an Doorknob für die Backtick-Idee
quelle
E
.PHP - 22 Bytes
Der Pi Day im Jahr 1998 war wirklich cool!
quelle
n.j
ist das Format und8899e5
der Unix-Zeitstempel vom 14. März 1998.,8899e5
. Es wird einmal im Jahr korrekt sein.<?=date('w.W',78e5);
1. April 1970 war ein Mittwoch in Woche 14.C 39
Angenommen, die Maschine ist Little-Endian und verwendet den IEEE-Gleitkommastandard.
Die lustige Tatsache ist, dass
"P@I@"
eigentlich nichts damit zu tun hat,PI
sondern gleichbedeutend0x40494050
ist mit der Darstellung von3.144550323486328
http://ideone.com/uXVEtl
quelle
Gleichstrom ,
119 Bytesz
Schieben Sie die aktuelle Stapeltiefe (0) auf den StapelE
E 16 (== 14 10 ) drücken[.]
Drücken Sie die Zeichenfolge "."z
Schieben Sie die aktuelle Stapeltiefe (3) auf den Stapeln
Pop 3 und als Nummer druckenP
Pop "." und als char druckenp
Pop 14 und als Nummer mit Zeilenvorschub druckenAusgabe:
quelle
dc
ist eine Sprache und ein Dolmetscher, genau wie alle anderen Sprachen hier.dc -e
ist nur die Anrufung dieses Dolmetschers. Ich hätte das 9-Byte-Programm genauso einfach in einer Datei speichern und ausführen könnendc pi.dc
. Wenn diese Bytes gezählt werden müssen, muss dies auch für alle anderen Sprachen gelten. zBpython
in alle Python-Einträge oderruby golfscript.rb
in alle Golfscript-Einträge aufnehmen. Ich glaube, dass die hier vereinbarte Konvention diese nicht beinhaltet, es sei denn, spezielle Optionen müssen verabschiedet werden.JavaScript ( ES5 ) 20 Byte
Eine Variation der JS-Lösung von m.buettner.
Bearbeiten: JavaScript ( ES5 ) 18 Bytes
Eine Variation der Idee von ComFreek, die Base64-Dekodierungsfunktion zu verwenden.
Bearbeiten: Javascript ( ES5 ) 16 Bytes
Wenn der unäre
+
Operator eine Zeichenkette in eine Zahl umwandeln darf, kann dies reduziert werden auf:quelle
+
hier akzeptiert?Haskell, 41 Bytes
Wann ist Pi Day in Australien?
Bearbeitet, um hinzuzufügen: Wie die andere Haskell-Antwort, die eine Zeichenfolge ausgibt, hat auch diese Anführungszeichen. Sie können 33 Punkte erzielen und sich strikt an die Regeln halten, aber es macht weniger Spaß:
quelle
p=[2.9,2.92..]!!([0,6..]!!2)
... und in dieser..
sieht es falsch aus. Aber Haskell ist stark getippt und das Inkrement in der Antwort, die ich gegeben habe, istChar
nichtNum
und nicht arithmetisch - das, was eigentlich verboten ist. Ich brauche einefromEnum
, um die Zeichen wieder in Zahlen umzuwandeln, damit ich sie so verwenden kann. Wie auch immer, mein Gewissen ist klar :)Morsecode, 33 Bytes
Technisch gesehen dauert die Information nur 21 Bytes.
quelle
J -
151110 charMit dem Fantastischen kürzer gemacht
i:
.Erklärt:
6.28j8
- Die komplexe Zahl 6,28 + 8i.i:
- Hier passiert die Magie.i:
auf einer komplexen Zahl A + Bi nimmt B ≠ 0 B + 1 gleich beabstandete Punkte aus dem Intervall [-A, A].6{
- Nehmen Sie das Element am Index 6, der gerade 3.14 ist.Zuvor hatten wir den folgenden Unsinn:
Erklärt durch Explosion:
quelle
|.'.'2}":22b8d5
können Sie 2 Zeichen speichern, indem Sie eine Zahl auswählen, für die keine Umkehrung erforderlich ist:'.'1}":16bbc6
41X3
da ich nur die Zeichen bei den Indizes 0 und 2 ändern darf.Linux-Befehlszeile, 35 Byte
Dieser ist bei weitem nicht zu gewinnen, aber hier ist es nur zum Spaß:
Ausgabe (nach 2 Sekunden):
quelle
:;ping -t${#?} -qc2 67502862|grep -oP '.\..\d'
. Dies setzt die TTL auf 1, so dass das ausgehende ICMP-Echo von Ihrem Router verworfen wird, bevor es jemals in die Nähe des Internets gelangtping -w2 67502862
. (Ninja bearbeiten, weil, bevor ich w1 beriet, fast die Regeln gebrochen.)GolfScript,
181312Alte Version:
Es ist sehr künstlerisch, nur 3 einzigartige Charaktere! ;)
Wie es funktioniert:
Hier ist eine Erklärung der 12-Zeichen-Version (viel interessanter, IMO):
Es funktioniert, weil es
n`,
ist4
, seit esn`
ist'"\n"'
. Gleiche Logik für'.'`,
. Es wird auch ausgetauscht, anstatt einen neuen String zu erstellen, um ein Zeichen zu speichern (danke @algorithmshark).Alternative Version:
oder
Oder irgendetwas in diesen Streichern. : P
quelle
'.'.`,\.,n`,
funktionieren, um einen Char zu retten? Wiederverwenden'.'
durch Duplizieren und Austauschen.OP's Antwort.
Mathematica,
212018Das fühlt sich billig an ...
oder
Fand heraus, wie man es macht 18:
Haskell,
494812(48 enthält das neue Zeilenzeichen)
Führen Sie es aus, indem Sie die
r
Funktion aufrufen .Mit der oben beschriebenen Methode von Mathematica können Sie Folgendes in GHCi eingeben:
Java,
8786Scala, 27
Übersetzt aus Java wie von Score_Under vorgeschlagen . (Ich kenne Scala nicht wirklich)
quelle
0xe
ist schlau. Stört es Sie, wenn ich meine JS-Antwort damit verbessere? ;)[-.86:5][5]
in 11, aber ich dachte , es zählt nicht, da Bereiche nur Mathe sind.Bash, 50
Hilfe- / Fehlermeldungen sind keine externen Ressourcen, sondern eine Befehlsausgabe!
Wenn irgendetwas Regelmissbrauch ist, dann ist es das. Es wird der Zufall verwendet, den die Hilfemeldung
STDERR
durch den genauen Befehl erhältist 314 Zeichen lang (zumindest unter Ubuntu 13.10 mit
iputils-121221
). EDIT: Ich schätze, dass dies viel weniger portabel ist als ich erwartet hatte ...Die erste Zeile nimmt die Zeichenlänge der Hilfemeldung und speichert sie in einer Variablen.
Wie in meinen anderen Antworten erhalten die nächsten Zeilen die Nummer 1, indem Sie den Ausgangsstatus
false
(nicht sehr portabel, aber das ist doch Code-Golf !) Annehmen und dann diesen Wert verwenden, um einen Dezimalpunkt in die letzte Zeile einzufügenAusgabe:
3.14
quelle
info ping6
ich iputils-121221chmod
Sieh dir auch meine missbräuchliche Antwort auf diese Frage an: codegolf.stackexchange.com/a/25724/16402ping6|&wc -c|sed 's/./&./'
Bash + TeX 28 Bytes
Wenn Sie TeX installiert haben:
Die Versionsnummer von TeX nähert sich asymptotisch pi, wenn sich die Software verbessert. Im Laufe der Zeit können Sie diese (fehlerhafte) Implementierung verwenden, um immer mehr Ziffern zu drucken!
Dies druckte 3.1415926 im Jahr 2011; Ab Januar 2014 wird 3.14159265 gedruckt.
quelle
tex -v|grep -oP '.\..\d'
4 Bytes speichern. (Regex wurde aus der Antwort von DigitalTrauma gestohlen .) Wie auch immer, +1, weil ich mir gerade die gleiche Antwort überlegt habe.JavaScript, 20 Bytes
Verwenden Sie es in einer Konsole, damit das Ergebnis direkt gedruckt wird. Andernfalls
alert(...)
werden weitere 7 Zeichen hinzugefügt.Wie meine andere Antwort bemerkte ich nur, dass es in JS viel kürzer ist.
Die Idee,
0xe
für 14 zu verwenden, stammt aus der Einreichung des OP mit freundlicher Genehmigung des OP.quelle
(x='.'+0xE).length+x
GNU-Datum, 17 Bytes
Dieser hat dieses Jahr garantiert nur funktioniert, aber ich sehe keine Einschränkung in den Regeln darüber ;-)
Das
+
is gibt lediglich den Beginn des Formatspezifizierers für andate
und ist keine arithmetische Addition. Gleiches gilt für das-
, das das Eingabedatum anzeigt.Ausgabe:
quelle
only guaranteed to work this year
Es ist in Ordnung .. :)Bash, 17 Bytes
Strich, 41 Bytes
quelle
Bash
2322Shell (ohne Historienerweiterung) 20
quelle
seq 2 .06 5|sed -n 20p
funktioniert auch wie in der Mathematica-Antwort von OP angegeben.sed 58!d
ist etwas kürzer.!d
mitdpkg ...
dem der letzte Befehl ausgeführt wurde, mit dem ich begannd
. Funktioniert gut inksh
aberzsh
sagt ,zsh: event not found: d
so dass auf jeden Fall ist für etwas ersetzt zu werden .pi.sh
und ausführenbash pi.sh
, funktioniert es einwandfrei.Python, 39 oder 28,
47 oder 34(Vielen Dank Score_Under, dass Sie so viel Golf gespielt haben.)
+
Hier ist der Operator für die Verkettung von Zeichenfolgen, nicht die Addition.Kopieren Sie den
0xe
Trick aus dem OP, hier sind 28 Zeichen mit Hilfe von @psalAlte Versionen:
quelle
print"%s.%s"%(len('aaa'),0xe)
bei 29 Bytes. Sie können dasselbe auch für das erste tun:print"%s.%s%c"%(len('aaa'),len('a'),52)
bei 39 Bytes.%s
noch benötigtstr
. Danke für den Tipp :)print('%s,%s'%(0xE9,0xE))[2:]
print('%X.%s'%(675,0xE))[2:]
GolfScript, 8 Bytes
Dieses Programm enthält nicht druckbare ASCII-Zeichen, daher kann es hier nicht direkt eingefügt werden. Stattdessen sollten die Fragezeichen im obigen Code durch die Bytes
03
und0E
hexadezimal ersetzt werden.Der Einfachheit halber hier ein Hex-Dump des aktuellen Programms. Unix / Linux-Benutzer können diesen Hex-Dump ausführen,
xxd -r
um das Programm zu rekonstruieren:Erläuterung:
Die ersten fünf Bytes des Programms bilden ein String-Literal in Anführungszeichen, das die drei Zeichen mit den ASCII-Codes 3, 14 und 46 (= ASCII-Periode) codiert.
(
schneidet das erste Zeichen von der Zeichenkette ab und schiebt seinen ASCII-Code (3) auf den Stapel.\
Vertauscht die beiden obersten Elemente auf dem Stapel, zieht die Zeichenfolge nach oben zurück, und die zweite(
schneidet ein anderes Zeichen von der Zeichenfolge ab und drückt erneut den ASCII-Code (14) auf den Stapel.Am Ende des Programms sieht der Stack (ohne die leere Eingabezeichenfolge) daher folgendermaßen aus:
Am Ende des Programms besteht das Standardverhalten des GolfScript-Interpreters darin, alles auf dem Stapel zu stringifizieren und zu drucken, um die gewünschte Ausgabe zu erzielen.
quelle
Bash - 39
Wir alle wissen, dass die ersten Stellen von Pi aus der folgenden Anweisung berechnet werden können:
Wir brauchen nur 2 Nachkommastellen, oder?
quelle
Mathematica - 78
quelle
Perl,
15 bis20 Bytesquelle
tr + Bash, 17 Bytes
Die
-
Zeichen hier sind keine arithmetischen Subtraktionsoperatoren. Sie geben die Reichweite an.Ausgabe:
quelle
write()
Anruf oder ähnlichem ausarten . Es wird zwangsläufig ein wenig arithmetisch sein, um sicherzustellen, dass die richtige Anzahl von Bytes geschrieben wird, wenn nirgendwo anders. Ich denke, der Punkt der Frage ist , die notwendigen arithmetischen / bitweisen Berechnungen zu verbergen.Bash, 57
Dies ist länger als die meisten Antworten, aber es ist nichts Schlimmes daran, es zu versuchen.
gibt
quelle
c=wc\ -c;echo `$c<<<..`.`$c<<<''``$c<<<...`
C, 36
quelle
main(){printf("%d\b.%d",' ',0xe);}
JavaScript - 23 Byte
Danke an nderscore (siehe seine Kommentare)!
quelle
4
zwar;)btoa()
es3.14
irgendwie klappen?atob('Mw')+atob('LjE0')
und 14 byte "illegal" version:atob("My4xNA")
C #
ĺ ist das Zeichen 314, keine vordefinierte Variable oder Konstante. Die .ToString-Datei formatiert die Ausgabe in eine Ziffer, einen Punkt und zwei weitere Ziffern.
quelle
GolfScript,
1310Danke an Ilmari Karonen für die verbesserte Version!
x
undy
sind nicht druckbare Zeichen (siehe http://www.asciitable.com/ für weitere Informationen) verbunden sindETX
undSO
, die 3 und 14 dekodieren.Was dieser Code tut, sollte ziemlich klar sein.
Hinweis: Die folgende Regel
You may not use any predefined variables/constants that your language may have as a replacement for 3, 1, and 4. (Author's discretion)
ist nicht fehlerhaft, da ASCII-Zeichen weder Variablen noch Konstanten sind.
quelle
The digits 3, 1, and 4 may not appear anywhere in your code.
,Your program cannot require input of any kind (besides running it).
{}.*.{}.*
und in den eckigen Klammern stehen jeweils 2 nicht druckbare Zeichen ( asciitable.com )ETX
undSO
{xy}.*'.'\
(10 Zeichen) verkürzen . Meins ist aber immer noch kürzer. ;-) Aber +1, um mir{ }.*
(und{ }.%
) beizubringen , muss ich diesen Trick im Hinterkopf behalten.Neu auf der Seite und kann noch keine Kommentare schreiben. Ich werde sie hier posten. Fragen Sie sich nur über diese Javascript-Lösung:
und diese Regel:
3.14 ist das einzige, was Sie ausgeben können. Es kann nicht Teil einer längeren / größeren Ausgabe sein.
Wenn ich diesen Code in meiner Browserkonsole ausführe, erhalte ich:
oder mit Node in der Kommandozeile:
aber wenn ich diesen Code ausführe:
Ich bekomme:
Unter Verwendung von Node.js zum Ausführen einer .js-Datei kann ich schreiben:
und bekomme:
quelle
console
Zeichenfolgen bei der Anzeige in Anführungszeichen gesetzt werden ... Sie haben sie verwendet,+
aber nicht arithmetisch, sie werden als Verkettung verwendet, das ist also gültig ... Auch du hättest es kleiner machen können,alert
anstattconsole.log
... Aber ansonsten großer Aufwand. Wir hoffen es gefällt euch hier ...Mathematica, 56 Bytes
Nicht viel zu sagen. Ich generiere die Ziffern als Zeichenkettenlängen und verkette sie.
quelle