다음은 0에서 9까지의 숫자에 대한 픽셀 화 된 5 x 7 글꼴입니다.
.███.
█...█
█...█
█...█
█...█
█...█
.███.
..█..
███..
..█..
..█..
..█..
..█..
█████
.███.
█...█
....█
...█.
..█..
.█...
█████
.███.
█...█
....█
..██.
....█
█...█
.███.
█..█.
█..█.
█..█.
█████
...█.
...█.
...█.
█████
█....
█....
.███.
....█
█...█
.███.
.███.
█...█
█....
████.
█...█
█...█
.███.
█████
....█
....█
...█.
...█.
..█..
..█..
.███.
█...█
█...█
.███.
█...█
█...█
.███.
.███.
█...█
█...█
.████
....█
█...█
.███.
(이 글꼴과이 페이지는 브라우저 콘솔이나 javascript:
:로 시작하는 URL 표시 줄에서이 JavaScipt 코드를 실행하면 더 좋아 보일 것입니다 $('#question pre,.answer pre').css('line-height',1)
.)
.
위의 글꼴에서 빈 공간 ( )을 나타내는 하나와 채워진 공간 ( █
) 을 나타내는 하나의 동일한 크기의 직사각형 텍스트 블록 두 개 를 작성하십시오 .
이 두 개의 텍스트 블록이 위의 숫자 중 하나와 동일한 5x7 패턴으로 배열되면 결과 큰 텍스트 블록은 해당 숫자를 표준 출력으로 인쇄하는 프로그램이어야합니다. 이것은 10 자리 모두에서 작동합니다.
예를 들어 .
텍스트 블록이
---
'''
그리고 당신의 █
텍스트 블록은
ABC
123
그런 다음 프로그램
---ABCABCABC---
'''123123123'''
ABC---------ABC
123'''''''''123
ABC---------ABC
123'''''''''123
ABC---------ABC
123'''''''''123
ABC---------ABC
123'''''''''123
ABC---------ABC
123'''''''''123
---ABCABCABC---
'''123123123'''
출력해야합니다 0
. 마찬가지로, 프로그램
------ABC------
''''''123''''''
ABCABCABC------
123123123''''''
------ABC------
''''''123''''''
------ABC------
''''''123''''''
------ABC------
''''''123''''''
------ABC------
''''''123''''''
ABCABCABCABCABC
123123123123123
1
에 대한 프로그램까지 출력해야 합니다 9
.
이 스택 스 니펫을 사용하여 숫자 모양의 프로그램을 만들 수 있습니다.
<style>textarea{font-family:monospace;}</style><script>function go(){var t=parseInt(document.getElementById("digit").value[0]);if(isNaN(t))return void alert("Invalid digit.");for(var e=document.getElementById("empty").value.split("\n"),n=document.getElementById("filled").value.split("\n"),l=[],o=0;o<7*e.length;o++){l[o]="";for(var d=0;5>d;d++)l[o]+=font[t][Math.floor(o/e.length)][d]?n[o%n.length]:e[o%e.length]}document.getElementById("output").value=l.join("\n")}font=[[[0,1,1,1,0],[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1],[0,1,1,1,0]],[[0,0,1,0,0],[1,1,1,0,0],[0,0,1,0,0],[0,0,1,0,0],[0,0,1,0,0],[0,0,1,0,0],[1,1,1,1,1]],[[0,1,1,1,0],[1,0,0,0,1],[0,0,0,0,1],[0,0,0,1,0],[0,0,1,0,0],[0,1,0,0,0],[1,1,1,1,1]],[[0,1,1,1,0],[1,0,0,0,1],[0,0,0,0,1],[0,0,1,1,0],[0,0,0,0,1],[1,0,0,0,1],[0,1,1,1,0]],[[1,0,0,1,0],[1,0,0,1,0],[1,0,0,1,0],[1,1,1,1,1],[0,0,0,1,0],[0,0,0,1,0],[0,0,0,1,0]],[[1,1,1,1,1],[1,0,0,0,0],[1,0,0,0,0],[0,1,1,1,0],[0,0,0,0,1],[1,0,0,0,1],[0,1,1,1,0]],[[0,1,1,1,0],[1,0,0,0,1],[1,0,0,0,0],[1,1,1,1,0],[1,0,0,0,1],[1,0,0,0,1],[0,1,1,1,0]],[[1,1,1,1,1],[0,0,0,0,1],[0,0,0,0,1],[0,0,0,1,0],[0,0,0,1,0],[0,0,1,0,0],[0,0,1,0,0]],[[0,1,1,1,0],[1,0,0,0,1],[1,0,0,0,1],[0,1,1,1,0],[1,0,0,0,1],[1,0,0,0,1],[0,1,1,1,0]],[[0,1,1,1,0],[1,0,0,0,1],[1,0,0,0,1],[0,1,1,1,1],[0,0,0,0,1],[1,0,0,0,1],[0,1,1,1,0]]]</script><textarea id='empty' rows='8' cols='32' placeholder='empty space text block...'></textarea><textarea id='filled' rows='8' cols='32' placeholder='filled space text block...'></textarea><br>Digit <input id='digit' type='text' value='0'> <button type='button' onclick='go()'>Generate</button><br><br><textarea id='output' rows='16' cols='64' placeholder='output...' style='background-color: #eee;' readonly></textarea>
세부
- 10 개의 큰 텍스트 블록 프로그램 중 어느 것도 입력 할 필요가 없습니다. 한 자릿수와 선택적인 후행 줄 바꿈 만 출력하십시오. stdout 또는 유사한 대안으로 출력합니다.
- 어떤 프로그램도 자신의 소스 코드를 읽거나 액세스 할 수 없습니다. 이것을 엄격한 퀴네 도전 처럼 취급하십시오 .
- 텍스트 블록은 동일하지 않을 수 있으며 0이 아닌 치수를 가져야합니다.
- 텍스트 블록은 줄 종결 자를 제외한 모든 문자를 포함 할 수 있습니다 .
- 10 개의 프로그램은 같은 언어로 작성된 본격적인 프로그램이어야하며 REPL 스 니펫 이 아닙니다 . 선택적으로 그들 모두에 후행 줄 바꿈을 추가하거나 전혀 추가하지 않을 수 있습니다.
채점
점수는 텍스트 블록 중 하나의 영역 (너비 x 높이)입니다. 크기는 동일하므로 두 블록을 모두 세는 데는 아무런 의미가 없습니다. 예제의 영역은 3 x 2이며 점수는 6입니다.
가장 낮은 점수가 이깁니다. 동점 인 경우, 가장 높은 투표 응답이 이깁니다.
text blocks may not be identical
정말? 모든 숫자가 정확히 같은 코드 일 때 마술처럼 다른 숫자를 반환하는 두 개의 동일한 코드 블록을 제공하여 누군가이 규칙을 위반하고 싶습니다 ^^
var t=parseInt(document.getElementById("digit").value[0]);if(isNaN(t))return void alert("Invalid digit.");
로 쓸 수 있습니다var t=document.getElementById("digit").value[0]/1;if(t!=t)return void alert("Invalid digit.");
. 동일하지만 더 짧습니다. 당신이 그것을 향상시킬 수있는 몇 가지 더 있지만, 좋아 보인다!