参考十进制中可打印的ASCII字符码,我们知道,从32到126,我们有32为(空格)的可打印字符。您的挑战是编写一个只使用从32个字符到125个字符(不包括126个字符)的程序,该程序在执行时打印自己的源代码,但源代码中的每个字符的ASCII代码增加一个。
例如,如果源代码是
main(){printf("Hello World");}它的产出是
nbjo)*|qsjoug)#Ifmmp!Xpsme#*<~禁止下列规定:
这是一场受欢迎的比赛,在等待了至少两周之后,无论用哪种语言,以最高得票率的答案都是以较小的字符数为平局者而获胜的。
发布于 2014-01-05 08:52:18
在Python中,以下脚本将输出所需的结果:
TzoubyFssps;!jowbmje!tzouby是!它的产出如下:
SyntaxError: invalid syntax发布于 2014-01-05 08:33:40
发布于 2014-01-05 18:03:14
{`{)}%"/2+"}.1*输出:
|a|*~,#~/2+在网上试试。
一个非常简单的解决方案,基于我在我参加“旋转奎因”挑战中使用的技术。一个棘手的细节是字符~ (ASCII 126)被挑战规则所禁止,所以我不能使用它来执行我的代码块。幸运的是,1*可以用作它的同义词。
代码块{`{)}%"/2+"}由.复制,第二个副本由1*执行(技术上是一个迭代循环),另一个副本留在堆栈上。在代码块中,`收缩代码块,{)}%循环其字符( ASCII代码),每个字符递增。最后,"/2+"将文字字符串/2+ (由一个.1*移位)推到堆栈上。在程序的末尾,GolfScript解释器会自动打印堆栈上的所有内容。
Ps。是的,我知道这是人气-竞赛而不是严格的密码-高尔夫,但是我还能用GolfScript - ASCII艺术做什么呢?
https://codegolf.stackexchange.com/questions/17569
复制相似问题