Existem 40 maneiras pelas quais um caminho hamiltoniano direcionado pode ser organizado em uma grade 3 × 3:
Este gráfico ( graças ao Sp3000! ) Mostra apenas os 20 caminhos não direcionados. Percorra cada linha colorida nas duas direções para os 40 caminhos direcionados.
Desafio
Usando apenas ASCII imprimível , escreva uma grade 3 x 3 de caracteres, como:
ABC
DEF
GHI
Quando cada um dos 40 caminhos direcionados é lido nesta grade como 40 programas de linha única e 9 caracteres, o objetivo é fazer com que cada programa produza um número inteiro único de 1 a 40. Fazer isso para todos os 40 caminhos parece difícil e improvável, portanto, você só precisa fazê-lo funcionar para o maior número possível de caminhos.
A submissão cujos 40 programas de caminho produzirem os números mais distintos de 1 a 40 será o vencedor. O desempatador vai para a finalização anterior.
Os programas de caminho que erro ou não produzem um número inteiro de 1 a 40 ou produzem um número inteiro que outro programa de caminho já coberto não é contado. Especificamente:
- Os programas que apresentam erros ao compilar, executar ou sair não são contados. Os avisos estão ok.
- Programas que não produzem um número inteiro de 1 a 40 ou produzem algo ligeiramente malformado, como
-35
ou35 36
não são contados. - Programas que requerem entrada do usuário para produzir a saída não são contados.
- Programas que nunca terminam não são contados.
- A partir de agora , os programas que não são determinísticos não são contados.
- Caso contrário, os programas válidos que produzem um número inteiro de 1 a 40 que outro programa válido já produziu não são contados. (O primeiro programa é contado.)
- Somente os programas que geram representações inteiras de números de 1 a 40 (inclusive) são contados no total. Os números são esperados para estar no costume
1
,2
, ...,39
,40
formato, a menos que não é a norma para o seu idioma. (Uma nova linha à direita na saída está correta.) - Quais são os números de saída dos programas e em que ordem eles estão, não importa. Somente o número de números inteiros distintos de programas válidos é importante.
Todos os programas de caminho devem ser executados no mesmo idioma. No entanto, os "programas" podem de fato ser funções (sem argumentos necessários) ou comandos REPL , além de programas completos, que imprimem ou retornam seu número inteiro de destino. Você pode misturar e combinar entre funções, comandos REPL e programas completos.
Seus 9 caracteres ASCII imprimíveis não precisam ser distintos.
Exemplo
Se sua grade 3 × 3 fosse
ABC
DEF
GHI
e seus 40 programas e saídas ficaram assim
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"
sua pontuação seria 14, porque existem 14 números inteiros distintos de 1 a 40, válidos 26 2 6 3 4 33 8 22 11 30 39 7 29 1
.
123654789