首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Code Golf:浪潮

Code Golf:浪潮
EN

Stack Overflow用户
提问于 2009-09-03 21:29:56
回答 32查看 6.6K关注 0票数 41

挑战

按字符计数计算的最短代码,用于从输入字符串生成波形。

通过提升(第-1行)较高的字符和降低(line+1)较低的字符来生成波。相同的字符保持在同一行上(没有提升或降级)。

输入仅由小写字符和数字组成,字母高于数字。

测试用例:

代码语言:javascript
复制
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

代码计数包括输入/输出(即完整程序)。

EN

回答 32

Stack Overflow用户

回答已采纳

发布于 2009-09-03 23:04:53

x86机器码(37字节)

十六进制转储:

代码语言:javascript
复制
6800B807BF8007BE8200B40EAC3C0D741338D8740A720481EF400181C7A000AB86C3EBE8C3

在具有50行控制台的MS-DOS中运行,输入来自命令行。

例如。

代码语言:javascript
复制
wave.com 1234567890qwertyuiopasdfghjklzxcvbnm

Download binary here

更新:多亏了jrandomhacker减少了三个字节

票数 76
EN

Stack Overflow用户

发布于 2009-09-03 21:39:18

按字符计数

最短代码,以打印输入字符串中的“wave”。

Console.WriteLine(“输入字符串中的一个‘波’.”);

票数 35
EN

Stack Overflow用户

发布于 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中,通常会添加开关的数量和代码的长度(这在这里只需几个笔划就能提供帮助),但在这里,我们使用的是没有开关的独立程序。

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1376077

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档