魔术六角


17

正如James Grime博士所解释的,有很多魔术方块,但是只有一个非平凡的魔术六角形,如下所示:

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

正如在Hexagony中所做的那样,只需逐行阅读,最容易写成一行:

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

如果计算旋转和反射,当然总共有十二个这种六边形的此类列表表示形式。例如,上述六边形的顺时针旋转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先生17年

1
@ Mr.Xcoder 可以在Hexagony中完成任何操作。可能不会很有趣,因为我怀疑您仅通过按字面意义打印其中一个列表就能节省字节。
Martin Ender

Answers:



5

果冻,11 字节

“JɼQⱮȦ>Ȯ’Œ?

一条返回给定方向列表的尼拉第链接反映了左右方向。

在线尝试!

怎么样?

就是我所做的那种事情 Œ?

“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

我确实想压缩这么大的数字,但是我不确定如何压缩。

在线尝试!


18473955480703453短1个字节。
Emigna

如果我错了,请纠正我,但是代码页索引的列表不会更短吗?
尼克·克利福德

RE压缩:与我使用的数字相同。您所要做的就是使用并将数字转换为双射基数250,ḃ250并将其索引到代码页中(这现在更容易了,因为有一个尼拉第原子ØJ)。
乔纳森·艾伦,

@NickClifford也将是21个字节(19个索引,一个开放引号和一个封闭引号)。
乔纳森·艾伦,

@JonathanAllan啊,明白了。
尼克·克利福德

2

APL,24个字节

⎕A⍳'RQCKAGSIFEBPNHDLOMJ'

在线尝试!

怎么样?

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


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复杂性实际上关于数据压缩的。
瑕疵的

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.