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.


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]

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]

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!


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 

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!


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



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}

1
Beachten Sie, dass kolmogorv-Komplexität tatsächlich ist über Datenkompression.
Fehler

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.