Hình lục giác ma thuật


17

Có nhiều hình vuông ma thuật, nhưng chỉ có một hình lục giác ma thuật không tầm thường, như Tiến sĩ James Grime đã giải thích , đó là:

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

Vì nó được thực hiện trong Hexagony, đây là cách dễ nhất được viết dưới dạng một dòng, chỉ bằng cách đọc từng hàng:

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

Tất nhiên, có tổng cộng mười hai đại diện danh sách như vậy của hình lục giác ma thuật này, nếu bạn tính các phép quay và phản xạ. Ví dụ, một vòng quay 1/6 theo chiều kim đồng hồ của hình lục giác ở trên sẽ dẫn đến

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

@Okx yêu cầu liệt kê các biến thể còn lại. Các danh sách còn lại là:

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

cộng với tất cả các danh sách được đề cập đảo ngược.

Thử thách

Viết chương trình xuất ra hình lục giác ma thuật dưới dạng danh sách. Bạn có thể chọn bất kỳ trong số 12 phản xạ / xoay của hình lục giác.

Vui lòng thêm một vài từ về cách giải pháp của bạn hoạt động.


2
Điều này có thể được thực hiện trong hexagony? Nếu vậy, tôi sẽ đặt tiền thưởng để trả lời cho câu trả lời đó.
Ông Xcoder

1
@ Mr.Xcoder Bất cứ điều gì cũng có thể được thực hiện trong Hexagony. Có lẽ nó sẽ không thú vị lắm, vì tôi nghi ngờ rằng bạn sẽ có thể lưu byte chỉ bằng cách in một trong các danh sách theo nghĩa đen.
Martin Ender

Câu trả lời:



5

Thạch , 11 byte

“JɼQⱮȦ>Ȯ’Œ?

Một liên kết niladic trả về danh sách các hướng đã cho phản ánh trái-phải.

Hãy thử trực tuyến!

Làm sao?

Chỉ là thứ mà tôi đã làm Œ?

“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

Bình thường, 15 byte

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

(Các ký tự điều khiển được thay thế bằng \x06\x11để thuận tiện cho việc xem của bạn.)

Dùng thử trực tuyến

Làm thế nào nó hoạt động

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

Cả hai giải pháp tạo ra danh sách [3,17,18,19,7,1,11,16,2,5,6,9,12,4,8,14,10,13,15]

19Lœ•δn2мׄÁ•è

Tạo một danh sách tất cả các hoán vị (được sắp xếp) của phạm vi [1...19]và các chỉ mục vào danh sách đó với số 10 cơ sở được nén 255.

Hoặc 15 byte có thể chạy trực tuyến

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

Giải nén chuỗi 255 cơ sở thành số 10 cơ sở và chuyển đổi thành danh sách gồm 20 chữ số cơ sở.

Hãy thử trực tuyến!


3

SOGL , 15 byte

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

Giải trình:

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

3

Thạch , 21 byte

18473955480703453œ?19

Tôi thực sự muốn nén số lượng lớn đó, nhưng tôi không biết làm thế nào.

Hãy thử trực tuyến!


18473955480703453ngắn hơn 1 byte.
Emigna

Chỉnh sửa cho tôi nếu tôi sai, nhưng danh sách các chỉ mục trang mã sẽ ngắn hơn?
Nick Clifford

Nén RE: Đó là cùng một số tôi đã sử dụng trong tôi. Tất cả những gì bạn phải làm là chuyển đổi số thành cơ sở tính toán 250 bằng cách sử dụng ḃ250và lập chỉ mục vào trang mã (giờ đây dễ dàng hơn vì có một nguyên tử niladic cho nó, ØJ).
Jonathan Allan

@NickClifford nó cũng sẽ là 21 byte (19 chỉ mục, một trích dẫn mở và một trích dẫn gần).
Jonathan Allan

@Jonathan ALLan Ah, hiểu rồi.
Nick Clifford



0

Toán học, 37 byte

36^^md1o3apsqxqkfhq6~IntegerDigits~20

Giải thích (điều đó có thể đã rõ ràng vì Mathematica không phải là ngôn ngữ codegolf, nhưng theo yêu cầu của 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

Đầu ra:

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

1
Lưu ý rằng độ phức tạp của kolmogorv thực sự về nén dữ liệu.
flawr

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.