Wählen Sie fünf beliebige Zeichen aus, die Ihre Sprache unterstützt. Es gibt 5! = 5 × 4 × 3 × 2 × 1 = 120 Arten, wie diese in einer 5-stelligen Zeichenkette angeordnet werden können, die jedes Zeichen einmal enthält; 120 Permutationen .
Wählen Sie Ihre Zeichen so, dass, wenn jede der 120 Zeichenfolgen in Ihrer Sprache ausgeführt wird, die 120 erzeugten Ausgaben so viele eindeutige Ganzzahlen von 1 bis 120 (einschließlich) wie möglich enthalten.
Das heißt, für jede der 120 Permutationen Ihrer 5 Zeichen, die einen ausführbaren Code erzeugen, der eine einzelne Zahl ausgibt, soll die Menge all dieser Zahlen so nah wie möglich an der Menge der ganzen Zahlen von 1 bis 120 liegen.
Im Idealfall wird Ihre erste Permutation also ausgegeben 1
, die nächste 2
, die nächste 3
, bis hinauf zu 120
. Aber dieses Ideal ist wahrscheinlich für die meisten Sprachen und Charaktere unmöglich.
Die 5-stelligen Zeichenfolgen können wie folgt ausgeführt werden:
- ein Programm ohne Eingabe
- eine Funktion ohne Argumente
- ein REPL- Befehl
Falls gewünscht, können verschiedene Zeichenfolgen auf unterschiedliche Weise ausgeführt werden
Für die Ausgabe zu zählen, muss es eine einzige ganze Zahl sein Ausgang in einer normalen Art und Weise, wie zum Beispiel:
- Wird nach Standard gedruckt
- von der Funktion zurückgegeben
- das Ergebnis des REPL-Ausdrucks
Der Code sollte normal beenden (was beinhalten kann , so lange erroring geführt , wie die Zahl zuerst ausgegeben worden ist). Code, der überhaupt nicht ausgeführt wird, ist in Ordnung, nur die (nicht vorhandene) Ausgabe zählt nicht. Die Zahlenausgabe sollte dezimal erfolgen, es sei denn, für Ihre Sprache ist eine andere Basis die Norm.
Die Einsendung, die die deutlichsten Zahlen von 1 bis 120 generiert, gewinnt. Die frühere Vorlage gewinnt im Falle eines Gleichstands.
Anmerkungen
- Ihre 5 Zeichen müssen nicht alle unterschiedlich sein, aber wenn Sie doppelte Zeichen haben, verringert sich natürlich die effektive Anzahl der Permutationen.
- Float-Ausgänge wie
32.0
count oder plain32
. (Wäre32.01
aber nicht.) - Führende Nullen wie
032
count sowie plain32
. - Gültige Ausgaben sollten deterministisch und zeitinvariant sein.
- Wir haben es mit Zeichen zu tun , nicht mit Bytes.
Beispiel
Die Zeichen 123+*
sind eine vernünftige erste Wahl für Pythons (oder vieler Sprachen) REPL. Die resultierenden 120 Permutationen und Ausgaben sind:
123+* n/a
123*+ n/a
12+3* n/a
12+*3 n/a
12*3+ n/a
12*+3 36
132+* n/a
132*+ n/a
13+2* n/a
13+*2 n/a
13*2+ n/a
13*+2 26
1+23* n/a
1+2*3 7
1+32* n/a
1+3*2 7
1+*23 n/a
1+*32 n/a
1*23+ n/a
1*2+3 5
1*32+ n/a
1*3+2 5
1*+23 23
1*+32 32
213+* n/a
213*+ n/a
21+3* n/a
21+*3 n/a
21*3+ n/a
21*+3 63
231+* n/a
231*+ n/a
23+1* n/a
23+*1 n/a
23*1+ n/a
23*+1 23
2+13* n/a
2+1*3 5
2+31* n/a
2+3*1 5
2+*13 n/a
2+*31 n/a
2*13+ n/a
2*1+3 5
2*31+ n/a
2*3+1 7
2*+13 26
2*+31 62
312+* n/a
312*+ n/a
31+2* n/a
31+*2 n/a
31*2+ n/a
31*+2 62
321+* n/a
321*+ n/a
32+1* n/a
32+*1 n/a
32*1+ n/a
32*+1 32
3+12* n/a
3+1*2 5
3+21* n/a
3+2*1 5
3+*12 n/a
3+*21 n/a
3*12+ n/a
3*1+2 5
3*21+ n/a
3*2+1 7
3*+12 36
3*+21 63
+123* n/a
+12*3 36
+132* n/a
+13*2 26
+1*23 23
+1*32 32
+213* n/a
+21*3 63
+231* n/a
+23*1 23
+2*13 26
+2*31 62
+312* n/a
+31*2 62
+321* n/a
+32*1 32
+3*12 36
+3*21 63
+*123 n/a
+*132 n/a
+*213 n/a
+*231 n/a
+*312 n/a
+*321 n/a
*123+ n/a
*12+3 n/a
*132+ n/a
*13+2 n/a
*1+23 n/a
*1+32 n/a
*213+ n/a
*21+3 n/a
*231+ n/a
*23+1 n/a
*2+13 n/a
*2+31 n/a
*312+ n/a
*31+2 n/a
*321+ n/a
*32+1 n/a
*3+12 n/a
*3+21 n/a
*+123 n/a
*+132 n/a
*+213 n/a
*+231 n/a
*+312 n/a
*+321 n/a
Es werden 36 Zahlen generiert, alle zum Glück innerhalb von 1 bis 120:
36, 26, 7, 7, 5, 5, 23, 32, 63, 23, 5, 5, 5, 7, 26, 62, 62, 32, 5, 5, 5, 7, 36, 63, 36, 26, 23, 32, 63, 23, 26, 62, 62, 32, 36, 63
Allerdings sind nur 8 davon einzigartig:
36, 26, 7, 5, 23, 32, 63, 62
Eine solche Einreichung würde also nur 8 von maximal 120 Punkten erzielen.
c
ähnlichen Sprachen !!!