挑战
给定一个字符串作为输入,沿输出该字符串的Fourier程序运行。
在Fourier中,没有简单的方法来输出字符串:您必须检查每个字符代码并将其输出为字符。
傅里叶
该语言基于累加器,该累加器是全局变量,在程序启动时将其初始化为0。几乎所有操作员都使用此语言。只有一些不会更改累加器的值。
字符输出
a
将累加器的值作为ASCII码并输出字符。不更改累加器的值。
如果累加器大于255,则程序将返回错误。同样,如果累加器小于0。
编号
o
输出累加器的值。不更改累加器的值。
增加
^
将累加器增加一。
减少
v
将累加器减一。
加
+x
将累加器设置为累加器的值加x的值。
减去
-x
将累加器设置为累加器的值减去x的值。
乘
*x
将累加器设置为累加器的值乘以x的值。
划分
/x
将累加器设置为累加器的值除以x的值。(请注意,这是整数除法,因此1/6
得出0
)
数
n
将累加器设置为整数n。
注意
在这里,x
并且n
可以是从0
到的任何整数2^32-1
。
更多信息
您只能使用上述运算符。因此,如果输出的傅里叶程序使用以下任何一项,则它是无效的(请注意,允许使用以下运算符作为赏金):
- 重复循环
- 如果陈述
- 变数
- 随机
- 模数
- 用户输入
- 大于/小于运算符
- 平等经营者
- 清除萤幕
- 时间延迟
- 日期功能
您的程序可以是完整程序,也可以是函数,可以通过STDIN,文件或函数参数输入。您也可以直接从Internet获取输入。
请注意,如果vv
您的代码中包含,则应将其替换为-2
。这同样适用于^^
与替换它+2
。
例子
如果输入为7n
,则预期程序为:
55a110a
但是你可以用
55a*2a
另一种方法是
7o110a
使用号码了。
同样,如果输入为Hello
,则预期程序为:
72a101a108a108a111a
您可以将其压缩3个字节(因为输出不会更改累加器):
72a101a108aa111a
但是,等等,我们可以使用加法运算符,节省2个字节:
72a101a+7aa+3a
格式化
因为我将使用MartinBüttner的Stack Snippet排行榜,所以请您格式化标题,如下所示:
# <Language name>, <length of total output> bytes
然后,您可以将任何想要的内容放在标题下方。
获奖
您应该发布傅立叶程序的长度(由代码生成)以输出此文本文件和此文本文件。您的分数是两个Fourier程序的总长度(以字节为单位)(Fourier中未使用非ASCII字符,因此这实际上没有任何区别)。
得分最低的人获胜。如果有平局,则以字节为单位的最短程序获胜。
赏金
这500 rep赏金是针对一个新的答案的,它可以使用Fourier的任何功能来打高尔夫球。其中包括变量,循环和if语句等。此新答案将不被接受。
排行榜
请参阅上面的格式化部分:
var QUESTION_ID=55384;function answersUrl(e){return"http://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),e.has_more?getAnswers():process()}})}function shouldHaveHeading(e){var a=!1,r=e.body_markdown.split("\n");try{a|=/^#/.test(e.body_markdown),a|=["-","="].indexOf(r[1][0])>-1,a&=LANGUAGE_REG.test(e.body_markdown)}catch(n){}return a}function shouldHaveScore(e){var a=!1;try{a|=SIZE_REG.test(e.body_markdown.split("\n")[0])}catch(r){}return a}function getAuthorName(e){return e.owner.display_name}function process(){answers=answers.filter(shouldHaveScore).filter(shouldHaveHeading),answers.sort(function(e,a){var r=+(e.body_markdown.split("\n")[0].match(SIZE_REG)||[1/0])[0],n=+(a.body_markdown.split("\n")[0].match(SIZE_REG)||[1/0])[0];return r-n});var e={},a=1,r=null,n=1;answers.forEach(function(s){var t=s.body_markdown.split("\n")[0],o=jQuery("#answer-template").html(),l=(t.match(NUMBER_REG)[0],(t.match(SIZE_REG)||[0])[0]),c=t.match(LANGUAGE_REG)[1],i=getAuthorName(s);l!=r&&(n=a),r=l,++a,o=o.replace("{{PLACE}}",n+".").replace("{{NAME}}",i).replace("{{LANGUAGE}}",c).replace("{{SIZE}}",l).replace("{{LINK}}",s.share_link),o=jQuery(o),jQuery("#answers").append(o),e[c]=e[c]||{lang:c,user:i,size:l,link:s.share_link}});var s=[];for(var t in e)e.hasOwnProperty(t)&&s.push(e[t]);s.sort(function(e,a){return e.lang>a.lang?1:e.lang<a.lang?-1:0});for(var o=0;o<s.length;++o){var l=jQuery("#language-template").html(),t=s[o];l=l.replace("{{LANGUAGE}}",t.lang).replace("{{NAME}}",t.user).replace("{{SIZE}}",t.size).replace("{{LINK}}",t.link),l=jQuery(l),jQuery("#languages").append(l)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",answers=[],page=1;getAnswers();var SIZE_REG=/\d+(?=[^\d&]*(?:<(?:s>[^&]*<\/s>|[^&]+>)[^\d&]*)*$)/,NUMBER_REG=/\d+/,LANGUAGE_REG=/^#*\s*([^,]+)/;
body{text-align:left!important}#answer-list,#language-list{padding:10px;width:290px;float:left}table thead{font-weight:700}table td{padding:5px}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script><link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"><div id="answer-list"> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr></thead> <tbody id="answers"> </tbody> </table></div> <tbody id="languages"> </tbody> </table></div><table style="display: none"> <tbody id="answer-template"> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody></table>