标签: rosetta-stone

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
查看次数

代码高尔夫:康威的生命游戏

挑战:编写实现John H. Conway的Game of Life元胞子自动机的最短程序.[ 链接 ]

编辑:经过大约一周的比赛,我选择了一个胜利者:pdehaan,用perl 打算用一个角色击败Matlab解决方案.

对于那些没有听过生命游戏的人来说,你需要一个方格单元格(理想情况下是无限的).细胞可以存活(填充)或死亡(空).我们通过应用以下规则确定下一步中哪些细胞存活:

  1. 任何活的邻居少于两个的活细胞都会死亡,好像是由人口不足造成的.
  2. 任何有三个以上活着的邻居的活细胞都会死亡,就像过度拥挤一样.
  3. 任何有两三个活邻居的活细胞都会生活在下一代.
  4. 具有正好三个活邻居的任何死细胞变成活细胞,就好像通过繁殖一样.

您的程序将读入指定为命令行参数的40x80字符ASCII文本文件,以及要执行的迭代次数(N).最后,它将在N次迭代后输出到ASCII文件out.txt系统的状态.

以下是运行相关文件的示例:

in.txt:

................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
..................................XX............................................
..................................X.............................................
.......................................X........................................
................................XXXXXX.X........................................
................................X...............................................
.................................XX.XX...XX.....................................
..................................X.X....X.X....................................
..................................X.X......X....................................
...................................X.......XX...................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
Run Code Online (Sandbox Code Playgroud)

迭代100次:

Q:\>life in.txt 100
Run Code Online (Sandbox Code Playgroud)

结果输出(out.txt)

................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................ …
Run Code Online (Sandbox Code Playgroud)

language-agnostic code-golf conways-game-of-life rosetta-stone

76
推荐指数
15
解决办法
2万
查看次数

Code Golf:玩多维数据集

挑战

按字符数最短的代码,根据用户输入输出玩砖塔系列.

输入将是一系列数字(正数,负数和零),表示当前立方体塔在其索引之后的高度.高度为0表示没有塔并且间隔开.

立方体塔由堆积的立方体组成.如果当前索引上的输入数字为正,则立方体会上升,如果输入数字为负数,则立方体会下降.使用以下4行绘制单个立方体:

   __
 /__ /|
|   | |
|___|/

立方体是3D - 这意味着当两个塔彼此相邻放置时它们彼此隐藏,产生假视角.

可以假设所有输入都是有效且没有错误 - 每个数字在一行上用空格分隔,至少有一个数字.

测试用例

Input:
    2 -3 -2 1 2 -1
Output:
       __              __
     /__ /|          /__ /|
    |   | |        _|   | |
    |___|/|      /__|___|/|
    |   | |__  _|   |   | |__
    |___|/__ /__|___|___|/__ /|
        |   |   | |     |   | |
        |___|___|/|     |___|/
        |   |   | |
        |___|___|/
        |   | |
        |___|/

Input:
    1 2 3 4 -2 4 3 2 1
Output:
                   __ …

language-agnostic code-golf rosetta-stone

61
推荐指数
7
解决办法
3386
查看次数

Code Golf:自来水

挑战

按字符排序的最短代码,用于从输入中识别和标记土地的ASCII表示中的水凹陷.

输入将是景观的ASCII表示,具有丘陵,山谷和平坦的土地.该程序应模拟景观如果被淹没将会是什么样子 - 用水填充所有山谷(角色x).

景观将始终以角色开始和停止,_并且至少2个字符长,输入最短__.

山被定义为加高,不应该用水填充:

  __
_/  \_
Run Code Online (Sandbox Code Playgroud)

山谷被定义为凹陷,将被水填满,直到遇到平地:

_    _
 \__/
Run Code Online (Sandbox Code Playgroud)

可以假定输入是干净的,并且仅由字符space(), newline (\n),下划线(_)以及前向和后向斜杠(/\)组成.输入可以看作是一条连续线,以及包含模糊线输入的任何输入,如_/_

_   _
 \_/
 / \
Run Code Online (Sandbox Code Playgroud)

被认为无效.

关于水下洞穴,如果洞穴水位高于水位,则应保持水位.

测试用例

Input:
    __/\__
          \__              
             \       ___       ___________
             /      /   \_     \_
             \_____/      \__  _/
                             \/
Output:

    __/\__
          \__              
             \       ___       ___________
             /xxxxxx/   \xxxxxx\_
             \xxxxx/      \xxxxx/
                             \/
Run Code Online (Sandbox Code Playgroud)
Input:
                                         __       ___
                                        /  \_____/
                                       / _______
                         ________     /  \     /
                   _____/        \ …
Run Code Online (Sandbox Code Playgroud)

language-agnostic code-golf rosetta-stone

53
推荐指数
4
解决办法
3156
查看次数

Code Golf:正则表达式解析器

目标

今天的Code Golf挑战是尽可能少地创建一个正则表达式解析器.

语法

不,我不是要求你匹配Perl风格的正则表达式.毕竟,对于那些人来说,已经有一个非常可靠的翻译!:-)

以下是您需要了解的有关此挑战的正则表达式语法的所有信息:

  • 术语被定义为一个单一的文字字符,或分组括号内的正则表达式().
  • *(星号)字符表示Kleene星操作在上一届.这意味着前一个词的零个或多个连接在一起.
  • +(加)字符表示一个方便快捷方式:a+相当于aa*,这意味着一个或多个之前的术语的.
  • ?(问号)字符代表零或前项之一.
  • 所述|(管)字符代表的交替,也就是说,在任一侧上的正则表达式可以在比赛中使用.
  • 假设所有其他字符都是字面的.您可以假设所有其他角色都在其中[0-9A-Za-z](即所有英语字母数字).

或者,换一种说法:*/ +/ ?具有最高的优先级,然后串联,然后交替.由于交替的优先级低于连接,因此在没有括号的正则表达式中使用它会导致它被绑定到每一侧的完整正则表达式.*+?,在另一方面,将只适用于前一学期.

挑战

您的挑战是编写一个程序来编译或解释正则表达式(如上所定义),然后针对它测试一些字符串.

我要把输入留给你了.我的建议是,正则表达式可能应该首先出现,然后对任何数量的字符串进行测试; 但如果你想让它持久,那很好.如果你想把所有东西放在命令行参数或stdin,或命令行中的正则表达式和stdin中的字符串,或其他什么,那很好.只显示一两个用法示例.

输出应该是truefalse每行一个,以反映正则表达式是否匹配.

笔记:

  • 我不应该这样说......但是不要在你的语言中使用任何正则表达式库!您需要自己编译或解释模式.(编辑:如果需要拆分或连接字符串,可以使用正则表达式.您无法使用它直接解决问题,例如,将输入正则表达式转换为语言正则表达式并使用它.)
  • 正则表达式必须完全匹配此挑战的输入字符串.(等效地,如果您熟悉类似Perl的正则表达式,则假设所有匹配的字符串开始和结束都已到位)
  • 对于这个挑战,所有特殊字符()*+?|都不会按字面意思出现.如果输入中有一个,可以安全地假设没有模式可以匹配相关字符串.
  • 应以区分大小写的方式评估要测试的输入字符串.

例子

对于这些示例,我假设一切都是在命令行参数中完成的,首先是regex.(正如我上面所说,输入取决于你.)myregex这里代表你对程序的调用.

> myregex easy easy Easy hard
true
false
false

> myregex ab*a aa …
Run Code Online (Sandbox Code Playgroud)

regex language-agnostic code-golf rosetta-stone

53
推荐指数
6
解决办法
7872
查看次数