首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >纯源整形程序,输出数字0到9

纯源整形程序,输出数字0到9
EN

Code Golf用户
提问于 2015-03-03 08:35:50
回答 1查看 2.6K关注 0票数 27

以下是数字0到9的像素化5×7字体:

代码语言:javascript
复制
.███.
█...█
█...█
█...█
█...█
█...█
.███.

..█..
███..
..█..
..█..
..█..
..█..
█████

.███.
█...█
....█
...█.
..█..
.█...
█████

.███.
█...█
....█
..██.
....█
█...█
.███.

█..█.
█..█.
█..█.
█████
...█.
...█.
...█.

█████
█....
█....
.███.
....█
█...█
.███.

.███.
█...█
█....
████.
█...█
█...█
.███.

█████
....█
....█
...█.
...█.
..█..
..█..

.███.
█...█
█...█
.███.
█...█
█...█
.███.

.███.
█...█
█...█
.████
....█
█...█
.███.

(如果您在浏览器控制台或以javascript:__:$('#question pre,.answer pre').css('line-height',1)__为前缀的地址栏中运行此__代码,则此字体和页面的外观可能会更好。)

编写两个大小相等的矩形文本块,一个表示上面字体中的空白(.),另一个表示填充的空格()。

当这两个文本块被排列成与上面的一个数字相同的5×7模式时,产生的大文本块应该是一个将该数字打印到stdout的程序。这应该适用于所有10位数。

例如,如果.文本块是

代码语言:javascript
复制
---
'''

而您的文本块是

代码语言:javascript
复制
ABC
123

然后是程序

代码语言:javascript
复制
---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。类似地,程序

代码语言:javascript
复制
------ABC------
''''''123''''''
ABCABCABC------
123123123''''''
------ABC------
''''''123''''''
------ABC------
''''''123''''''
------ABC------
''''''123''''''
------ABC------
''''''123''''''
ABCABCABCABCABC
123123123123123

应该输出1等为9的程序。

您可以使用此堆栈片段来制作数字形状的程序:

代码语言:javascript
复制
<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。

得分最低者获胜。如果发生关系,最高投票的答案将获胜。

EN

回答 1

Code Golf用户

发布于 2015-03-04 00:35:42

><> (鱼类),5* 10 = 50

空块

代码语言:javascript
复制
   \   !9 
4n;    n/ 
1n;\      
       \  
0n;n7\\\  

固体块

代码语言:javascript
复制
   \; n8/ 
     /!/!v
     \  ;6
3n;\ ! /nn
2n;n5<  8;

此代码不包含任何逻辑或算术,只使用静态重定向><>'s 2D指令指针(IP)与‘镜像’(/\)和两个‘箭头’(<v)。唯一的其他流量控制器是“蹦床”(!),它跳过下一个字符。

IP从左上角向东开始。经过一些重定向,它到达一个数字,它被推到堆栈上,用n打印出来,程序以;结束。

程序流

块“识别”程序的当前状态,这是因为IP进入哪个点,并根据它的状态来决定应该释放指针的方向(接下来应该执行哪个块)以及指针应该保留的确切位置(这将是新的状态)。当然,块不执行任何逻辑,所有这些行为都来自重定向器。

票数 28
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codegolf.stackexchange.com/questions/47296

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档