Als großer Fan der Lost-TV-Serie war ich immer fasziniert von der Zahlenfolge, die in den Folgen immer wieder vorkommt. Diese Zahlen sind:
( A104101 )
Schreiben Sie in einer beliebigen Programmiersprache einen Code, der diese Zahlen ausgibt.
Wertung:
Kürzeste Antwort gewinnt
Die Ausgabe darf keine anderen Zahlen oder Buchstaben enthalten. Sie können ein beliebiges anderes Zeichen als Trennzeichen oder gar kein Trennzeichen verwenden.
Sie können keine Ziffern derselben Nummer trennen. ist eine gültige Antwort, jedoch nicht.
Sie müssen die Reihenfolge einhalten.
Wenn Ihr Code keine der Zahlen aus der Sequenz enthält, reduzieren Sie Ihre Punktzahl um 30%. Mit dieser Regel können Sie die Ziffern getrennt eingeben. Z.B:
abcde1fg5h
Ist ein gültiger Kandidat, da die Antwort nicht die Nummer , sondern nur die Ziffern enthält. Bei oder wird der Bonus jedoch ungültig.
Wenn der Code überhaupt keine Ziffer enthält, reduzieren Sie Ihre Punktzahl um 50%. Andere Zeichen wie , oder ³ sind für diesen Bonus weiterhin gültig.
quelle
restricted-source
Tag, das hier verwendet werden könnte: Obwohl die meisten Antworten offensichtliche Lösungen vermeiden, wäre die Herausforderung meiner Meinung nach etwas interessanter gewesen, wenn die Verwendung von Ziffern insgesamt verboten gewesen wäre.Antworten:
Verloren ,
2927/2 = 13,5 BytesProbieren Sie es online! oder überprüfen Sie, ob es deterministisch ist
Schien die richtige Sprache zu verwenden.
Erläuterung:
Lost ist eine 2D-Sprache, bei der der Zeiger überall beginnt und in eine beliebige Richtung zeigt. Dies führt im Allgemeinen zu einer Vielzahl von Überprüfungen, ob der Zeiger nicht zu früh in einen Abschnitt eingetreten ist.
quelle
Jelly , 7/2 = 3,5 Bytes
Druckt die Zahlen ohne Trennzeichen, dh die Ganzzahl .4815162342
Probieren Sie es online!
Wie es funktioniert
“ƲÞIȥ’
ist ein bijektives Basis-250-Integer-Literal.Ʋ
,Þ
,I
, Undȥ
hat (Basis 1) Indizes , , und in Jelly der Codeseite, so dass sie der ganzen Zahl kodieren .Schließlich wird2⋅2407581171=4815162342
Ḥ
die ganze Zahl verdoppelt (nicht halbiert), was .Eine Verdopplung ist notwendig, da die Codierung der Ausgabe direkt zu führt
“¡9)Ƙ[’
, die eine Ziffer enthält.quelle
Neim ,
65 Bytes,32,5 PunkteErläuterung:
Probieren Sie es online!
quelle
05AB1E , Score:
1097 Bytes / 2 = 3,5Probieren Sie es online aus.
Oder 7 Bytes Alternative :
Probieren Sie es online aus.
Beide geben die ganze Zahl aus
4815162342
.Erläuterung:
Sehen Sie diese 05AB1E Spitze Mine (Abschnitt Wie große natürliche Zahlen zu komprimieren? ) Zu verstehen , warum
•‘o]Ê•
ist2407581171
und•’µ[%•
ist2432615184
.Alte 9 Bytes beantworten die Ausgabe der Liste
[4,8,15,16,23,42]
:-1 Byte (und damit -0,5 Punkte) dank @Emigna .
Länger als die andere 05AB1E-Antwort , aber dies gibt die Liste
[4,8,15,16,23,42]
anstelle der Ganzzahl aus4815162342
.Probieren Sie es online aus.
Erläuterung:
Sehen Sie sich meinen Tipp zu 05AB1E an (Abschnitte Wie komprimiere ich große Ganzzahlen? Und Wie komprimiere ich Ganzzahlenlisten? ) , Um zu verstehen, warum
•ΓƒÇ²•
ist1301916192
und•ΓƒÇ²•50в
ist[4,8,15,16,23,42]
.quelle
•ΓƒÇ²•т;в
für 4,5 haben, da Nachskript-Nummern für den Bonus in Ordnung sind.JavaScript (ES7), 34/2 = 17 Byte
Probieren Sie es online!
Dies decodiert und wertet den Ausdruck aus
"65058101+41**6"
, der keine Ziffer enthält, die einmal in base-64 codiert wurde.JavaScript (ES6), 13 Byte
Langweilige offensichtliche Lösung.
Probieren Sie es online!
quelle
Python 3 , 25 Bytes, 12,5 Punkte
Probieren Sie es online!
𩦦 (, ⿰ ⿰ 馬 葬, 𧨦 (, 謚 ⿰ 言 ⿱⿵ 八一) kosten 4 Bytes, aber U + 0657 kosten nur 2 Bytes ...
Python 3 , 29 Bytes, 14,5 Punkte
Probieren Sie es online!
𩦦 𩦦 (⿰ 馬 葬 ist eine Variante von., Was "schmutzig" bedeutet. 湡 ist der Name eines Flusses. Und sie haben nichts mit dieser Frage zu tun, wie ich wusste.
quelle
4815 162342
gültig ist. Soprint(*map(ord,'ዏ𧨦'))
spart 1,5 Punkte :) (print(*map(ord,'밗'))
würde zwei Punkte sparen , sondern wird als ungültig festgelegt wurde).Brain-Flak , 52/2 == 26 Bytes
Probieren Sie es online!
quelle
Java 8, Score:
1211,9 (70% von 17 Bytes)-0,1 Punkte dank @RickHitchcock .
Probieren Sie es online aus.
Erläuterung:
Alte Antwort mit einem Score von: 12 (50% von 24 Bytes):
Enthält ein nicht druckbares Zeichen
0x1B
.Probieren Sie es online aus.
Erläuterung:
In Java können Zeichen automatisch mit Ganzzahlen verknüpft werden, die ihren Unicode-Wert enthalten. Leider ist die maximal unterstützte Unicode für Zeichen
65,535
, so dass ich nicht nur zwei Zeichen zu vermehren können (da die beiden größten Zahlen , die die erwartete teilen4,815,162,342
sind56,802
und84,771
, wo die84,771
leider das Maximum überschreitet65,535
.Da darüber hinaus die maximale Größe ein
int
ist 32 2 -1 (2,147,483,647
) und das Ergebnis4,815,162,342
ist größer als das, eine explizite Umwandlung inlong
, die bis zu 64 2 -1 (9,223,372,036,854,775,807
) enthalten kann, ist erforderlich.Langweilige Antwort wäre 14 Bytes ohne Boni gewesen:
Probieren Sie es online aus.
quelle
long
und keine sehr großen Unicode-Zeichen unterstützt. Ohne die beiden genannten Einschränkungenv->'𩦦'*'湡'
wären lediglich (15 Byte, Punktzahl 7,5) ausreichend gewesen. Aber es ist immer noch sehr kurz. :) Obwohl Java meist viele, viele Schwächen in Bezug auf Codegolf hat (duhh ..), ist das Rechnen mit Zeichen, weil wir keine Ziffern verwenden dürfen, eine der wenigen Stärken. War auch ziemlich nützlich in dieser ziemlich ähnlichen Antwort von mir .v->767*6277917L+3
R, 18 × 0,7 = 12,6 Punkte
Ziemlich selbsterklärend, rechnet nur unter Vermeidung der fraglichen Zahlen.
quelle
7 , 10 Bytes, 27 Zeichen
Probieren Sie es online!
Die gepackte Darstellung dieses Programms auf der Festplatte ist (
xxd
Format):Erläuterung
Wir haben diese Zahlenfolge bereits in Automate Saving the World gesehen , in dem es darum ging, die Zahlen in regelmäßigen Abständen zu drucken, was es interessant macht, eine sehr alte Sprache zu verwenden. Viel neuere Sprachen können jedoch ihre eigenen Wendungen haben, die diese Herausforderung interessant machen. (Ja, dieser Absatz und in der Tat der Grund, warum ich diese Antwort geschrieben habe, ist effektiv nur ein Weg, um alle damit verbundenen Herausforderungen in der Seitenleiste zusammen zu bringen. Normalerweise machen die Leute das mit Kommentaren, aber ich habe nicht genug Repräsentanten .)
Als erstes ist zu beachten, dass 7 vollständig aus Ziffern besteht, so dass es unwahrscheinlich ist, dass die Boni hier verwendet werden (obwohl, wenn Sie das Programm als eine Folge von Oktetten betrachten, keine der beiden ASCII-Darstellungen einer der ursprünglichen Zahlen entspricht) , so könnten Sie den Bonus in diesem Sinne beanspruchen). Als nächstes ist zu beachten, dass 7 Befehle zum Wiederherstellen der Befehlssequenz enthält, die wahrscheinlich ein bestimmtes Datenelement erzeugt hat. Könnten wir also die verlorenen Zahlen möglicherweise
4815162342
als Teil eines 7-Programms interpretieren ?Die Antwort lautet "nicht ganz". Der problematischste Teil ist die zweite Zahl
8
. 7 Programme sind oktal geschrieben; Es gibt keine Zahl wie 8. Der Anfang der Zeichenfolge muss also anders gedruckt werden.Die Basis des Programms basiert daher auf dem Programm 7 "Hallo Welt":
mit dem maskierten Literal in einer domänenspezifischen Sprache, die wie folgt interpretiert wird:
Danach folgt ein zusätzliches
3
Element, das das verbleibende Stapelelement ausgibt (und aufgrund eines unzureichenden verbleibenden Stapels beendet wird). Dieses Element wird zu Beginn des Programms angegeben. Um zu vermeiden, dass das Element nicht übereinstimmt6
(was ein bisschen wie eine schließende Klammer funktioniert), generieren wir es mit Code, anstatt es direkt als Daten zu schreiben. (Beachten Sie, dass es7
zu Beginn des Programms zwei implizite Zeichen gibt , die hier relevant sind):Das ergibt das folgende Literal:
das wird ausgedruckt.
quelle
:(
05AB1E , 6 * 0,7 = 4,2 Bytes
Probieren Sie es online!
Gibt die Zahl aus, die von base-255 nicht komprimiert wurde
quelle
MASM 8088 Assembly-Quelle (93 Byte - 50%) = 46,5 Byte
Verwenden Sie keine Zahlen oder die Reihenfolge in der Quelle:
Ausgabe:
quelle
Kohle , 13 Bytes / 2 = 6,5
Probieren Sie es online! Link ist eine ausführliche Version des Codes. Subtrahiert die ASCII-Codes der Zeichenfolge
TPIHA.
von 88 und wandelt sie in Zeichenfolge um.quelle
Aheui (Esotop) , 45 Bytes (15 Zeichen) * 0,5 = 22,5 Punkte
Probieren Sie es online!
Erläuterung:
Siehe dies auch; Aheui Referenz ( Englisch )
Beachten Sie, dass ㅁ (Druckanweisung) den Cursor in umgekehrter Richtung bewegt, wenn der Stapel (oder die Warteschlange) leer ist.
quelle
Perl 5 , 16 Bytes - 30% = 11,2
Probieren Sie es online!
quelle
PowerShell , 12 Byte * 0,7 = 8,4
Probieren Sie es online!
"Port" von Xcalis Antwort , um eine bessere PowerShell-Antwort zu erhalten.
quelle
JavaScript, 143 Bytes (nicht sicher, wie man punktet)
Probieren Sie es online!
Beginnen Sie mit
4
Sechsern, multiplizieren Sie, addieren Sie, subtrahieren Sie, um, von4
, um die Ausgabe abzuleiten.quelle
4
mit Addition, Subtraktion, Multiplikation und dem Index der Zahl4
innerhalb eines Strings (oder Arrays) kann verwendet werden, um die erforderlichen Zahlen abzuleiten.143*0.7=100.1
PHP, 35/2 = 17,5
ein digitaler Ansatz: 40 * .7 = 28
Keine Ziffern, keine Zeichenketten: 68/2 = 34
Probieren Sie sie online aus .
quelle
<?=4815162342;
4815162342
. Oder<?=~
+ 10 nicht druckbare Dateien -> 15/2 = 7,5JavaScript (SpiderMonkey),
67 Bytes / 2 = 33,560 Bytes / 2 = 3058 Bytes / 2 = 2948 Bytes / 2 = 24-7 Bytes / 3,5 , -2 Bytes / 1 mit freundlicher Genehmigung von @JoKing, -10 Bytes / 5 mit freundlicher Genehmigung von @tsh
Probieren Sie es online!
quelle
print(a=-~-~-~-~[],a+=a,b=a+~-a,a+a,a+b,--b+b+b)
print(4815162342)
für 17 BytesAPL (Dyalog Unicode), 18/2 = 9 Bytes
Nur langweilige alte Zeichenmultiplikation.
Probieren Sie es online!
quelle
JavaScript (ES6), 16 * 0,7 = 11,2 Byte
Gibt die Ziffern ohne Begrenzer aus.
Probieren Sie es online!
quelle
Leerzeichen , Punktzahl:
4941 Bytes / 2 = 20,5Buchstaben
S
(Leerzeichen),T
(Tabulator) undN
(Zeilenumbruch) werden nur als Hervorhebungen hinzugefügt.[..._some_action]
nur als Erklärung hinzugefügt.Probieren Sie es online aus (nur mit Leerzeichen, Tabulatoren und Zeilenumbrüchen).
Pseudocode:
Erläuterung:
In Leerzeichen wird eine Zahl wie folgt verschoben:
S
: Stack-Manipulation aktivierenS
: Nummer drückenS
/T
: Positiv / negativT
/S
gefolgt von einer einzelnenN
: Dezimalzahl als Binärzahl, wobeiT
1 undS
0 istDanach wird es einfach gedruckt mit
TNST
:TN
: I / O aktivierenS
: Gibt den oberen Teil des Stapels ausT
: Als Nummerquelle
F #, 45 Bytes = 22,5 Punkte
Nur eine gewöhnliche
for
Schleife, die die Ziffern druckt:Das obige ist ein vollständiges Programm, das in eine ausführbare Datei kompiliert werden kann.
In einer REPL (Read-Eval-Print-Schleife), z. B. FSI (F # Interactive), funktioniert die folgende kürzere Version, da die REPL eine Darstellung des ausgewerteten Ausdrucks ausgibt. es hat 35 Bytes = 17,5 Punkte:
quelle
Pyke , 3 Punkte
Probieren Sie es hier aus!
Das erste Byte gibt an, dass die Basis 128 eingelesen werden soll, bis ein Byte ohne das hohe Bit gesetzt ist.
Schließlich werden 32 vom Ergebnis abgezogen (aus historischen Gründen).
Dies ermöglicht die Erzeugung großer Stückzahlen auf kleinstem Raum
quelle
MathGolf , 7 Bytes * 0,5 = 3,5
Probieren Sie es online!
Erläuterung
Beachten Sie, dass dieser Code auf TIO noch nicht funktioniert. Ich habe kürzlich einige Änderungen an MathGolf vorgenommen, einschließlich des Hinzufügens des
$
Operators. Sobald es zu TIO gezogen wird, können Sie es dort ausführen. Ich werde dann ein Update für diese Antwort vornehmen. Es läuft perfekt im TerminalIch nutze die Tatsache, dass MathGolf 1-Byte-Literale zum Erstellen von Zeichenfolgen mit einer Länge von bis zu 4 hat. Wenn ich die gesamte Zahl von einer Basis-256-Zeichenfolge konvertieren wollte, hätte ich zwei verwenden müssen
"
, und die Zeichenfolge wäre 5 gewesen Zeichen. Auf diese Weise spare ich 2 Bytes, aber ich verliere ein Byte, indem ich am Ende den Verdopplungsoperator habe.quelle
Python 3 34 Punkte
quelle
Python 3 ,
44381918,5 Bytes-6 Bytes dank @Jo King
-50% Bytes dank @ouflak für den Hinweis auf den 50% Bonus
-1 Bytes dank @Dennis
Probieren Sie es online!
quelle
Japt,
109 Bytes / 2 = 4,5Probier es aus
quelle
Befunge-98 (FBBI) , 15 Bytes / 2 = 7,5 Punkte
Probieren Sie es online!
Erläuterung:
quelle
Runenverzauberungen , 15/2 = 7.5
Probieren Sie es online!
Codiert die Werte einfach in so wenigen Bytes wie möglich.
42
,16
,15
,8
, Und4
, nötigt sie numerische Werte und druckt sie in umgekehrter Reihenfolge.4 8 15 16 42
ohne Leerzeichen, wie48151642
ein akzeptables Ausgabeformat.4
und8
konnte nicht kombiniert werden (48
), da dies eine Zahl ist0
und nicht verwendet werden durfte. Es ist möglich, 15, 16 und 42 zu 2 Zeichen (anstelle von 3)ʂ
auf Kosten von +1 Byte zu kombinieren , was sich nicht gelohnt hat.quelle