您的任务是编写一个程序,以打印该程序自身字符的ASCII码之和。不允许您打开任何文件(禁止输入任何内容,例如命令行参数,标准输入或文件)。
打印最低编号(即ASCII码总和最低)的程序将获胜。
这是一个用C编写的程序的示例(不是最短的):
#include <stdio.h>
int main(){
printf("4950");/*i*/
return 0;
}
(后没有新行}
)
您的任务是编写一个程序,以打印该程序自身字符的ASCII码之和。不允许您打开任何文件(禁止输入任何内容,例如命令行参数,标准输入或文件)。
打印最低编号(即ASCII码总和最低)的程序将获胜。
这是一个用C编写的程序的示例(不是最短的):
#include <stdio.h>
int main(){
printf("4950");/*i*/
return 0;
}
(后没有新行}
)
Answers:
有人说“像猫的语言”,所以...
一个空文件:
使用执行wc -c file.wc
。在0字节时,我认为这是“不是真正的编程语言”类别的赢家。
也
80
没有终止换行符,数字80 13等于十进制104。您可以缩短60 17(102 dec)的时间,但我认为“基础13”将更有价值。
编辑:新的wc
例子,这个可以作为程序运行。
#!/usr/bin/wc
ÿÿzw17
(按照Latin-1编码-ÿ是一个值为255的字节)
字节总数为2223,输出为:
2 2 23 ./w
wc -c
该问题都是被禁止的。
0 0 0
(如果作为文件传递的文件禁止使用它,则所有脚本语言都是(也被禁止)
wc
是一种应用程序,而不是语言。
150
使用简单的Haskell程序蛮力发现了该解决方案:
f :: String -> Bool
f s = (read s :: Int) == (sum . map fromEnum) s
main = mapM_ print [filter f $ sequence $ replicate n ['0'..'9'] | n <- [1..10]]
5!
在J.
5!
是86,而不是125
(function a(){b="("+a+")()";c=0;for(i=0;i<b.length;i++){c+=b.charCodeAt(i-0)}alert(c)})()
除非我不正确地理解Haskell,否则这是迄今为止的第一个奎因解决方案。
(function a(){b="("+a+")()";for(i=c=0;i<b.length;i++)c+=b.charCodeAt(i-0);alert(c)})()
最高分获胜,对吧?
import sys
print sum(ord(i)for i in open(sys.argv[0]).read())
我只是以为无论如何我都会发布它,这是一个中途的解决方案。