L'hexagone magique

17

Il existe de nombreux carrés magiques, mais il n'y a qu'un seul hexagone magique non trivial, comme l'a expliqué le Dr James Grime , qui est le suivant:

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

Comme cela se fait dans Hexagony, c'est plus facile à écrire en une seule ligne, en le lisant ligne par ligne:

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

Bien sûr, il existe douze représentations de cette liste de cet hexagone magique au total, si vous comptez les rotations et les réflexions. Par exemple, une rotation de 1/6 dans le sens horaire de l'hexagone ci-dessus entraînerait

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

@Okx a demandé de répertorier les variantes restantes. Les listes restantes sont:

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

ainsi que toutes les listes mentionnées inversées.

Défi

Écrivez un programme qui affiche l'hexagone magique sous forme de liste. Vous pouvez choisir l' une des 12 réflexions / rotations de l'hexagone.

Veuillez ajouter quelques mots sur le fonctionnement de votre solution.

flawr
la source
2
Peut-on le faire en hexagone? Si oui, je mettrai une prime pour récompenser cette réponse.
M. Xcoder
1
@ Mr.Xcoder Tout peut être fait en Hexagonie. Cela ne sera probablement pas très intéressant, car je doute que vous puissiez économiser des octets au lieu d'imprimer littéralement l'une des listes.
Martin Ender

Réponses:

5

Jelly , 11 octets

“JɼQⱮȦ>Ȯ’Œ?

Un lien niladique renvoyant la liste de l'orientation donnée se reflète de gauche à droite.

Essayez-le en ligne!

Comment?

Juste le genre de chose pour laquelle j'ai fait Œ?

“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
la source
4

Pyth, 15 octets

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

(Les caractères de contrôle sont remplacés par \x06et \x11pour votre commodité d'affichage.)

Essayez-le en ligne

Comment ça fonctionne

   "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
la source
4

05AB1E , 14 octets

Les deux solutions génèrent la liste [3,17,18,19,7,1,11,16,2,5,6,9,12,4,8,14,10,13,15]

19Lœ•δn2мׄÁ•è

Génère une liste de toutes les permutations (triées) de la plage [1...19] et indexe dans cette liste avec un nombre de base 10 compressé en base 255.

Ou 15 octets exécutables en ligne

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

Décompresse une chaîne de base 255 en un nombre de base 10 et convertit en une liste de 20 chiffres de base.

Essayez-le en ligne!

Emigna
la source
3

SOGL , 15 octets

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

Explication:

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

Gelée , 21 octets

18473955480703453œ?19

Je veux vraiment compresser ce grand nombre, mais je ne sais pas comment.

Essayez-le en ligne!

Okx
la source
18473955480703453est 1 octet plus court.
Emigna
Corrigez-moi si je me trompe, mais une liste d'index de pages de codes ne serait-elle pas plus courte?
Nick Clifford
Compression RE: C'est le même nombre que j'ai utilisé dans le mien. Tout ce que vous avez à faire est de convertir le nombre en base bijective 250 en utilisant ḃ250et d'indexer dans la page de code (ce qui est maintenant plus facile car il y a un atome niladique pour cela ØJ).
Jonathan Allan
@NickClifford, ce serait aussi 21 octets (19 index, un devis ouvert et un devis proche).
Jonathan Allan
@JonathanAllan Ah, j'ai compris.
Nick Clifford
2

APL, 24 octets

⎕A⍳'RQCKAGSIFEBPNHDLOMJ'

Essayez-le en ligne!

Comment?

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

JavaScript (ES6), 49 octets

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

darrylyeo
la source
0

Mathematica, 37 octets

36^^md1o3apsqxqkfhq6~IntegerDigits~20

Explication (cela peut déjà être évident car Mathematica n'est pas un langage de codegolf, mais selon l'exigence 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

Production:

{18,17,3,11,1,7,19,9,6,5,2,16,14,8,4,12,15,13,10}
user202729
la source
1
Notez que la complexité kolmogorv concerne en fait la compression des données.
flawr
0

Japt , 27 octets

Inspiré par la solution de rahnema1.

`ikrnfaqogcmdbsjlp`¨c -96

Essayez-le en ligne

Hirsute
la source