05AB1E , 137 135 128 122 바이트
…( )7ÝJ»•αγʒδÓ₂©8¥ŽQxΣxêÿ•12вèJIvN”</[(
._-=:"ÆŸ,*”º•DùÙÂ+;Èγтáì³ÓW©ÎÂ_`ƒ≠îj*ΓçÊ~ÞÒ¸β¦oåb/õ47/vÎΓ”›≠øØZµλݺ•20в趡Nè4äyè.;
@Grimy 덕분에 -6 바이트 .
온라인으로 시도 하거나 몇 가지 테스트 사례를 확인하십시오 .
설명:
먼저 템플릿 문자열을 만듭니다.
…( ) # Push string "( )"
7ÝJ # Push a list in the range [0,7] joined together: "01234567"
» # Join both by a newline: "( )\n01234567"
•αγʒδÓ₂©2°ćì₂òη₆½•
# Push compressed integer 80545642885242518310229085147411483894
12в # Convert it to Base-12 as list: [1,4,4,4,4,4,3,1,4,4,4,4,4,3,8,0,6,5,7,2,9,3,8,0,10,10,10,2,9,3,1,0,11,11,11,2]
è # Index each into the string: [" ","0","0","0","0","0","\n"," ","0","0","0","0","0","\n","4","(","2","1","3",")","5","\n","4","(","6","6","6",")","5","\n"," ","(","7","7","7",")"]
J # And join it to a single string: " 00000\n 00000\n4(213)5\n4(666)5\n (777)"
이것은 다음과 같습니다
00000
00000
4(213)5
4(666)5
(777)
그런 다음 입력 숫자를 반복합니다.
I # Get the input
v # Loop `y` over each of its digits:
그리고 다음을 수행하십시오. 목록
의 (0- 인덱스 화 된) 색인 N
을 누르십시오 .
N # Push the index of the loop
가능한 모든 부품을 문자 목록으로 푸시하십시오.
”</[(
._-=:"ÆŸ,*”
"# Push dictionary string "</[(\n._-=:" Oo,*"
º # Mirror each line: "</[()]\>\n._-=:" Oo,**,oO ":=-_."
•DùÙÂ+;Èγтáì³ÓW©ÎÂ_`ƒ≠îj*ΓçÊ~ÞÒ¸β¦oåb/õ47/vÎΓ”›≠øØZµλݺ•
# Push compressed integer 492049509496347122906361438631265789982480759119518961177677313610613993948059787418619722816092858096158180892708001681647316210
20в # Convert it to Base-20 as list: [15,10,10,10,15,3,10,19,10,4,15,15,15,15,15,10,12,12,12,10,15,10,10,10,15,9,9,9,9,9,15,15,10,15,15,15,1,10,6,15,8,15,18,9,10,8,11,9,17,16,8,11,9,17,16,8,15,15,15,0,6,15,15,1,8,15,15,15,7,1,15,15,6,8,15,15,15,15,13,15,5,15,2,7,15,0,8,15,15,15,15,13,15,14,15,14,10,10,10]
è # Index each into the string: [" ","_","_","_"," ","(","_","*","_",")"," "," "," "," "," ","_","=","=","=","_"," ","_","_","_"," ",".",".",".",".","."," "," ","_"," "," "," ","/","_","\"," ","\n"," ",",",".","_","\n","-",".","o","O","\n","-",".","o","O","\n"," "," "," ","<","\"," "," ","/","\n"," "," "," ",">","/"," "," ","\","\n"," "," "," "," ",":"," ","]"," ","[",">"," ","<","\n"," "," "," "," ",":"," ","""," ",""","_","_","_"]
¶¡ # Split it by the newline character: [[" ","_","_","_"," ","(","_","*","_",")"," "," "," "," "," ","_","=","=","=","_"," ","_","_","_"," ",".",".",".",".","."," "," ","_"," "," "," ","/","_","\"," "],[" ",",",".","_"],["-",".","o","O"],["-",".","o","O"],[" "," "," ","<","\"," "," ","/"],[" "," "," ",">","/"," "," ","\"],[" "," "," "," ",":"," ","]"," ","[",">"," ","<"],[" "," "," "," ",":"," ","""," ",""","_","_","_"]]
루프 인덱스 N
를 사용하여 현재 작업중인 부품의 문자 목록을 가져옵니다.
Nè # Index the loop index into it
# i.e. 6 → [" "," "," "," ",":"," ","]"," ","[",">"," ","<"]
그런 다음 문자 목록을 4 개의 동일한 부분으로 나누고 입력 숫자 y
(1 색인)를 사용하여 색인화하십시오. (참고 : 05AB1E는 0- 인덱싱되지만 입력은 1- 인덱싱되기 때문에 인덱싱하기 전에 숫자를 1 씩 줄이는 것이 논리적이지만, 05AB1E에는 자동 랩 어라운드 가 있으므로 ( 3
목록의 인덱싱 [1,3,5]
결과는 1
) 챌린지 설명에서 nr 4 인 부품이 목록의 맨 앞에 오도록 부품을 한 번 회전했습니다.)
4ä # Split it into 4 equal parts
# i.e. [[" "," "," "],[" ",":"," "],["]"," ","["],[">"," ","<"]]
yè # Index the input-digit `y` into it (with automatic wraparound)
# i.e. 4 → [" "," "," "]
그런 다음 처음에 푸시 한 루프의 인덱스가 0 인 인덱스를 부분 문자로 하나씩 바꿉니다.
.; # Replace first; every index of the loop `N` in the template-string
# is replaced one by one with the characters
결국 결과는 암시 적으로 출력됩니다.
내이 05AB1E 팁을 참조하십시오 (섹션 얼마나 큰 정수를 압축하는 방법? 및 정수 목록을 압축하는 방법을? ) 압축 부분이 어떻게 작동하는지 이해하기.
내가 가장 좋아하는 것은 1.5 년 전 Java 솔루션을 게시했을 때와 동일한 '눈 토끼'입니다 .
44114432:
_
(_*_)
(. .)
(> <)
(" ")