THE Magic Hexagon

17

Istnieje wiele magicznych kwadratów, ale jest tylko jeden nietrywialny magiczny sześciokąt, jak wyjaśnił dr James Grime , a mianowicie :

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

Jak to jest zrobione w Hexagony, najłatwiej jest napisać tylko jedną linię, po prostu czytając go wiersz po rzędzie:

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

Oczywiście istnieje łącznie dwanaście takich reprezentacji tego magicznego sześciokąta, jeśli uwzględni się obroty i odbicia. Na przykład spowodowałoby obrót powyższego sześciokąta o 1/6 zgodnie z ruchem wskazówek zegara

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

@Okx poprosił o listę pozostałych wariantów. Pozostałe listy to:

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 wszystkie wymienione listy odwrócone.

Wyzwanie

Napisz program, który wyświetla magiczny sześciokąt jako listę. Możesz wybrać dowolne z 12 odbić / obrotów sześciokąta.

Dodaj kilka słów o tym, jak działa Twoje rozwiązanie.

wada
źródło
2
Czy można tego dokonać w heksagonii? Jeśli tak, dam nagrodę za tę odpowiedź.
Pan Xcoder,
1
@ Mr.Xcoder W Hexagony można zrobić wszystko. Prawdopodobnie nie będzie to zbyt interesujące, ponieważ wątpię, czy będziesz w stanie zaoszczędzić bajty, drukując tylko jedną z list dosłownie.
Martin Ender

Odpowiedzi:

5

Galaretka , 11 bajtów

“JɼQⱮȦ>Ȯ’Œ?

Łącze niladyczne zwracające listę podanej orientacji odbijało się w lewo-prawo.

Wypróbuj online!

W jaki sposób?

Właśnie takie rzeczy, dla których zrobiłem Œ?

“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
źródło
4

Pyth, 15 bajtów

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

(Znaki kontrolne zostały zastąpione przez \x06i \x11dla wygody oglądania).

Wypróbuj online

Jak to działa

   "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
źródło
4

05AB1E , 14 bajtów

Oba rozwiązania generują listę [3,17,18,19,7,1,11,16,2,5,6,9,12,4,8,14,10,13,15]

19Lœ•δn2мׄÁ•è

Generuje listę wszystkich (posortowanych) permutacji zakresu [1...19]i indeksuje do tej listy ze skompresowaną liczbą podstawową 255 o numerze 10.

Lub 15 bajtów możliwych do uruchomienia online

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

Dekompresuje podstawowy ciąg 255 na liczbę podstawową 10 i konwertuje na listę 20 podstawowych cyfr.

Wypróbuj online!

Emigna
źródło
3

SOGL , 15 bajtów

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

Wyjaśnienie:

...“     push the number 4121998669867569415662783
    L«   push 20
      ─  convert 4121998669867569415662783 from base 10 to a base 20 number aka base 10 array 
dzaima
źródło
3

Galaretka , 21 bajtów

18473955480703453œ?19

Naprawdę chcę skompresować tę dużą liczbę, ale nie jestem pewien, jak to zrobić.

Wypróbuj online!

Okx
źródło
18473955480703453jest o 1 bajt krótszy.
Emigna
Popraw mnie, jeśli się mylę, ale czy lista indeksów stron kodowych nie będzie krótsza?
Nick Clifford
Kompresja RE: to ta sama liczba, której użyłem w mojej. Wszystko, co musisz zrobić, to przekonwertować liczbę na bazę bijective 250 za pomocą ḃ250i zaindeksować na stronie kodowej (co jest teraz łatwiejsze, ponieważ istnieje dla niej atom niladyczny ØJ).
Jonathan Allan
@NickClifford też będzie to 21 bajtów (19 indeksów, cytat otwarty i cytat zamknięty).
Jonathan Allan
@JonathanAllan Ah, rozumiem.
Nick Clifford
2

APL, 24 bajty

⎕A⍳'RQCKAGSIFEBPNHDLOMJ'

Wypróbuj online!

W jaki sposób?

⎕A                        ⍝ 'ABC...
   ⍳                       ⍝ indices of
    'RQCKAGSIFEBPNHDLOMJ'  ⍝ ← this vector
Uriel
źródło
1

JavaScript (ES6), 49 bajtów

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

darrylyeo
źródło
0

Mathematica, 37 bajtów

36^^md1o3apsqxqkfhq6~IntegerDigits~20

Objaśnienie (może to już być oczywiste, ponieważ Mathematica nie jest językiem kodegolfa, ale zgodnie z wymaganiami PO):

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

Wynik:

{18,17,3,11,1,7,19,9,6,5,2,16,14,8,4,12,15,13,10}
użytkownik202729
źródło
1
Zauważ, że złożoność kolmogorv w rzeczywistości dotyczy kompresji danych.
flawr
0

Japt , 27 bajtów

Zainspirowany rozwiązaniem rahnema1.

`ikrnfaqogcmdbsjlp`¨c -96

Wypróbuj online

Kudłaty
źródło