挑战
按字符计数计算的最短代码,用于从输入字符串生成波形。
通过提升(第-1行)较高的字符和降低(line+1)较低的字符来生成波。相同的字符保持在同一行上(没有提升或降级)。
输入仅由小写字符和数字组成,字母高于数字。
测试用例:
Input:
1234567890qwertyuiopasdfghjklzxcvbnm
Output:
z
l x v n
k c b m
j
h
g
y p s f
t u o a d
w r i
9 q e
8 0
7
6
5
4
3
2
1
Input:
31415926535897932384626433832795028841971693993751058209749445923078164062862
Output:
9 9 8 6 6
9 6 8 7 3 3 4 2 4 8 9 88
3 4 5 2 5 5 2 33 3 7 5 2 4 9 9 99 7
1 1 3 2 0 1 7 6 3 3 5 8 8 6
1 1 5 2 9 9 3 7 1 4 6 8
0 0 7 9 5 2 0 0 2 6
4 44 2代码计数包括输入/输出(即完整程序)。
发布于 2009-09-03 23:04:53
x86机器码(37字节)
十六进制转储:
6800B807BF8007BE8200B40EAC3C0D741338D8740A720481EF400181C7A000AB86C3EBE8C3在具有50行控制台的MS-DOS中运行,输入来自命令行。
例如。
wave.com 1234567890qwertyuiopasdfghjklzxcvbnmDownload binary here
更新:多亏了jrandomhacker,减少了三个字节
发布于 2009-09-03 21:39:18
按字符计数
最短代码,以打印输入字符串中的“wave”。
Console.WriteLine(“输入字符串中的一个‘波’.”);
发布于 2009-09-03 22:56:50
Perl (94个字符)
144个字符,原文为barnaba:
chop($_=<>);$l=length;push(@a," "x$l)for(1..$l*2);$l+=(ord $p<=>ord $_),substr($a[$l],$r++,1)=$p=$_ for(split //);/^\s+$/||print "$_\n" for(@a)
来自Chris Lutz优化的121个字符:
$_=<>;chop;$a[@a]=" "x$l for 1..($l=length)*2;$l+=$p cmp$_,substr($a[$l],$r++,1)=$p=$_ for split//;/\S/&&print"$_\n"for@a
来自进一步优化的94个字符:
$_=<>;@a=($"x($l=y///c).$/)x(2*$l);s/./substr$a[$l+=$"cmp$&],"@-",1,$"=$&/ge;/\S/&&print for@a
请注意,在传统的Perl golf中,通常会添加开关的数量和代码的长度(这在这里只需几个笔划就能提供帮助),但在这里,我们使用的是没有开关的独立程序。
https://stackoverflow.com/questions/1376077
复制相似问题