매직 육각


17

많은 마술 사각형이있다, 그러나 다만이 이 아닌 사소한 마법 육각형으로, 박사 제임스 피부를 깨끗하게 설명 다음이다 :

  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

물론 회전과 반사를 세면이 마법 육각형에 대한 총 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
육각형으로 할 수 있습니까? 그렇다면 그 답을 보상하기 위해 현상금을 지급 할 것입니다.
Mr. Xcoder 2018 년

1
@ Mr.Xcoder Hexagony에서 무엇이든 할 수 있습니다. 목록 중 하나를 문자 그대로 인쇄하는 것보다 바이트를 절약 할 수 있을지 의심 스럽기 때문에 아마도 그다지 흥미롭지 않을 것입니다.
Martin Ender 2016 년

답변:



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

나는 그 큰 숫자를 정말로 압축하고 싶지만 어떻게하는지 잘 모르겠습니다.

온라인으로 사용해보십시오!


184739554807034531 바이트 더 짧습니다.
Emigna

내가 틀렸다면 정정하지만 코드 페이지 색인 목록이 더 짧지 않습니까?
Nick Clifford

RE 압축 : 필자가 사용한 것과 같은 숫자입니다. ḃ250코드 페이지를 사용하여 숫자를 bijective base 250으로 변환하기 만하면 ØJ됩니다.
Jonathan Allan

@ NickClifford는 21 바이트이기도합니다 (19 개의 색인, 열린 따옴표 및 가까운 따옴표).
Jonathan Allan

@JonathanAllan 아, 알았어.
Nick Clifford



0

수학, 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 복잡도는 사실 이다 데이터 압축에 대해.
flawr

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.