Esistono 40 modi in cui un percorso Hamiltoniano diretto può essere organizzato su una griglia 3 × 3:
Questo grafico ( grazie a Sp3000! ) Mostra solo i 20 percorsi non indirizzati. Attraversa ogni linea colorata in entrambe le direzioni per i 40 percorsi diretti.
Sfida
Utilizzando solo ASCII stampabile , scrivi una griglia di caratteri 3 × 3, come ad esempio:
ABC
DEF
GHI
Quando ciascuno dei 40 percorsi diretti viene letto da questa griglia come 40 programmi a riga singola di 9 caratteri, l'obiettivo è far sì che ciascun programma generi un numero intero unico compreso tra 1 e 40. Fare ciò per tutti i 40 percorsi sembra difficile e improbabile, quindi devi solo farlo funzionare per tutti i percorsi che puoi.
La proposta i cui 40 programmi di percorso producono i numeri più distinti da 1 a 40 saranno i vincitori. Tiebreaker va alla presentazione precedente.
Non vengono conteggiati i programmi di percorso che presentano errori o che non generano un numero intero compreso tra 1 e 40 o che generano un numero intero che un altro programma di percorso già coperto. In particolare:
- I programmi che presentano errori durante la compilazione, l'esecuzione o l'uscita non vengono conteggiati. Gli avvertimenti sono ok.
- I programmi che non generano un numero intero compreso tra 1 e 40 o che generano qualcosa di leggermente malformato come
-35
o35 36
non vengono conteggiati. - I programmi che richiedono l'input dell'utente per produrre l'output non vengono conteggiati.
- I programmi che non finiscono mai non vengono conteggiati.
- D' ora in poi , i programmi che non sono deterministici non vengono conteggiati.
- In caso contrario, i programmi validi che generano un numero intero compreso tra 1 e 40 che un altro programma valido ha già emesso non vengono conteggiati. ( Viene conteggiato il primo programma .)
- Solo i programmi che generano rappresentazioni di numeri interi compresi tra 1 e 40 (incluso) vengono conteggiati per il totale. I numeri dovrebbero essere nel solito
1
,2
, ...,39
,40
format, a meno che non è la norma per la lingua. (Una nuova riga finale nell'output va bene.) - Non importa quale sia il numero dei programmi emessi e l'ordine in cui si trovano. È importante solo il numero di numeri interi distinti da programmi validi.
Tutti i programmi di percorso devono essere eseguiti nella stessa lingua. Tuttavia, i "programmi" possono in effetti essere funzioni (senza argomenti richiesti) o comandi REPL , nonché programmi completi, che stampano o restituiscono il loro intero di destinazione. È possibile combinare funzioni, comandi REPL e programmi completi.
I tuoi 9 caratteri ASCII stampabili non devono essere distinti.
Esempio
Se la tua griglia 3 × 3 fosse
ABC
DEF
GHI
e i tuoi 40 programmi e output sembravano così
ABCFEDGHI -> 26
ABCFIHEDG -> 90
ABCFIHGDE -> 2
ABEDGHIFC -> syntax error
ADEBCFIHG -> prints 40 but then errors
ADGHEBCFI -> 6
ADGHIFCBE -> 6
ADGHIFEBC -> 6
CBADEFIHG -> runtime error
CBADGHEFI -> 3
CBADGHIFE -> 4
CFEBADGHI -> -32
CFIHEBADG -> 38.0
CFIHGDABE -> "36"
EDABCFIHG -> 33
EFCBADGHI -> no output
EHGDABCFI -> compilation error
EHIFCBADG -> 8
GDABCFEHI -> 22
GHEDABCFI -> 41
IHGDEFCBA -> 0
GDEHIFCBA -> '9'
EDGHIFCBA -> +10
CFIHGDEBA -> 11
GHIFCBEDA -> error
IFCBEHGDA -> error
EBCFIHGDA -> prints 23 but then loops infinitely
CBEFIHGDA -> randomly prints either 24 or 44
GHIFEDABC -> error
IFEHGDABC -> 30
EFIHGDABC -> 39
IHGDABEFC -> 7
GDABEHIFC -> 29
EBADGHIFC -> -1
GHIFCBADE -> 26
IHGDABCFE -> 1
IFCBADGHE -> error
GDABCFIHE -> no output
IHEFCBADG -> no output
IFCBADEHG -> "quack"
il tuo punteggio sarebbe 14, perché ci sono 14 interi distinti da 1 a 40 validamente emessi, ovvero 26 2 6 3 4 33 8 22 11 30 39 7 29 1
.
123654789