J, 126 124 121 119 116 115 113 105 116 115 112 문자
'|'s":(' 's[:,.(_6[\' || (__)'){~(,-.))&.>,.(|:@(1,.<&5);((i.5)</5|]))".,.1!:1[1[(s=:[,.~,.)9!:7'\=/<=>/=\|='
키보드에서 입력을받습니다. 예:
'|'s":(' 's[:,.(_6[\' || (__)'){~(,-.))&.>,.(|:@(1,.<&5);((i.5)</5|]))".,.1!:1[1[(s=:[,.~,.)9!:7'\=/<=>/=\|='
6302715408
|\==============================================================/|
|| (__) (__) (__) (__) (__) (__) (__) (__) (__) (__) ||
|| || (__) (__) (__) || (__) || (__) (__) || ||
|| || || || || || || || || || || ||
|| (__) || || || (__) || (__) || || (__) ||
|<==============================================================>|
|| (__) (__) || (__) (__) (__) || (__) || (__) ||
|| || (__) || (__) (__) || || (__) || (__) ||
|| || (__) || || || || || (__) || (__) ||
|| || || || || || || || (__) || || ||
|| || || || || || || || || || || ||
|| || || (__) || || || (__) || (__) || ||
|| (__) || (__) || || (__) (__) || (__) || ||
|| (__) || (__) (__) (__) (__) (__) || (__) || ||
|| (__) (__) (__) (__) (__) (__) (__) || (__) (__) ||
|| (__) (__) (__) (__) (__) (__) (__) (__) (__) (__) ||
|/==============================================================\|
여기서 주요 요령은 사용하는 문자를 재정 의하여 J의 권투를 남용하는 것입니다. 이를 위해 전역 매개 변수 --를 사용합니다 9!:7
. 추가 골프를위한 여지가 있을지 모르지만, 솔직히 말해서이 질문에 대한 나의 마지막 시도를 보상해야하는 무언가를 얻는 것이 기뻤습니다 .
'Gaz made this':-)라고 말할 수있는 문자가 남아있는 트윗에 들어갑니다.
편집 : 3 문자 절약은 Jesse Millikan의 답변 2 6$' || (__)'
에서 빌린 것입니다.
추가 편집 : 내가 보지 못한 양쪽에 공백을 추가하여 11 문자를 잃어 버렸습니다.
설명:
코드는 세 가지 주요 섹션에 있습니다.
1) 설정
[(s=:[,.~,.)9!:7'\=/<=>/=\|='
이것은 두 부분으로되어 있습니다.
9!:7'\=/<=>/=\|='
J가 상자를 표시하는 데 사용할 문자를 재정의합니다. J의 권투는 일반적으로 다음과 같습니다
2 2$<"0[1 2 3 4
┌─┬─┐
│1│2│
├─┼─┤
│3│4│
└─┴─┘
그러나 재정의 후에는 다음과 같습니다.
2 2$<"0[1 2 3 4
\===/
|1|2|
<===>
|3|4|
/===\
(s=:[,.~,.)
몇 번 후에 사용할 동사를 정의합니다. 이것은 그것을 선언하기 가장 좋은 곳으로 판명되었습니다. 왼쪽의 문자와 오른쪽의 문자 배열을 사용하여 문자 사이에 배열을 삽입합니다. 예를 들면 다음과 같습니다.
3 5$'abcdefghijklmno'
abcde
fghij
klmno
'-' s 3 5$'abcdefghijklmno'
-abcde-
-fghij-
-klmno-
마지막 [
은 다음 부분에서 설정을 분리하는 역할을합니다.
2) 입력과 표현
,.(|:@(1,.<&5);((i.5)</5|]))".,.1!:1[1
".,.1!:1[1
키보드에서 입력을 받아서 개별 숫자로 분리합니다.
".,.1!:1[1
314159
3 1 4 1 5 9
((i.5)</5|])
주판의 바닥 부분을 0과 1로 표현합니다.
((i.5)</5|]) 3 1 4 1 5 9
1 1 1 1 0 1
1 0 1 0 0 1
1 0 1 0 0 1
0 0 1 0 0 1
0 0 0 0 0 0
|:@(1,.<&5)
주판의 상단 부분을 0과 1로 표현합니다.
|:@(1,.<&5) 3 1 4 1 5 9
1 1 1 1 1 1
1 1 1 1 0 0
이 두 부분은 다음을 사용하여 함께 포장됩니다 ;
.
(|:@(1,.<&5);((i.5)</5|])) 3 1 4 1 5 9
\=======================/
|1 1 1 1 1 1|1 1 1 1 0 1|
|1 1 1 1 0 0|1 0 1 0 0 1|
| |1 0 1 0 0 1|
| |0 0 1 0 0 1|
| |0 0 0 0 0 0|
/=======================\
그런 다음 상자는 주판의 기초를 형성하기 위해 다른 하나 위에 배치되어 다음을 제공합니다.
,.(|:@(1,.<&5);((i.5)</5|]))".,.1!:1[1
314159
\===========/
|1 1 1 1 1 1|
|1 1 1 1 0 0|
<===========>
|1 1 1 1 0 1|
|1 0 1 0 0 1|
|1 0 1 0 0 1|
|0 0 1 0 0 1|
|0 0 0 0 0 0|
/===========\
3) 출력
'|'s":(' 's[:,.(_6[\' || (__)'){~(,-.))&.>
&.>
다음에 나오는 내용이 두 상자에서 차례로 작동 함을 의미합니다.
(,-.)
이것은 입력을 무효화 한 다음 원본의 끝에 추가하는 후크입니다.
2 5$1 0 1 0 1
1 0 1 0 1
1 0 1 0 1
(,-.) 2 5$1 0 1 0 1
1 0 1 0 1
1 0 1 0 1
0 1 0 1 0
0 1 0 1 0
이것은 실제로 표현의 일부이지만 골프 목적 으로이 섹션에 표시하는 것이 좋습니다. 이전 입력에 적용
(,-.)&.>,.(|:@(1,.<&5);((i.5)</5|]))".,.1!:1[1
314159
\===========/
|1 1 1 1 1 1|
|1 1 1 1 0 0|
|0 0 0 0 0 0|
|0 0 0 0 1 1|
<===========>
|1 1 1 1 0 1|
|1 0 1 0 0 1|
|1 0 1 0 0 1|
|0 0 1 0 0 1|
|0 0 0 0 0 0|
|0 0 0 0 1 0|
|0 1 0 1 1 0|
|0 1 0 1 1 0|
|1 1 0 1 1 0|
|1 1 1 1 1 1|
/===========\
[:,.(_6[\' || (__)'){~
0과 1은 이제 비드 또는 1이 없음을 나타내는 문자열을 선택하는 데 사용됩니다.
([:,.(_6[\' || (__)'){~(,-.))&.>,.(|:@(1,.<&5);((i.5)</5|]))".,.1!:1[1
314159
\====================================/
| (__) (__) (__) (__) (__) (__) |
| (__) (__) (__) (__) || || |
| || || || || || || |
| || || || || (__) (__) |
<====================================>
| (__) (__) (__) (__) || (__) |
| (__) || (__) || || (__) |
| (__) || (__) || || (__) |
| || || (__) || || (__) |
| || || || || || || |
| || || || || (__) || |
| || (__) || (__) (__) || |
| || (__) || (__) (__) || |
| (__) (__) || (__) (__) || |
| (__) (__) (__) (__) (__) (__) |
/====================================\
그러나 지금 하워드가 지적한 것처럼, 구슬의 양쪽에 하나의 공간이 짧습니다. 따라서 우리는 미리 정의 된 s
동사를 사용하여 두 칸의 열 사이에 각 상자의 내용을 끼워 넣습니다.
(' 's[:,.(_6[\' || (__)'){~(,-.))&.>,.(|:@(1,.<&5);((i.5)</5|]))".,.1!:1[1
314159
\======================================/
| (__) (__) (__) (__) (__) (__) |
| (__) (__) (__) (__) || || |
| || || || || || || |
| || || || || (__) (__) |
<======================================>
| (__) (__) (__) (__) || (__) |
| (__) || (__) || || (__) |
| (__) || (__) || || (__) |
| || || (__) || || (__) |
| || || || || || || |
| || || || || (__) || |
| || (__) || (__) (__) || |
| || (__) || (__) (__) || |
| (__) (__) || (__) (__) || |
| (__) (__) (__) (__) (__) (__) |
/======================================\
그 후에 남은 것은 이것을 ":
두 개의 열 사이에 끼워 넣을 수 있도록 문자열로 변환 하는 것입니다 |
.
'|'s":(' 's[:,.(_6[\' || (__)'){~(,-.))&.>,.(|:@(1,.<&5);((i.5)</5|]))".,.1!:1[1
314159
|\======================================/|
|| (__) (__) (__) (__) (__) (__) ||
|| (__) (__) (__) (__) || || ||
|| || || || || || || ||
|| || || || || (__) (__) ||
|<======================================>|
|| (__) (__) (__) (__) || (__) ||
|| (__) || (__) || || (__) ||
|| (__) || (__) || || (__) ||
|| || || (__) || || (__) ||
|| || || || || || || ||
|| || || || || (__) || ||
|| || (__) || (__) (__) || ||
|| || (__) || (__) (__) || ||
|| (__) (__) || (__) (__) || ||
|| (__) (__) (__) (__) (__) (__) ||
|/======================================\|