编程语言中的字母


69

我们的任务是,在(英语)字母表中的每个字母,编写打印的字母,在其语言的程序名称以该字母开头。

输入:

输出:

abcdefghijklmnopqrstuvwxyz

大写和尾随换行符可选

规则

  • 计分指标是编程语言的长名字加上代码的长度。因此,C的“惩罚”为1,而GolfScript的惩罚为10。
  • 每个答案一种语言/实现。鼓励多个答案。
  • 在撰写本文之前,即2011年4月18日,应该已经存在编程语言。
  • 如果编程语言名称的首字母不是英语字母,则不应将其强制为一个字母。它将被视为单独的字母(意味着减少竞争)。
  • 在每个英文字母都有解决方案之前,不接受任何答案。

当前排名:

告诉我是否想念任何人。

自动排行榜(实验性)


1
我们可以将垃圾打印到stderr吗?
彼得·泰勒

@彼得·泰勒:发疯。要回答您的问题,是的,将垃圾打印到stderr很好(只要stdout是正确的)。
乔伊·亚当斯


2
*0*5AB1E一样的*o*sabie:P?
魔术章鱼缸

1
@MagicOctopusUrn无关紧要,因为这条规则:“ 编程语言应该在2011年4月18日写这篇文章之前就已经存在。
Kevin Cruijssen

Answers:



25

P实际上是Piet的 -57种编码

大版本(编码大小= 6)

p是Piet-大

小版本(编码大小= 1)

p用于Piet-小

经过Erik的piet解释器测试,并由Piet Creatornpiet开发。

编辑:这是一个“跟踪”版本(由生成npiet -tpf),因此您可以看到它的工作方式。

执行从左上角开始,并沿边界顺时针旋转。设置了上边缘和右边缘(计算a(97)的值需要花费很多代码)。循环从底部边缘开始,然后到左侧边缘。z达到的值时,程序将右转到第一个的横截面P并终止。

点击图片放大并查看详细信息


哦,Piet永远是个好人。而且您不会碰巧有Piet Creator的工作Windows二进制文件在附近,对吗?(我懒得去寻找所有的依赖和先决条件,只是
Joey

难道实际上不是400个编解码器和57个编解码器吗?(不过,我认为我们在此处如何计算Piet尚无共识)
Joey

1
@Joey我看看是否可以制作Windows版Piet Creator。自从我在那里测试以来已经有一段时间了。您对编解码器是正确的。如果我将程序排成一行,那么它将是57个代码(给与一些代码),上面的版本对眼睛更友好(例如其他langs中的空格)。也许Piet提交的材料应该既少又引人注目。我们最好决定,因为我正在计划更多Piet答案:)
Casey

好吧,您可以在meta上提出一个问题,要求澄清Piet代码应如何处理:-)。很久以前,我也会提交Piet解决方案。除了pietdev确实有很多问题之外,对于Piet Creator,我需要Qt和其他一些东西来构建它;-)。而且仅使用位图编辑器就很麻烦……
Joey

@Joey Piet Creator仍然需要几个重要的增强才能真正发挥作用,希望我能尽快添加。我最终主要使用Piet Creator,然后使用Paint或GIMP来移动颜色块。Pietdev是我个人电脑的主要灵感来源。在PC上获得一些反馈会很棒,我将尽快建立Windows。
Casey


14

Y代表Yoix,44个字符→得分:48

int x;for(;++x<27;)yoix.stdio.putchar(96+x);

12

W是空白,72个字符->得分:82

在此处输入图片说明

[Sp][Sp][Sp][Tab][Tab][Sp][Sp][Sp][Sp][Tab][LF][LF][Sp][Sp][Tab][Tab][LF][Sp][LF][Sp][Tab][LF][Sp][Sp][Sp][Sp][Sp][Tab][LF][Tab][Sp][Sp][Sp][Sp][LF][Sp][Sp][Sp][Sp][Tab][Tab][Tab][Tab][Sp][Tab][Tab][LF][Tab][Sp][Sp][Tab][LF][Tab][Sp][Sp][Sp][LF][LF][Sp][LF][Tab][Tab][LF][LF][Sp][Sp][Sp][Sp][LF][LF][LF][LF]

我花了很长时间才让这个愚蠢的东西在昨晚工作,然后发现空格在这里没有显示为代码!然后,当我生闷气时,我的互联网连接中断了。因此,我现在发布它只是为了让我昨晚没有花一小时的时间来开始工作。


6
我本以为从现在已删除的注释以及我的解决方案可以明显看出,我以前从未写过任何空格。显然不是。
Gareth

@Mego因为我与它无关,我们有没有机会取消我的名字?
加雷斯

11

A代表APL, 14  11个字符/字节*→得分14

⎕UCS 96+⍳26

这至少在Dyalog和Nars2000中有效


* APL可以用自己的(旧式)单字节字符集编写,该字符集将APL符号映射到高128字节值。因此,出于评分的目的,仅使用ASCII字符和APL符号的N个字符的程序可以视为N个字节长。



大写和尾随换行符是可选的,因此⎕A可以使用。
亚当


8

R代表R,19→得分:20

cat(letters,sep="")

或者(20个字符):cat(letters,sep =“”)
Paolo 2012年

letters不够好吗?我没有看到规范指定输出必须是连续的字符串。当然,给出的示例就是这种形式,但是“尾随换行符是可选的”吗?
加菲

@Gaffi:我相信我在此线程中使用了其他符合相同标准的语言,即输出必须完全是“ abc ... xyz”,且中间没有字符)。我想我可以改变规则并赢得自己的比赛,但这并不是一件很有趣的事情。
乔伊·亚当斯

8

P是Python 2,33个字符->得分:39

print'%c'*26%tuple(range(97,123))

1
这与print'abcdefghijklmnopqrstuvwxyz'...的长度相同
nneonneo 2014年

@nneonneo所以...它仍然是最小的一个!(与其他无聊的琐碎代码共享位置)。
JBernardo 2014年

7

R代表Ruby,13个字符->得分:17

Ruby 1.9解决方案Matma Rex提出了:

print *?a..?z

我最初的Ruby 1.8解决方案(15个字符->得分:19):

$><<[*'a'..'z']

这不符合条件吗?输出包含其他字符。另外,如果还可以的话,那$><<[*?a..?z]就是Ruby 1.9(省去2个字符)。
Matma Rex 2011年

1
我能想到的最短正确版本是print *?a..?z。它的长度和我上面建议的长度相同。我们不能使用,$><<因为<<有一些奇怪的优先级规则,并且一切都会炸毁。我们不能使用pputs代替,print因为它们将每个字母都打印在单独的行上。
Matma Rex 2011年

抱歉,应该提到这是针对Ruby 1.8的。在Ruby 1.8中,Array#to_s和相同Array#join,因此它将只打印字母而没有多余的字符。但是您的1.9解决方案确实更短。
Ventero 2011年


@George:您的输出来自Ruby 1.8(可以在此处验证:codepad.org/pvyqzaPP)。如文章所述,这是Ruby 1.9的解决方案。
Ventero'7

7

F是鱼(> <>)的19个字符->得分:23

因为这是该死的美丽语言!

30"`"1+::o&p&"y"(?;

这个答案不是22分,因为<>>只有三个字符长,而不是四个字符。您使用分数中的较长名称是否有原因?
2015年

@ppperry好吧,语言名称不能都以F开头并且必须是<><
flornquake

1
语言的名称><>不是<><
-TuxCrafting

这似乎不起作用-它只是打印出来atio.run/##S8sszvj/39hAKUHJUNvKKl@tQE2pUknD3vr/fwA
克里斯


6

S是Scala的16个字符=>得分21

'a'to'z'mkString

18个字符=>得分23

'a'to'z'mkString""

22个字符=>得分27

('a'to'z')map(print _)




6

D代表DC,17个字符→得分:19

97[dP1+dBD>x]dsxx

输出“ ab”并退出DC版本1.06.95
Wossname

@Wossname echo '97[dP1+dBD>x]dsxx' | dc确实适用于DC版本1.07.1
BlackCap,

6

C代表C,36个 35个字符→得分:36

main(a){for(;putchar(a+++64)-90;);}

您可以通过假设(argc)等于1来删除2个字符,而不必初始化它。
乔伊·亚当斯

但这还没有编译……
deceleratedcaviar

最好能编译的是59,或不包括include的42:#include <stdio.h> main(){for(int a = 27;-a;)putchar(96 + a);}
deceleratedcaviar

丹尼尔(Daniel),它在这里与MSVC 10兼容。
Joey

5

W是Windows PowerShell的22个字符→得分:40

-join[char[]](97..122)

1
嗯,不知道是否进行该W或P.
乔伊·亚当斯

1
从技术上讲,它是W,因为语言(和产品)的正确名称是Windows PowerShell。是的,这也困扰着我。
乔伊,



4

L代表徽标,26个字符→得分:30

for[i 97 122][type char i]

4

T是Thue,35个字符→得分:39

0::=~abcdefghijklmnopqrstuvwxyz
::=
0

4

A是AppleScript,41->得分:52

display alert"abcdefghijklmnopqrstuvwxyz"

1
我知道自发布以来已经很长时间了,但是您可以使用"abcdefghijklmnopqrstuvwxyz",因为返回值将输出到结果窗格中。
Addison Crump

4

M表示Matlab,13个字符,得分19

disp('a':'z')

M表示Matlab,18个字符,得分24

disp(char(97:122))

1
我手头没有matlab,但我认为您需要disp(..)阻止此输出ans =
Nabb 2011年

正确,答案已更改。
jpjacobs 2011年

4

B是BrainF ***,38 + 9 = 47

++++[>++++++<-]>[->+>++++<<]>++[->+.<]

如果单元格以256环绕,则可以减少为31 + 9 = 40

++[>+>++<<+++++]>----->[<.+>++]

4

B是Bash:4 + 16 = 20

printf %s {a..z}

或15只:

echo {a..z}

是否a b c ...允许表单输出(如其他许多答案所示)。


我不这么认为。换行是可选的,输出为“ abcdefghijklmnopqrstuvwxyz”
用户未知,




3

B,45->得分:46

main(){auto i;i=95;while(i++<122)putchar(i);}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.