魔法の六角形


17

魔方陣はたくさんありますが、ジェームズ・グライム博士が説明したように、次のような、重要な六角形が1つだけあります。

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

Hexagonyで行われているように、これは1行ずつ読み取るだけで簡単に1行で記述できます。

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

もちろん、回転と反射をカウントする場合、この魔法の六角形の合計12のそのようなリスト表現があります。たとえば、上記の六角形を時計回りに1/6回転させると、

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

@Okxは、残りの亜種のリストを要求しました。残りのリストは次のとおりです。

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

さらに、言及されたすべてのリストが逆になりました。

チャレンジ

魔法の六角形をリストとして出力するプログラムを作成します。六角形の12の反射/回転のいずれかを選択できます。

ソリューションがどのように機能するかについて、いくつかの言葉を追加してください。


2
これは六角形で行うことができますか?もしそうなら、私はその答えに報いるために賞金を入れます。
ミスターXcoder

1
@ Mr.Xcoder Hexagonyでは何でもできます。リストの1つを文字通り印刷するだけでバイトを節約できるとは思えないので、おそらくあまり面白くないでしょう。
マーティンエンダー

回答:



5

ゼリー、11 バイト

“JɼQⱮȦ>Ȯ’Œ?

指定された方向のリストを返すniladicリンクは、左右に反映されます。

オンラインでお試しください!

どうやって?

ちょうど私が作ったようなもの Œ?

“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バイト

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

(制御文字は、\x06および\x11あなたの閲覧の利便性のために。)

オンラインで試す

使い方

   "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バイト

両方のソリューションがリストを生成します [3,17,18,19,7,1,11,16,2,5,6,9,12,4,8,14,10,13,15]

19Lœ•δn2мׄÁ•è

範囲のすべての(ソートされた)順列のリストを生成します [1...19]し、ベース255の圧縮されたベース10の数値でそのリストにインデックスを付けます。

またはオンラインで実行可能な15バイト

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

基数255の文字列を基数10の数値に圧縮解除し、基数20の数字のリストに変換します。

オンラインでお試しください!


3

SOGL、15 バイト

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

説明:

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

3

ゼリー、21バイト

18473955480703453œ?19

私は本当にその大きな数を圧縮したいのですが、どうすればいいかわかりません。

オンラインでお試しください!


184739554807034531バイト短くなります。
エミグナ

私が間違っている場合は修正しますが、コードページのインデックスのリストは短くなりませんか?
ニッククリフォード

RE圧縮:私が使ったのと同じ数字です。あなたがしなければならないのはḃ250、コードページにインデックスを付けて番号を全単射の基数250に変換することです(これには、ニラディックアトムがあるので簡単になりますØJ)。
ジョナサンアラン

@NickCliffordは21バイトにもなります(19個のインデックス、オープンクォート、クローズクォート)。
ジョナサンアラン

@JonathanAllanああ、わかった。
ニッククリフォード



0

Mathematica、37バイト

36^^md1o3apsqxqkfhq6~IntegerDigits~20

説明(Mathematicaはコードゴルフ言語ではないが、OPの要件に応じてすでに明らかである可能性があります):

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

出力:

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

1
kolmogorv-complexityは実際にデータ圧縮に関するものであることに注意してください。
-flawr

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.