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.