DAS magische Hexagon

17

Es gibt viele magische Quadrate, aber es gibt nur ein nicht triviales magisches Sechseck, wie Dr. James Grime erklärte :

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

Da es in Hexagony gemacht wird, ist es am einfachsten, es als eine einzige Zeile zu schreiben, indem man es Zeile für Zeile liest:

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

Natürlich gibt es insgesamt zwölf solcher Listendarstellungen dieses magischen Sechsecks, wenn Sie Rotationen und Reflexionen zählen. Zum Beispiel würde eine Drehung des obigen Sechsecks um 1/6 im Uhrzeigersinn zur Folge haben

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

@Okx bat darum, die verbleibenden Varianten aufzulisten. Die restlichen Listen sind:

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

plus alle genannten Listen vertauscht.

Herausforderung

Schreiben Sie ein Programm, das das magische Hexagon als Liste ausgibt. Sie können eine der 12 Reflexionen / Rotationen des Sechsecks auswählen .

Bitte fügen Sie ein paar Worte hinzu, wie Ihre Lösung funktioniert.

fehlerhaft
quelle
2
Kann das in Sechseck getan werden? Wenn ja, werde ich ein Kopfgeld setzen, um diese Antwort zu belohnen.
Mr. Xcoder
1
@ Mr.Xcoder In Hexagony kann alles gemacht werden. Es wird wahrscheinlich nicht sehr interessant sein, da ich bezweifle, dass Sie in der Lage sind, Bytes zu sparen, wenn Sie nur eine der Listen buchstäblich ausdrucken.
Martin Ender

Antworten:

5

Jelly , 11 Bytes

“JɼQⱮȦ>Ȯ’Œ?

Ein niladischer Link, der die Liste der angegebenen Ausrichtung von links nach rechts zurückgibt.

Probieren Sie es online!

Wie?

Genau das, wofür ich gemacht habe Œ?

“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
quelle
4

Pyth, 15 Bytes

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

(Steuerzeichen werden zu Ihrer Bequemlichkeit durch \x06und ersetzt \x11.)

Probieren Sie es online aus

Wie es funktioniert

   "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
quelle
4

05AB1E , 14 Bytes

Beide Lösungen erzeugen die Liste [3,17,18,19,7,1,11,16,2,5,6,9,12,4,8,14,10,13,15]

19Lœ•δn2мׄÁ•è

Erzeugt eine Liste aller (sortierten) Permutationen des Bereichs [1...19]und indiziert diese Liste mit einer Basis-255-komprimierten Basis-10-Zahl.

Oder 15 Bytes online lauffähig

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

Dekomprimiert eine Zeichenfolge zur Basis 255 in eine Zahl zur Basis 10 und konvertiert sie in eine Liste mit 20 Stellen zur Basis.

Probieren Sie es online!

Emigna
quelle
3

SOGL , 15 Bytes

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

Erläuterung:

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

Jelly , 21 Bytes

18473955480703453œ?19

Ich möchte diese große Zahl wirklich komprimieren, bin mir aber nicht sicher, wie.

Probieren Sie es online!

Okx
quelle
18473955480703453ist 1 Byte kürzer.
Emigna
Korrigieren Sie mich, wenn ich falsch liege, aber wäre eine Liste der Codepage-Indizes nicht kürzer?
Nick Clifford
RE-Komprimierung: Es ist dieselbe Nummer, die ich in meiner verwendet habe. Alles, was Sie tun müssen, ist, die Zahl unter Verwendung von ḃ250und Index in die Codepage in die bijektive Basis 250 umzuwandeln (was jetzt einfacher ist, da es ein Nilad-Atom dafür gibt ØJ).
Jonathan Allan
@ NickClifford wäre es auch 21 Bytes (19 Indizes, ein offenes Zitat und ein enges Zitat).
Jonathan Allan
@ JonathanAllan Ah, verstanden.
Nick Clifford
2

APL, 24 Bytes

⎕A⍳'RQCKAGSIFEBPNHDLOMJ'

Probieren Sie es online!

Wie?

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

JavaScript (ES6), 49 Byte

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

darrylyeo
quelle
0

Mathematica, 37 Bytes

36^^md1o3apsqxqkfhq6~IntegerDigits~20

Erklärung (das mag bereits offensichtlich sein, da Mathematica keine Codegolf-Sprache ist, sondern gemäß der OP-Anforderung):

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

Ausgabe:

{18,17,3,11,1,7,19,9,6,5,2,16,14,8,4,12,15,13,10}
user202729
quelle
1
Beachten Sie, dass kolmogorv-Komplexität tatsächlich ist über Datenkompression.
Fehler