젤리 , 37 34 바이트
“¢ ¬9£Hæz¥{çb¤S®!‘ṃ€“¡&¦»
¢iµ’,‘ị¢
온라인으로 사용해보십시오!
소문자 입력을받습니다.
Jonathan Allan 에게 -2 감사합니다 .
-1 이것은 함수로 유효하다는 것이 밝혀졌습니다. :)
Jonathan Allan (및 Dennis) 덕분에 이제를 제거 할 수 있습니다 €
. 불행히도 여기서는 경쟁이 아닙니다.
자세한 알고리즘 설명 :
우리는 일반적으로 아래쪽 (주) 링크에서 설명을 시작하여 아래로 내려갑니다. 그러나 여기서는 위에서 설명하는 것이 더 적절하다고 생각합니다.
먼저 단순히 목록을로드합니다 [1, 32, 7, 57, 2, 67, 17, 92, 3, 94, 19, 119, 4, 109, 9, 34]
. 이것은 임의의 숫자처럼 보입니까? 자, 이것은 실제로 기본 5 압축 숫자 목록이므로 기본 5 압축 해제합니다. 이제는 다음과 같습니다 [[1], [1, 1, 2], [1, 2], [2, 1, 2], [2], [2, 3, 2], [3, 2], [3, 3, 2], [3], [3, 3, 4], [3, 4], [4, 3, 4], [4], [4, 1, 4], [1, 4], [1, 1, 4]]
. 여전히 무작위로 보이는 물건이지만 실제로는 NESW
16 개의 좌표 가 매핑 된 목록이므로 목록을 완성하는 데 그리 멀지 않습니다 (젤리는 1 인덱싱 됨). 최종 매핑을 수행하면 [['N'], ['N', 'N', 'E'], ['N', 'E'], ['E', 'N', 'E'], ['E'], ['E', 'S', 'E'], ['S', 'E'], ['S', 'S', 'E'], ['S'], ['S', 'S', 'W'], ['S', 'W'], ['W', 'S', 'W'], ['W'], ['W', 'N', 'W'], ['N', 'W'], ['N', 'N', 'W']]
원하는 전체 목록 인을 얻을 수 있습니다 (젤리 문자열은 형식 [char1, char2, char3, ...]
입니다).
좌표 목록을 만들었으므로 함께 작업합니다. 메인 링크가 작동합니다. 먼저 빌드 한 목록을로드 한 다음 입력 (명령 줄 인수로) 좌표가있는 인덱스를 가져옵니다. 그런 다음 선행 작업과 후속 작업을 목록으로 쌍을 이루고이를 모듈로 사용합니다. 동일한 좌표 목록에 인덱스를 사용하여 입력의 왼쪽과 오른쪽으로 각각 좌표를 가져옵니다. 이제 우리는 마침내 끝났다고 생각할 것입니다. 그러나 실제로 한 가지 더 구분자가 있습니다. 1) 다음을 사용하여 호출 할 수 있기 때문에 함수로 유효합니다. <integer>Ŀ
2) 모듈 가져 오기와 같은 다른 함수도 정의 할 수 있습니다. 이제 끝났습니다. 전체 프로그램으로서, 이것은 분리자를 갖지 않지만 함수로서 작동하기 때문에 괜찮습니다.
링크 별 코드 설명 :
¢iµ’,‘ị¢K Main link. Arguments: z = cmd0
¢ Run the helper link niladically (i.e. load the coordinate list).
i Find the index of z in the list.
µ Start a new monadic chain. Arguments: z = list_index.
’ Decrement z.
‘ Increment z.
, Pair x and y into [x, y].
¢ Run the helper link niladically.
ị Take the elements of y at the indices in x.
“¢ ¬9£Hæz¥{çb¤S®!‘ṃ€“¡&¦» Helper link. Arguments: [1, 32, 7, 57, 2, 67, 17, 92, 3, 94, 19, 119, 4, 109, 9, 34]
“¢ ¬9£Hæz¥{çb¤S®!‘ Generate the integer list (the argument).
“¡&¦» Literal "newsy".
ṃ€ Base-length(y)-decompress every integer in x, then index into y.