L'Esagono Magico


17

Ci sono molti quadrati magici, ma c'è solo un esagono magico non banale, come ha spiegato il dottor James Grime , che è il seguente:

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

Come è fatto in Hexagony, questo è più semplice scritto come una sola riga, semplicemente leggendolo riga per riga:

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

Naturalmente ci sono dodici rappresentazioni di questo elenco di questo esagono magico in totale, se si contano rotazioni e riflessioni. Ad esempio, si otterrebbe una rotazione in senso orario di 1/6 dell'esagono sopra

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

@Okx ha chiesto di elencare le restanti varianti. Gli elenchi rimanenti sono:

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

più tutte le liste menzionate invertite.

Sfida

Scrivi un programma che genera l'esagono magico come un elenco. Puoi scegliere una qualsiasi delle 12 riflessioni / rotazioni dell'esagono.

Aggiungi alcune parole su come funziona la tua soluzione.


2
Questo può essere fatto in esagonia? In tal caso, farò una ricompensa per premiare quella risposta.
Mr. Xcoder,

1
@ Mr.Xcoder Tutto può essere fatto in esagonia. Probabilmente non sarà molto interessante, perché dubito che sarai in grado di salvare i byte semplicemente stampando uno degli elenchi letteralmente.
Martin Ender,

Risposte:



5

Gelatina , 11 byte

“JɼQⱮȦ>Ȯ’Œ?

Un collegamento niladico che restituisce l'elenco dell'orientamento indicato si riflette a sinistra a destra.

Provalo online!

Come?

Proprio il tipo di cosa per cui ho realizzato Œ?

“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]

4

Pyth, 15 byte

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

(Controlla i personaggi sostituiti con \x06e \x11per tua comodità di visualizzazione.)

Provalo online

Come funziona

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

4

05AB1E , 14 byte

Entrambe le soluzioni generano l'elenco [3,17,18,19,7,1,11,16,2,5,6,9,12,4,8,14,10,13,15]

19Lœ•δn2мׄÁ•è

Genera un elenco di tutte le permutazioni (ordinate) dell'intervallo [1...19]e degli indici in quell'elenco con un numero di base 10 compresso di 255 base.

O 15 byte eseguibili online

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

Decomprime una stringa di base 255 in un numero di base 10 e converte in un elenco di 20 cifre di base.

Provalo online!


3

SOGL , 15 byte

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

Spiegazione:

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

3

Gelatina , 21 byte

18473955480703453œ?19

Voglio davvero comprimere quel gran numero, ma non sono sicuro di come.

Provalo online!


18473955480703453è di 1 byte più breve.
Emigna,

Correggimi se sbaglio, ma un elenco di indici della tabella codici non sarebbe più breve?
Nick Clifford,

Compressione RE: è lo stesso numero che ho usato nel mio. Tutto quello che devi fare è convertire il numero in base biiettiva 250 usando ḃ250e indicizzare nella tabella codici (che ora è più facile in quanto vi è un atomo niladico per esso ØJ).
Jonathan Allan,

@NickClifford sarebbe anche 21 byte (19 indici, una citazione aperta e una citazione stretta).
Jonathan Allan,

@JonathanAllan Ah, capito.
Nick Clifford,

2

APL, 24 byte

⎕A⍳'RQCKAGSIFEBPNHDLOMJ'

Provalo online!

Come?

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


0

Mathematica, 37 byte

36^^md1o3apsqxqkfhq6~IntegerDigits~20

Spiegazione (che può essere già ovvio in quanto Mathematica non è un linguaggio codegolf, ma secondo il requisito di 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

Produzione:

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

1
Si noti che kolmogorv complessità in realtà è sulla compressione dei dati.
Flawr

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.