นี่คือตัวอักษรแบบพิกเซล 5 คูณ 7 สำหรับตัวเลข 0 ถึง 9:
.███.
█...█
█...█
█...█
█...█
█...█
.███.
..█..
███..
..█..
..█..
..█..
..█..
█████
.███.
█...█
....█
...█.
..█..
.█...
█████
.███.
█...█
....█
..██.
....█
█...█
.███.
█..█.
█..█.
█..█.
█████
...█.
...█.
...█.
█████
█....
█....
.███.
....█
█...█
.███.
.███.
█...█
█....
████.
█...█
█...█
.███.
█████
....█
....█
...█.
...█.
..█..
..█..
.███.
█...█
█...█
.███.
█...█
█...█
.███.
.███.
█...█
█...█
.████
....█
█...█
.███.
(แบบอักษรนี้และหน้านี้อาจจะดูดีขึ้นหากคุณเรียกใช้รหัส JavaScipt นี้ในคอนโซลเบราว์เซอร์ของคุณหรือในแถบ URL นำหน้าด้วยjavascript:
: $('#question pre,.answer pre').css('line-height',1)
.)
เขียนบล็อกสี่เหลี่ยมที่มีขนาดเท่ากันสองอันหนึ่งอันเพื่อเป็นตัวแทนของช่องว่าง ( .
) ในแบบอักษรด้านบนและอีกอันหนึ่งเพื่อเป็นตัวแทนของช่องว่างที่เต็มไป (█
)
เมื่อบล็อกข้อความทั้งสองนี้ถูกจัดเรียงในรูปแบบ 5 × 7 เดียวกับหนึ่งในตัวเลขข้างต้นบล็อกข้อความขนาดใหญ่ที่ได้ควรเป็นโปรแกรมที่พิมพ์ตัวเลขนั้นเป็น stdout สิ่งนี้น่าจะใช้ได้กับเลข 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 หรือทางเลือกที่คล้ายกัน
- ไม่มีโปรแกรมใดที่สามารถอ่านหรือเข้าถึงซอร์สโค้ดของตนเองได้ รักษาเช่นนี้อย่างเคร่งครัดควินท้าทาย
- บล็อคข้อความอาจไม่เหมือนกันและต้องมีขนาดที่ไม่ใช่ศูนย์
- บล็อกข้อความอาจจะมีตัวอักษรใด ๆ ยกเว้นจุดสิ้นสุดบรรทัด
- โปรแกรม 10 โปรแกรมนั้นต้องเป็นโปรแกรมที่เขียนด้วยภาษาเดียวกันไม่ใช่โปรแกรมตัวอย่างของREPL คุณสามารถเลือกที่จะเพิ่มการขึ้นบรรทัดใหม่ต่อท้ายทั้งหมดหรือไม่ก็ได้
เกณฑ์การให้คะแนน
คะแนนของคุณคือพื้นที่ (ความสูงคูณความกว้าง) ของหนึ่งในบล็อคข้อความของคุณ (มีขนาดเท่ากันดังนั้นจึงไม่มีจุดในการนับทั้งสองช่วง) พื้นที่ของตัวอย่างคือ 3 คูณ 2 สำหรับคะแนน 6
คะแนนต่ำสุดชนะ ในกรณีที่มีความสัมพันธ์กันคำตอบที่ได้รับคะแนนสูงสุดจะเป็นผู้ชนะ
text blocks may not be identical
จริงๆ? ฉันต้องการเห็นใครบางคนทำผิดกฎนี้โดยให้ codeblocks ที่เหมือนกันสองตัวซึ่งส่งกลับตัวเลขที่แตกต่างกันอย่างน่าอัศจรรย์เมื่อทุก ๆ หมายเลขนั้นเป็นรหัสเดียวกัน ^^
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.");
ซึ่งเหมือนกัน แต่สั้นกว่า มีอีกสองสามสิ่งที่คุณสามารถปรับปรุงได้ แต่มันก็ดูดี!