2016 Time Capsule String: Steige auf die Integer-Leiter


28

Verwendung der 74 Zeichen aus der 2016er Zeitkapsel-Zeichenfolge

H@~*^)$.`~+1A|Q)p~`\Z!IQ~e:O.~@``#|9@)Tf\eT`=(!``|`~!y!`) Q~$x.4|m4~~&!L{%

Schreiben Sie N Code-Schnipsel in derselben Sprache, wobei:

  • Das erste Snippet wird ausgegeben 1.
  • Das 2. Snippet wird ausgegeben 2.
  • Das 3. Snippet gibt aus 3.
  • ... etc. ...
  • Das N-te Snippet wird ausgegeben N(die Nummer, nicht der Buchstabe).

Ein "Code-Snippet" ist wie folgt definiert:

  • Ein vollständiges Programm ohne Eingabe, das die Nummer normal ausgibt .
  • Eine Funktion ohne erforderliche Argumente, die die Nummer normal ausgibt / zurückgibt .
  • Ein REPL- Ausdruck, der als Zahl ausgewertet wird.

(Sie können diese drei Varianten in Ihren N-Ausschnitten mischen und zuordnen.)

Die Zeichen, die Sie in der kombinierten Menge von N Ausschnitten verwenden dürfen, sind genau die 74 Zeichen der Zeitkapsel plus floor(N/2) zusätzliche "Platzhalter" -Bytes , die Sie überall verwenden können.

Beispielsweise enthält die Zeitkapsel drei @, sodass in der Gesamtheit Ihrer N Ausschnitte möglicherweise nur bis zu drei @vorhanden sind, es sei denn, Sie möchten einige Ihrer floor(N/2)Platzhalterbytes für zusätzliche verwenden @.

Ohne Platzhalterzeichen muss der kombinierte Zeichensatz in Ihren N Ausschnitten eine Teilmenge der 74 Zeitkapselzeichen sein. Ihre kombinierte Länge darf 74 nicht überschreiten. Sie dürfen Zeitkapselzeichen oder Platzhalterbytes zwischen Ausschnitten nicht wiederverwenden.

Anmerkungen

  • Es gibt keine weiteren Beschränkungen hinsichtlich der Länge von Snippets oder der Anzahl der Platzhalter, die pro Snippet verwendet werden dürfen.

  • Sie müssen alle Ausschnitte für 1 bis N schreiben . Es ist nicht 0 bis N-1, nicht k bis N + k-1.

  • Die Snippets müssen einzeln sein, nicht ein Snippet, das die Liste ausgibt 1, 2, 3, ..., N.

  • Ausgaben können Floats sein wie 3.0anstelle von 3und Sie können eine andere Basis als Dezimal verwenden, wenn es die natürliche Basis Ihrer Sprache ist . Sie müssen für alle Snippets dieselbe Basis verwenden.

  • Die Platzhalter werden in der Codierung Ihrer Sprache als Byte gezählt . Dies wird wahrscheinlich ASCII sein, aber wenn z. B. ein Byte in Ihrer Codierung zählt, können Sie es als ein einzelnes Platzhalterbyte verwenden.

  • Sie können Platzhalterbytes für Multibyte-Zeichen verwenden. ZB sind es normalerweise drei Bytes, so dass Sie es in einem Snippet verwenden können, aber es kostet drei Ihrer floor(N/2)Platzhalter-Bytes.

  • Zeilenumbrüche wie \r\nkönnen als ein Byte angesehen werden.

Beispiel

In Python ist N = 4 nur mit der REPL möglich. Es gibt floor(4/2) = 2Platzhalter.

  1. 1Aus der Zeit Kapsel ist ein Ausdruck, der zu auswertet 1.

  2. 2besteht aus einem einzelnen Platzhalter, nämlich dem 2. Evals zu 2.

  3. 3besteht ebenfalls aus einem einzelnen Platzhalter. Evals zu 3. Keine Platzhalter mehr.

  4. 4ist zum glück in der zeit kapsel und es fällt auf 4.

Diese Schnipsel sind kurz und trivial. Eine echte Antwort wäre wahrscheinlich viel komplexer.

(Fünf und mehr in Python sind sicherlich möglich, aber ich überlasse es den Profis.)

Wertung

Die Antwort mit den höchsten N gewinnt; dh derjenige, der die ganze Leiter am höchsten klettert.

Bei einem Gleichstand gewinnt die Antwort, bei der die wenigsten Platzhalterbytes verwendet wurden.
Falls es immer noch einen Gleichstand gibt, gewinnt die Antwort, bei der die wenigsten kumulativen Zeichen verwendet wurden.
Wenn es immer noch einen Gleichstand gibt, gewinnt die frühere Antwort.


1
Wenn eine Programmiersprache keine REPL hat, können wir trotzdem einen Ausdruck in dieser Sprache senden, wenn er den entsprechenden Wert ergibt? ( 4

1
Oh, und noch eine Frage: Behandeln wir in einer Sprache mit einer nicht ASCII-kompatiblen Codierung die Zeitkapselzeichen als Zeichen ( umsetzen in die Codierung der Sprache) oder als Bytes (schreiben eines Programms, bei dem das Programm als ASCII angezeigt wird) scheint nur aus Zeitkapselzeichen zu bestehen)? In einigen Sprachen mit seltsamen Zeichensätzen sind die meisten Zeitkapselzeichen nicht einmal im Zeichensatz enthalten, was es schwierig macht, sie so zu verwenden, wie sie sind.

1
Was ist mit führenden Nullen? Ist 07 das selbe wie 7?
Emigna

1
Es nervt mich wirklich, dass die Zeichenfolge weder enthält -noch n...
devRicher

1
Können "Snippets" in stapelbasierten Sprachen ihre Werte auf dem Stapel belassen?
FlipTack

Antworten:


10

CJam , 25 Snippets, 12 Wildcards, 64 Bytes

1
Q!)
Z
4
5
6
L``(*$)#
8
9
T!T
B
C
D
E
F
G
H
I
J
K
O`e`~~!!
B`:)
Q``$e`~~@~@=~+
Q!)4
Amf

Probieren Sie es online!

Platzhalter:

568BBCDEFGJK

Ich habe das Gefühl, dass ich schnell etwas posten muss, bevor Dennis mich überlistet.


Welche Platzhalter haben Sie verwendet?
5.

@EasterlyIrk Edit. Sie können in Dennis 'Antwort auch den Platzhalterzähler verwenden .
Jimmy23013



5

JavaScript, 10 Zahlen, 5 Platzhalter

Verbleibende Zeichen: !!#$$%&())))*...:=@@@HILOQQQTTZ\^```eefmpy{|||~~~~~~~~~

5/5 verwendete Bonuscharaktere: 37680

Programme:

  1. 1
  2. ! `` +! ``
  3. 3
  4. 4
  5. 4|!``
  6. 6
  7. 7
  8. 8
  9. 9
  10. 0xA

Ich hatte gehofft, dass eine der Saiten, die ich verwenden könnte, \xABeine Zahl sein würde, aber leider würde keine der Kombinationen, die ich versuchte, eine ergeben. Es ^wäre auch interessant, das (XOR) -Zeichen zu verwenden, aber ich sehe derzeit keine Möglichkeiten, mit denen eine ausreichend große Zahl erstellt werden kann.

Wenn Sie eine andere mögliche Kombination sehen, lassen Sie es mich in den Kommentaren wissen.

Edit: # 10 dank Arnauld hinzugefügt


1
Ich denke, Sie können hinzufügen 10. 0xA(mit 0einer neuen Wildcard für das Erreichen von 10)
Arnauld

Sie können (Q=!``)|Qfür 1 tun , um 1irgendwo ein Extra zu bekommen . Ich bin mir nicht sicher, ob das helfen wird
ETHproductions

4

Pyth, 12 Snippets, 20 Bytes (6 Wildcards)

f@

Suchen Sie die erste Zahl, bei der Wurzel (n, n) wahr ist, beginnend mit 1. Ausgabe: 1

y!H

Doppelt nicht {}. Ausgabe: 2

3

Platzhalter # 1. Ausgabe: 3

4

Ausgabe: 4.

5

Platzhalter # 2. Ausgabe: 5

6

Platzhalter # 3. Ausgabe: 6

7

Platzhalter # 4. Ausgabe: 7

8

Platzhalter # 5. Ausgabe: 8

9

Ausgabe: 9

T

Vorinitialisierte Variable. Ausgabe: 10

+T!Z

Zehn plus nicht Null. Ausgabe: 11

12

Platzhalter # 6 ( 2). Ausgabe: 12


4

Oktave, 6 Zahlen, 3 Wildcards

1: ~~I          % not(not(sqrt(-1))) evaluates to true (or 1)
2: 2            % Wildcard
3: 3            % Wildcard
4: 4
5: (T=4)+~~T    % Create a variable T=4, then add not(not(T)) which evaluates to 1.
6: 6            % Wildcard

Ich habe immer noch 1, 9und nach *links, aber ich weiß nicht , ob es mir viel helfen. Ich werde sehen, was ich damit machen kann :)

Es ist nicht einfach, viele Zahlen zu bekommen, wenn man keinen Esolang verwendet. Ich hoffe, ich kann ein oder zwei mehr bekommen, aber ich denke, es wird schwer.


2

Aufdringlich , 10 Zahlen (4 Wildcards)

All dies sind Schnipsel, die das Ergebnis auf dem Stapel belassen. Sie können dies im Online-Interpreter testen, indem Sie #an jedes Snippet etwas anhängen (um die Nummer auszudrucken).

A(      \ 1:  Get alphabet and check that 'Z' >= 'Y'. Results in 1 (True)
x&+     \ 2:  Check stack equality (True - both are empty) then duplicate and sum.
3       \ 3:  Push 3 (1 wildcard)
4       \ 4:  Push 4
1 4+    \ 5:  1 + 4 in postfix, leaves 5 on the stack (1 wildcard)
`L`T%   \ 6:  Get character code of 'L' and modulo by T (ten) - leaves 6 on the stack
7       \ 7:  Push 7 (1 wildcard)
8       \ 8:  Push 8 (1 wildcard)
9       \ 9:  Push 9
T       \ 10: Push 10

Diese Antwort ist noch nicht vollständig - obwohl es unwahrscheinlich erscheint, dass ich weiterkomme.


1

05AB1E, 12 Zahlen, 6 Platzhalter

 1:    1                                   -> 1
 2:    )O!x                                -> sum([])!*2
 3:    4L`\                                -> 2nd_last(range(1...4))
 4:    4                                   -> 4
 5:    5        # wildcard 1 = 5           -> 5
 6:    6        # wildcard 2 = 6           -> 6
 7:    Tf`~                                -> or(last2(prime_factors(10)))
 8:    8        # wildcard 3 = 8           -> 8
 9:    9                                   -> 9
10:    T                                   -> 10
11:    A`Q!T+   # wildcard 4 = T           -> (y==z)!+10
12:    TÌ       # wildcard 5,6 = T,Ì       -> 10+2

1

Hexagony , 6 Zahlen, 3 Wildcards, 23 Bytes

1!@
))!@
)|\@$!
4!%
4)!:
6!@

Probieren Sie es online!

Das gesamte sechste Programm besteht aus Platzhaltern.

Das einzig wirklich Interessante ist 3. Während ich das so machen könnte 4(!@, würde mich das ohne weiteres 4generieren lassen 5, also ging ich stattdessen so vor:

 ) |
\ @ $
 ! .

Aufgrund der |wird die )in der ersten Zeile zweimal ausgeführt, bevor die IP zur rechten Ecke umgebrochen wird. $überspringt die @und \leitet die IP dann )ein drittes Mal weiter. Die IP-Adresse wird in die linke untere Ecke !umgebrochen, 3und gedruckt@ beendet das Programm.

Ich denke nicht, dass mehr als 6 Schnipsel möglich sind, da es nur 5 Druckbefehle ( !!!!!) und 5 Befehle gibt, mit denen das Programm beendet werden kann ( @@@%:). Nach dem fünften Snippet benötigen wir also mindestens zwei Platzhalter pro Snippet. Selbst wenn ich es schaffte, 6ohne Platzhalterzeichen auszukommen, gab es nicht mehr genügend Platzhalterzeichen, um zu Snippet sieben zu gelangen.


1

JavaScript, 8 Zahlen, 4 Platzhalter

 1: 1
 2: -~!``
 3: 4+~!$
 4: ~!``*~!``
 5: 4|!$
 6: 0xf^9
 7: 7
 8: 8

Vielleicht versuche ich es später noch einmal - ich verschwende die Zeichen auf 2 und 6, wenn Sie es wissen.


0

Befunge-98, 4 Snippets, 18 Bytes, 2 Wildcards

!.@
!:+.@
41-.@    wildcard 1 = -
4.#A9H   wildcard 2 = .

Zeichen übrig: !!!$$%&())))*=ILOQQQTTZ\^`````````eefmpxy{||||~~~~~~~~~

Ich bezweifle, dass mehr möglich ist, da jedes zusätzliche Programm eine Ausgabeform erfordert, und das alles ., bereits verbraucht sind. Wenn ich einen Weg finden kann, 3 und 5 ohne Platzhalter zu machen, dann ist es möglich.

Das letzte Programm wird schließlich aufgrund des Auffüllens des Stapels beendet. Aund Hwenn keine Fingerabdrücke geladen sind, werden diese reflektiert und das Programm drückt weiterhin die 9er.


Ich denke nicht, dass der letzte gültig ist. Sofern die Aufforderung nichts anderes angibt, müssen Programme beendet werden.
Martin Ender

Sie können jedoch einfach mit kündigen %.
Martin Ender

@MartinEnder 00%ist gültig in Befunge-98 und ergibt 0 (oder fragt den Benutzer nach dem Ergebnis in Befunge-93.
PurkkaKoodari

@MartinEnder Außerdem wird das letzte Programm unter der Annahme eines endlichen Speichers irgendwann beendet. In der Funge-98-Spezifikation wird erwähnt, dass {bei Speichermangel eine Umkehr möglich ist. Über normales Pushen wird nichts gesagt, und alle Interpreter scheinen bei OOM zu versagen, aber in der Sprachspezifikation werden klarerweise Speicherbeschränkungen berücksichtigt.
PurkkaKoodari

Ich denke, dass dies aufgrund der Anwesenheit des pCharakters möglicherweise verbessert werden könnte (vielleicht ???) , aber es würde einige Arbeit erfordern. Sie könnten tun e%9, um 5 zu bekommen, aber Sie würden eine Möglichkeit brauchen, es zu drucken und das Programm zu beenden, also bezweifle ich es
MildlyMilquetoast

0

SmileBASIC, 12 Snippets, 5 Wildcards, 31 Bytes

!.     '. is parsed as the number 0.0; taking the logical not gives 1
!.+!.  'Previous value added to itself
@Q||Q  '@Q is a label string and Q is a variable. For some reason, certain comparison/logical operations between strings and numbers return 3 rather than 1 or 0. 
4      '4
#TLIme 'Constant for the text color lime green, value is 5.
6      '6 (wildcard)
7      '7 (wildcard)
8      '8 (wildcard)
9      '9
&HA    'Hexadecimal A
11     '11 (one of them is a wildcard)
4*3    '4 multiplied by 3 (3 is wildcard)

Ich hätte auch eine Variable anstelle von .(Variablen beginnen bei 0) und eine String-Variable (wie Q$) anstelle von verwenden können@Q

Zeichen verwendet: !!!#&*+...1449@AHILQQTem||

Wildcards verwendet: 67813

unbenutzte Zeichen: !!$$%()))):=@@OQTZ\\^`````````efpxy{||~~~~~~~~~

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.