Vamos pegar uma grade de caracteres ASCII imprimíveis de 16x16 (pontos de código 0x20 a 0x7E). Existem 30 caminhos para escolher 15 do canto superior esquerdo ao canto inferior direito, fazendo apenas movimentos ortogonais, como no exemplo a seguir:
##..............
.#..............
.######.........
......##........
.......##.......
........#.......
........#.......
........#.......
........###.....
..........###...
............#...
............####
...............#
...............#
...............#
Cada caminho consiste em exatamente 31 caracteres. Observe que cada um desses caracteres está em um dos 31 anti-diagonais diferentes:
0123456789ABCDEF
123456789ABCDEFG
23456789ABCDEFGH
3456789ABCDEFGHI
456789ABCDEFGHIJ
56789ABCDEFGHIJK
6789ABCDEFGHIJKL
789ABCDEFGHIJKLM
89ABCDEFGHIJKLMN
9ABCDEFGHIJKLMNO
ABCDEFGHIJKLMNOP
BCDEFGHIJKLMNOPQ
CDEFGHIJKLMNOPQR
DEFGHIJKLMNOPQRS
EFGHIJKLMNOPQRST
FGHIJKLMNOPQRSTU
Esta não é uma grade de exemplo. Esta é uma visualização dos 31 anti-diagonais.
Chamaremos uma grade de diagonalmente única se nenhum anti-diagonal contiver o mesmo caractere duas vezes. Se a grade tiver essa propriedade, dois caminhos não conterão a mesma sequência. (Apenas para esclarecer, a visualização em si é basicamente o oposto de diagonalmente exclusivo.)
O desafio
Crie uma grade 16x16 na diagonal exclusiva, para que o maior número possível de caminhos seja um código válido que seja impresso Jabberwocky
em STDOUT (com quebra de linha à direita opcional) no maior número possível de idiomas. Cada código pode ser um programa completo ou o corpo de uma função sem parâmetros sem declaração de retorno (isso é para não desencorajar os idiomas que precisam ter seu código em alguma função / classe / espaço de nome padrão).
Nota: Para simplificar, você pode usar algum caractere reservado para células não utilizadas, como Ypnypn .
Para cada caminho válido, indique claramente uma linguagem de programação em que é válida.
O vencedor é o envio com o maior número de idiomas cobertos pela lista acima. (Como alternativa, para cada idioma que você deseja contar, mostre um caminho válido nesse idioma, mas certifique-se de não contar nenhum caminho para dois idiomas.)
Em caso de empate, conte as células da grade que não são cobertas por nenhum caminho válido. Menos células não utilizadas vencem. Se ainda houver um empate, aceitarei a resposta com mais votos (líquidos).
Script de validação
Acabei de montar rapidamente um pequeno trecho de CJam que você pode usar para validar que uma grade é diagonalmente única.
- Vá para o intérprete CJam online .
Cole o seguinte código
l:A; qN/W%A16**33/z{A-__|=}%:*"D""Not d"?"iagonally unique"
No campo de entrada, coloque seu caractere reservado na primeira linha (use um caractere não utilizado se não processar um caractere reservado) e, em seguida, sua grade na linha 2 a 17. Por exemplo, para a resposta de Ypnypn:
~ pr~~~~~~~~~~~~~ tin~~~~~~~~~~~~ ~ypt(~~~~~~~~~~~ ~~ef(~~~~~~~~~~~ ~~ "J~~~~~~~~~~ ~~~~~ab~~~~~~~~~ ~~~~~~be~~~~~~~~ ~~~~~~~rwo~~~~~~ ~~~~~~~~~ck~~~~~ ~~~~~~~~~~y~~~~~ ~~~~~~~~~~\n~~~~ ~~~~~~~~~~~")) ~ ~~~~~~~~~~~ ; ~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~
Corre.
Deixe-me saber se você acha que tem um bug.
fonte
Respostas:
30 3335 IdiomasCaractere reservado:
~
Línguas:
(Pyth e CJam graças a user23013)
fonte
putStr[ln]...
. Além disso, haskell não tem;;
. Eu acredito que você misturou com Ocaml.;;
). De qualquer forma, substituiu Haskell por outra coisa.| p b"Jabberwocky" |
obras, por exemplo17 línguas
Aqui está a grade, com
.
o caractere reservado:E aqui estão os idiomas e seus caminhos (ignore as barras verticais):
Não pude testar todos eles, então, deixe-me saber se algo não funcionar.
fonte
<?
aqui #18 idiomas e mais
Caráter reservado:
~
.Línguas:
e...
Deve haver muito mais dialetos básicos que funcionem. Mas ainda não tenho tempo para testar todos eles.
fonte
?
aprint
) deve funcionar ... Basta selecionar um número de linha diferente.