标签: code-golf

什么是导致堆栈溢出的最短代码?

为了纪念Stack Overflow的公开发布,导致堆栈溢出的最短代码是什么?任何语言欢迎.

ETA:只是要明确这个问题,因为我偶尔会看到一个Scheme用户:尾调用"递归"实际上是迭代,任何可以通过合适的编译器相对简单地转换为迭代解决方案的解决方案都不会算一算 :-P

ETA2:我现在选择了"最佳答案"; 看这篇文章的理由.感谢所有贡献的人!:-)

language-agnostic code-golf

160
推荐指数
30
解决办法
3万
查看次数

构建给定文本中最常用单词的ASCII图表

挑战:

构建给定文本中最常用单词的ASCII图表.

规则:

  • 只接受a-zA-Z(字母字符)作为单词的一部分.
  • 忽略套管(She== she为了我们的目的).
  • 忽略以下的话(非常苛刻,我知道): the, and, of, to, a, i, it, in, or, is
  • 澄清:考虑don't:这将被视为在范围2不同"单词" a-zA-Z:(dont).

  • 可选(现在正式更改规范为时已晚)您可以选择删除所有单字母"单词"(这可能会缩短忽略列表).

解析给定的text(读取通过命令行参数指定的文件或管道输入;假设us-ascii)并构建word frequency chart具有以下特征的a:

  • 显示22个最常见单词的图表(另请参见下面的示例)(按降序频率排序).
  • 条形width表示单词的出现次数(频率)(按比例).附加一个空格并打印单词.
  • 确保这些条形(加上空格 - 单词空格)始终适合:bar+ [space]+ word+ [space]应始终<= 80字符(确保考虑可能不同的条形和字长:例如:第二个最常见的单词可能要长得多)第一个虽然频率差别不大).在这些约束条件下最大化条宽,并适当缩放条(根据它们所代表的频率).

一个例子:

这个例子的文本可以在这里找到(爱丽丝梦游仙境,刘易斯卡罗尔).

此特定文本将产生以下图表:

 _________________________________________________________________________
|_________________________________________________________________________| she 
|_______________________________________________________________| …

language-agnostic code-golf

156
推荐指数
26
解决办法
3万
查看次数

Code Golf:激光

挑战

按字符计数的最短代码输入板的2D表示,并根据输入输出"true"或"false" .

该板由4种类型的瓷砖制成:

 # - A solid wall
 x - The target the laser has to hit
 / or \ - Mirrors pointing to a direction (depends on laser direction)
 v, ^, > or < - The laser pointing to a direction (down, up, right and left respectively)
Run Code Online (Sandbox Code Playgroud)

只有一个激光器,只有一个目标.墙必须形成任何大小的实心矩形,激光和目标放在里面."房间"内的墙壁是可能的.

激光射击并从其原点移动到它指向的方向.如果激光射到墙上,它就会停止.如果激光射到镜子上,它会反射到镜子指向的方向90度.镜子是双面的,这意味着两面都是"反光的"并且可以以两种方式反射光线.如果激光射击激光(^v><)本身,则将其视为墙壁(激光束会破坏投影仪,因此它永远不会击中目标).

测试用例

Input:
    ##########
    #   / \  #
    #        #
    #   \   x#
    # >   /  #
    ########## 
Output:
    true

Input:
    ##########
    # …

language-agnostic code-golf rosetta-stone

152
推荐指数
21
解决办法
1万
查看次数

Code Golf - πday

挑战

SO上的代码 - 高尔夫指南

由字符最短代码计数显示半径的圆的表示R使用*字符,接着π的近似值.

输入是一个数字,R.

由于大多数计算机似乎具有几乎2:1的比率,因此您应该只输出y奇数的行.这意味着当R奇数时你应该打印R-1线条.有一个新的测试用例R=13需要澄清.

例如.

Input
    5
Output      Correct                          Incorrect

        3    *******                    4      *******
        1   *********                   2     *********
       -1   *********                   0    ***********
       -3    *******                   -2     *********
           2.56                        -4      *******
                                            3.44
Run Code Online (Sandbox Code Playgroud)

编辑:由于奇数值引起的广泛混淆R,任何通过下面给出的4个测试用例的解决方案都将被接受

π的近似值是将*字符数除以两倍得到的.
近似值应至少为6位有效数字.
前导或尾随零是允许的,因此,例如任何的3,3.000000,003被接受为输入24.

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

测试用例

Input
    2
Output
     *** 
     *** 
    3.0

Input
    4
Output
      ***** …
Run Code Online (Sandbox Code Playgroud)

language-agnostic code-golf rosetta-stone

95
推荐指数
16
解决办法
8437
查看次数

Code Golf:钢琴

挑战

按字符计数的最短代码从给定长度的输入音符开始输出钢琴键盘的一部分.

输入将由一个音符([ACDFG]#|[A-G])组成,用于开始打印键盘,一个正数表示要打印的键的长度,包括第一个音符.

第一个键应该完整打印 - 如果它有一个左锐键,它将被剪切,相同的开始键是锋利的,左键也将被剪切.

不计算夏普键,只计算白键.

测试用例

Input
    C 14
Output
    |   ###  ###   |   ###  ###  ###   |   ###  ###   |   ###  ###  ###   |
    |   ###  ###   |   ###  ###  ###   |   ###  ###   |   ###  ###  ###   |
    |   ###  ###   |   ###  ###  ###   |   ###  ###   |   ###  ###  ###   |
    |   ###  ###   |   ###  ###  ###   |   ###  ###   |   ###  ###  ###   |
    |   ###  ###   |   ###  ### …
Run Code Online (Sandbox Code Playgroud)

language-agnostic code-golf rosetta-stone

88
推荐指数
16
解决办法
6170
查看次数

代码高尔夫:四是魔术

这个谜题

我在高中时听到的一个小谜题是这样的......

  • 提问者会让我给他一个号码;
  • 在听到这个数字时,提问者会反复对它进行某种改变(例如,他可能会说十个是三个),直到最终到达数字4(此时他将用四个完成魔术).
  • 无论如何,任何数字似乎最终都可以转化为四个.

目标是试图找出转换功能,然后能够自己可靠地监督这个难题.

解决方案

任何步骤的转换功能都是

  • 拿这个号码,
  • 计算其英文单词表示中的字母数,忽略连字符或空格或"和"(例如,"十"中有3个字母,"三十四"中有10个字母,"一百四十三"有20个字母).
  • 返回那个字母数.

对于我曾经考虑过的所有数字,这会收敛到4.由于"四"也有四个字母,所以这里会有一个无限循环; 相反,它仅仅被称为魔术以结束序列.

挑战

您的挑战是创建一段代码,该代码将从用户读取数字,然后打印显示重复应用的转换函数的行,直到达到"四是魔术".

特别:

  1. 解决方案必须是完整的程序.它们不仅仅是在输入中引入数字因子的函数.
  2. 必须从标准输入读取输入.(从"echo"管道或使用输入重定向管道很好,因为它也来自stdin)
  3. 输入应为数字形式.
  4. 对于转换函数的每个应用,都应打印一行:a is b.其中a和b是转换中数字的数字形式.
  5. 需要完整停止(期间)!
  6. 最后一行自然应该说,4 is magic..
  7. 代码应为0到99之间的所有数字生成正确的输出.

例子:

> 4
4 is magic.

> 12
12 is 6.
6 is 3.
3 is 5.
5 is 4.
4 is magic.

> 42
42 is 8.
8 is 5.
5 is 4.
4 is magic.

> 0 …
Run Code Online (Sandbox Code Playgroud)

language-agnostic code-golf rosetta-stone

88
推荐指数
14
解决办法
7015
查看次数

Code Golf:Collat​​z猜想

灵感来自http://xkcd.com/710/这里是一个高尔夫代码.

挑战

给定大于0的正整数,打印出该数字的冰雹序列.

冰雹序列

有关更多详细信息,请参阅Wikipedia

  • 如果数字是偶数,则除以2.
  • 如果数字是奇数,则将其加倍并添加一个.

用生成的数字重复此操作,直到达到1.(如果在1之后继续,它将进入无限循环1 -> 4 -> 2 -> 1...)

有时代码是最好的解释方式,所以这里有一些来自维基百科

function collatz(n)
  show n
  if n > 1
    if n is odd
      call collatz(3n + 1)
    else
      call collatz(n / 2)
Run Code Online (Sandbox Code Playgroud)

这段代码有效,但我正在增加额外的挑战.程序不能容易受到堆栈溢出的影响.所以它必须使用迭代或尾递归.

此外,如果它可以计算大数字并且语言尚未实现,则奖励积分.(或者如果使用固定长度的整数重新实现大数字支持)

测试用例

Number: 21
Results: 21 -> 64 -> 32 -> 16 -> 8 -> 4 -> 2 -> 1

Number: 3
Results: 3 -> 10 -> 5 -> 16 -> 8 -> 4 -> 2 …
Run Code Online (Sandbox Code Playgroud)

language-agnostic code-golf collatz rosetta-stone

86
推荐指数
19
解决办法
1万
查看次数

Code Golf:玩俄罗斯方块

基础:

考虑以下tetrominoes和空洞的比赛场地:

                                            0123456789
    I   O    Z    T    L    S    J         [          ]
                                           [          ]
    #   ##   ##   ###  #     ##   #        [          ]
    #   ##    ##   #   #    ##    #        [          ]
    #                  ##        ##        [          ]
    #                                      [          ]
                                           [==========]

比赛场地的尺寸是固定的.顶部的数字仅用于表示列号(也可参见输入).

输入:

1.您将获得一个特定的游戏区域(基于上述内容),该区域已经部分填充了四联蛋白(这可以在单独的文件中或通过标准输入提供).

样本输入:

[          ]
[          ]
[          ]
[          ]
[ #    #  #]
[ ## ######]
[==========]

2.您将获得一个字符串,该字符串描述(以空格分隔)哪个tetromino插入(和下拉)哪一列.Tetrominoes不需要旋转.输入可以从stdin读取.

样本输入:

T2 Z6 I0 T7
Run Code Online (Sandbox Code Playgroud)

您可以假设输入是"格式良好的"(或者当它不是时会产生未定义的行为).

产量

渲染结果字段("完整"行必须消失)并打印分数计数(每个丢弃的行占10个点).

基于上面的示例输入的示例输出:

[          ]
[          ]
[          ]
[# …

language-agnostic code-golf rosetta-stone

83
推荐指数
10
解决办法
6736
查看次数

评估一串简单的数学表达式

挑战

这是挑战(我自己的发明,但如果以前出现在网络的其他地方,我不会感到惊讶).

编写一个函数,该函数采用单个参数,该参数是简单数学表达式的字符串表示形式,并将其作为浮点值进行计算."简单表达"可以包括以下任何一种:正十进制数或负十进制数,+,-,*,/,(,).表达式使用(正常)中缀表示法.操作员应按其出现的顺序进行评估,即不像BODMAS中那样进行 评估,但当然应该正确观察括号.该函数应该为此表单的任何可能表达式返回正确的结果.但是,该函数不必处理格式错误的表达式(即语法错误的表达式).

表达的例子:

1 + 3 / -8                            = -0.5       (No BODMAS)
2*3*4*5+99                            = 219
4 * (9 - 4) / (2 * 6 - 2) + 8         = 10
1 + ((123 * 3 - 69) / 100)            = 4
2.45/8.5*9.27+(5*0.0023)              = 2.68...
Run Code Online (Sandbox Code Playgroud)

规则

我预计会有某种形式的"作弊"/狡猾,所以请让我预先反对它!通过作弊,我指的是eval在动态语言(如JavaScript或PHP)中使用或等效函数,或者同时编译和执行代码.(我认为我的"没有BODMAS"的规格几乎可以保证这一点.)除此之外,没有任何限制.我在这里预计会有一些Regex解决方案,但不仅仅是这样,我们会感到很高兴.

现在,我主要对C#/ .NET解决方案感兴趣,但是任何其他语言都是完全可以接受的(特别是F#和Python用于功能/混合方法).我还没有决定我是否会接受最短或最巧妙的解决方案(至少对于语言而言)作为答案,但我欢迎任何语言的任何形式的解决方案,除了我刚才禁止的!

我的解决方案

我现在在这里发布了我的C#解决方案(403个字符).更新: …

math parsing code-golf infix-notation text-parsing

76
推荐指数
21
解决办法
1万
查看次数

Code Golf:相当于Excel列名的数字

挑战

按字符数排序的最短代码,将输出Excel列字符串的数字等效值.

例如,A列为1,B为2,依此类推.一旦你点击Z,下一列变为AA,然后AB依此类推.

测试用例:

A:    1
B:    2
AD:   30
ABC:  731
WTF:  16074
ROFL: 326676
Run Code Online (Sandbox Code Playgroud)

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

excel code-golf

76
推荐指数
19
解决办法
5万
查看次数