Sihirli Altıgen


17

Birçok sihirli kareler var, ancak Dr.James Grime'ın açıkladığı gibi , sadece bir önemsiz sihirli altıgen var :

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

Hexagony'de yapıldığı gibi bu sadece tek bir satır olarak yazılır, sadece satır satır okunarak:

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

Tabii ki, rotasyonları ve yansımaları sayarsanız, bu sihirli altıgenin toplam on iki liste temsili vardır. Örneğin, yukarıdaki altıgenin saat yönünde 1/6 dönüşü,

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

@Okx, kalan varyantları listelemek istedi. Kalan listeler:

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

artı tüm belirtilen listeler tersine çevrildi.

Meydan okuma

Sihirli altıgeni liste olarak veren bir program yazın. Altıgenin 12 yansıma / dönüşünden herhangi birini seçebilirsiniz .

Lütfen çözümünüzün nasıl çalıştığına dair birkaç kelime ekleyin.


2
Bu altıgen şeklinde yapılabilir mi? Eğer öyleyse, bu cevabı ödüllendirmek için bir ödül koyacağım.
Bay Xcoder

1
@ Mr.Xcoder şey olabilir Hexagony yapılabilir. Muhtemelen çok ilginç olmayacak, çünkü listelerden birini tam anlamıyla yazdırmak için baytları kaydedebileceğinizden şüpheliyim.
Martin Ender

Yanıtlar:



5

Jöle , 11 bayt

“JɼQⱮȦ>Ȯ’Œ?

Verilen yönün listesini döndüren bir niladik bağlantı sol-sağ yansımıştır.

Çevrimiçi deneyin!

Nasıl?

Sadece yaptığım şey Œ?

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

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

(Kontrol karakterleri görüntüleme rahatlığınız için \x06ve ile değiştirilir \x11.)

Çevrimiçi deneyin

Nasıl çalışır

   "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 bayt

Her iki çözüm de listeyi oluşturur [3,17,18,19,7,1,11,16,2,5,6,9,12,4,8,14,10,13,15]

19Lœ•δn2мׄÁ•è

[1...19]Bu listeye bir dizi 255 sıkıştırılmış temel 10 numarasıyla dizinin ve dizinlerin tüm (sıralı) permütasyonlarının bir listesini oluşturur .

Veya 15 bayt çevrimiçi çalıştırılabilir

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

Bir taban 255 dizesini taban 10 numarasına açar ve taban 20 basamaklı bir listeye dönüştürür.

Çevrimiçi deneyin!


3

SOGL , 15 bayt

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

Açıklama:

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

3

Jöle , 21 bayt

18473955480703453œ?19

O büyük sayıyı gerçekten sıkıştırmak istiyorum, ama nasıl olduğundan emin değilim

Çevrimiçi deneyin!


184739554807034531 bayt daha kısadır.
Emigna

Yanılıyorsam beni düzeltin, ancak kod sayfası dizinlerinin listesi daha kısa olmaz mı?
Nick Clifford

RE sıkıştırma: Benimkinde kullandığım aynı sayı. Yapmanız gereken tek şey sayı ḃ250ve endeks kullanarak kodu iki yönlü tabana 250 dönüştürmek (niladik bir atom olduğu için artık daha kolay ØJ).
Jonathan Allan

@NickClifford da 21 bayt olur (19 dizin, açık bir teklif ve bir yakın teklif).
Jonathan Allan

@JonathanAllan Ah, anladım.
Nick Clifford

2

APL, 24 bayt

⎕A⍳'RQCKAGSIFEBPNHDLOMJ'

Çevrimiçi deneyin!

Nasıl?

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


0

Mathematica, 37 bayt

36^^md1o3apsqxqkfhq6~IntegerDigits~20

Açıklama (Mathematica bir kod golf dili değil, OP gereksinimine göre zaten açık olabilir):

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

Çıktı:

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

1
Not o Kolmogorv-karmaşıklık aslında bir veri sıkıştırma hakkında.
flawr

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.