O hexágono mágico

17

Existem muitos quadrados mágicos, mas há apenas um hexágono mágico não trivial, como explicou o Dr. James Grime , que é o seguinte:

  18 17  3
 11  1  7 19
9  6  5  2 16
 14  8  4 12
  15 13 10

Como é feito no Hexagony, é mais fácil escrever em apenas uma linha, lendo-a linha por linha:

18 17 3 11 1 7 19 9 6 5 2 16 14 8 4 12 15 13 10

É claro que existem doze representações dessa lista desse hexágono mágico no total, se você contar rotações e reflexões. Por exemplo, uma rotação 1/6 no sentido horário do hexágono acima resultaria em

9 11 18 14 6 1 17 15 8 5 7 3 13 4 2 19 10 12 16

A @Okx pediu para listar as variantes restantes. As listas restantes são:

15 14 9 13 8 6 11 10 4 5 1 18 12 2 7 17 16 19 3
3 17 18 19 7 1 11 16 2 5 6 9 12 4 8 14 10 13 15
18 11 9 17 1 6 14 3 7 5 8 15 19 2 4 13 16 12 10
9 14 15 11 6 8 13 18 1 5 4 10 17 7 2 12 3 19 16

além de todas as listas mencionadas revertidas.

Desafio

Escreva um programa que produz o hexágono mágico como uma lista. Você pode escolher qualquer uma das 12 reflexões / rotações do hexágono.

Adicione algumas palavras sobre como sua solução funciona.

flawr
fonte
2
Isso pode ser feito em hexagonia? Nesse caso, colocarei uma recompensa para recompensar essa resposta.
Mr. Xcoder
11
@ Mr.Xcoder Tudo pode ser feito em Hexagony. Provavelmente não será muito interessante, porque duvido que você consiga salvar bytes apenas imprimindo uma das listas literalmente.
Martin Ender

Respostas:

5

Gelatina , 11 bytes

“JɼQⱮȦ>Ȯ’Œ?

Um link niládico retornando a lista da orientação especificada refletida esquerda-direita.

Experimente online!

Quão?

Apenas o tipo de coisa para a qual eu fiz Œ?

“JɼQⱮȦ>Ȯ’Œ? - Niladic link: no arguments
“JɼQⱮȦ>Ȯ’   - base 250 number, 18473955480703453
         Œ? - shortest permutation of some set of natural numbers one through to some N
            -   inclusive which would lie at that index in a list of all permutations of
            -   those same natural numbers when sorted lexicographically.
            -
            -   - for example 7Œ?:
            -   - since 7 is greater than 3! and less than 4!+1, it references four items
            -   - the sorted order of permutations of 4 items is:
            -   - [[1,2,3,4],[1,2,4,3],[1,3,2,4],[1,3,4,2],[1,4,2,3],[1,4,3,2],[2,1,3,4], ...]
            -   - so 7Œ? yields [2,1,3,4]
Jonathan Allan
fonte
4

Pitão, 15 bytes

.PC"A¡öò\x06\x11Ý"S19

(Caracteres de controle substituídos por \x06e \x11para sua conveniência de visualização.)

Experimente online

Como funciona

   "A¡öò\x06\x11Ý"      magic string
  C                     convert to number n using codepoints as base-256 digits
.P                S19   nth lexicographic permutation of [1, …, 19]
Anders Kaseorg
fonte
4

05AB1E , 14 bytes

Ambas as soluções geram a lista [3,17,18,19,7,1,11,16,2,5,6,9,12,4,8,14,10,13,15]

19Lœ•δn2мׄÁ•è

Gera uma lista de todas as permutações (classificadas) do intervalo [1...19]e os índices nessa lista com um número de base 10 compactado da base 255.

Ou 15 bytes executáveis ​​on-line

•áRвºñ*$vn+•20в

Descomprime uma seqüência de caracteres 255 base em um número base 10 e converte em uma lista de 20 dígitos base.

Experimente online!

Emigna
fonte
3

SOGL , 15 bytes

³←@uΙΒQH√y׀“L«─

Explicação:

...“     push the number 4121998669867569415662783
    L«   push 20
      ─  convert 4121998669867569415662783 from base 10 to a base 20 number aka base 10 array 
dzaima
fonte
3

Geléia , 21 bytes

18473955480703453œ?19

Eu realmente quero comprimir esse grande número, mas não sei como.

Experimente online!

Okx
fonte
18473955480703453é 1 bytes mais curto.
Emigna
Corrija-me se estiver errado, mas uma lista de índices de páginas de códigos não seria mais curta?
Nick Clifford
Compressão RE: É o mesmo número que usei no meu. Tudo o que você precisa fazer é converter o número para a base bijetiva 250 usando ḃ250e indexar na página de códigos (que agora é mais fácil, pois existe um átomo niládico para ela ØJ).
Jonathan Allan
@NickClifford também teria 21 bytes (19 índices, uma cotação aberta e uma cotação fechada).
Jonathan Allan
@JonathanAllan Ah, entendi.
Nick Clifford
2

APL, 24 bytes

⎕A⍳'RQCKAGSIFEBPNHDLOMJ'

Experimente online!

Quão?

⎕A                        ⍝ 'ABC...
   ⍳                       ⍝ indices of
    'RQCKAGSIFEBPNHDLOMJ'  ⍝ ← this vector
Uriel
fonte
1

JavaScript (ES6), 49 bytes

[...'ih3b17j9652ge84cfda'].map(n=>parseInt(n,26))

darrylyeo
fonte
0

Mathematica, 37 bytes

36^^md1o3apsqxqkfhq6~IntegerDigits~20

Explicação (que já pode ser óbvio, já que o Mathematica não é uma linguagem codegolf, mas de acordo com o requisito de OP):

36  : Number base
^^  : Input a number in arbitrary base. See BaseForm documentation
md1o3apsqxqkfhq6 : the number in base 36
~IntegerDigits~20 : convert to base 20 as list of digits

Resultado:

{18,17,3,11,1,7,19,9,6,5,2,16,14,8,4,12,15,13,10}
user202729
fonte
11
Observe que a complexidade do kolmogorv é realmente sobre compactação de dados.
flawr
0

Japonês , 27 bytes

Inspirado pela solução de rahnema1.

`ikrnfaqogcmdbsjlp`¨c -96

Experimente online

Shaggy
fonte