问题标签 [code-golf]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
language-agnostic - 代码高尔夫:熄灯
挑战
通过字符数最短的代码来解决输入灯灭板。
熄灯板是一个由两个字符组成的不同大小的 2d 方形网格 -.
用于关闭*
的灯和打开的灯。
为了解决这个问题,所有的“灯”都必须关掉。切换一盏灯(即在打开时关闭,在关闭时打开)一次进行 5 盏灯 - 选择的灯和灯以 +(加号)形状围绕它。“选择”中间的灯会解决板子:
由于熄灯!解决方案顺序无关紧要,输出将是一块新板,上面标有要选择的灯泡。上板的解决方案是
在没有侧灯泡可关的角落关灯不会溢出:
在这种情况下,选择右下方的灯泡只会关闭 3 个灯泡。
测试用例
代码计数包括输入/输出(即完整程序)。
language-agnostic - 代码高尔夫:钢琴
挑战
从给定长度的输入音符开始输出钢琴键盘的一部分的按字符计数的最短代码。
输入将由一个[ACDFG]#|[A-G]
开始打印键盘的音符 ( ) 和一个表示要打印的键长度的正数组成,包括第一个音符。
第一个键应该完整打印 - 如果它有一个左尖键,它将被剪切,同样当开始键是尖的时,左键也会被剪切。
夏普键不计算在内,只有白键。
测试用例
代码计数包括输入/输出(即完整程序)。
code-golf - 代码高尔夫:井字游戏
按字符数发布您的最短代码,以检查玩家是否赢了,如果赢了,是哪个。
假设您在变量(棋盘)中有一个整数数组b
,其中包含井字棋盘和玩家的移动,其中:
- 0 = 没有设置
- 1 = 玩家 1 (X)
- 2 = 玩家 2 (O)
所以,给定数组b = [ 1, 2, 1, 0, 1, 2, 1, 0, 2 ]
将代表棋盘
对于这种情况,您的代码应输出1
以指示玩家 1 已获胜。如果没有人获胜,您可以输出0
或false
。
我自己的(Ruby)解决方案将很快推出。
编辑:抱歉,忘记将其标记为社区 wiki。您可以假设输入格式正确,不必进行错误检查。
更新:请以函数的形式发布您的解决方案。大多数人已经这样做了,但有些人还没有这样做,这并不完全公平。该板作为参数提供给您的函数。结果应该由函数返回。该函数可以具有您选择的名称。
c - 计算第 n 个素数的最短方法是什么?
“计算第n个素数”的最短C 代码是什么?
就重要字符而言最短,即分号、非空白字符、关键字和逗号的数量。
输入:
来自标准输入的整数n,由新行分隔。输入将由 EOF 终止。
输出:
在输入n之后,将第n个素数打印到由新行分隔的标准输出。
(您可以假设素数 < 10,000,即n < 1,230。)
测试用例:
我的尝试:
对于这个问题,可读性不是问题。在时间和内存方面成本更高但满足约束的代码在这里会被认为更好。
language-agnostic - 代码高尔夫:科拉茨猜想
受http://xkcd.com/710/的启发,这里有一个代码高尔夫。
挑战
给定一个大于 0 的正整数,打印出该数字的冰雹序列。
冰雹序列
有关更多详细信息,请参见维基百科。
- 如果是偶数,则除以二。
- 如果数字是奇数,则将其增加三倍并加一。
对产生的数字重复此操作,直到它达到 1。(如果它在 1 之后继续,它将进入无限循环1 -> 4 -> 2 -> 1...
)
有时代码是最好的解释方式,所以这里有一些来自维基百科
这段代码有效,但我增加了一个额外的挑战。程序不能容易受到堆栈溢出的影响。所以它必须要么使用迭代,要么使用尾递归。
此外,如果它可以计算大数字并且该语言尚未实现它,则可以加分。(或者如果您使用固定长度整数重新实现大数字支持)
测试用例
此外,代码 Golf 必须包含完整的用户输入和输出。
language-agnostic - 代码高尔夫:Triforce
这是受此线程启发/取自:http ://www.allegro.cc/forums/thread/603383
问题
假设用户给你一个从 1 到 7 的数字输入。输入应该从控制台获取,参数不太理想。
当输入为 1 时,打印以下内容:
大于 1 的值应生成模式的倍数,以上述模式结束,但对称堆叠。例如, 3 应该打印以下内容:
如果您也打印反面,则可获得奖励积分。
我们是否可以尝试将其保留为每种语言的一个答案,我们都可以改进?
language-agnostic - 代码高尔夫 - π 日
挑战
R
按字符计数的最短代码,使用字符显示半径圆的表示*
,后跟 π 的近似值。
输入是一个数字,R
。
由于大多数计算机似乎具有几乎 2:1 的比率,因此您应该只输出y
奇数行。这意味着R
奇怪的时候你应该打印R-1
行。有一个新的测试用例R=13
需要澄清。
例如。
编辑:由于奇数值引起的广泛混乱R
,任何通过下面给出的 4 个测试用例的解决方案都将被接受
*
π 的近似值是通过将字符数的两倍除以 给出的R²
。
近似值应至少正确到 6 位有效数字。
前导零或尾随零是允许的,因此例如3
, 3.000000
,中的任何一个都可以用于和003
的输入。2
4
代码计数包括输入/输出(即完整程序)。
测试用例
奖励测试用例
c - 通过只更改一个字符来修复损坏的循环
我发现了一个包含一些复杂 C 谜题的网站。现在我正在处理这个:
以下是一段 C 代码,其目的是打印 20 次减号。但是你可以注意到,它不起作用。
修复上面的代码是直截了当的。为了让这个问题变得有趣,你必须修正上面的代码,只改变一个字符。存在三种已知的解决方案。看看你能不能得到这三个。
我无法弄清楚如何解决。我知道可以通过更改为来修复它--
,++
但我无法弄清楚要更改哪个单个字符才能使其工作。
language-agnostic - 代码高尔夫:连接点
您可能还记得小时候的这些图画,但现在是时候让计算机绘制它们了(完整的 ascii 辉煌)。玩得开心!
描述:
输入是描述“字段”的多行(以换行符结尾)。该字段中散布着“数字”(由空格分隔)。所有行都可以被认为是相同的长度(您可以将空格填充到末尾)。
- 数字总是从 1 开始
- 它们遵循自然数的顺序:每个“下一个数字”都以 1 递增
- 每个数字都被(至少)左右一个空格包围
任务:
以自然顺序在这些数字之间
画线(1 -> 2 -> 3 -> ...N)
(假设 N <= 99),具有以下特征:
- 用 '
+
' 字符替换数字 - 对于水平线:使用 '
-
' - 对于垂直线:使用'
|
' - 向左和向下或向右和向上:
/
- 向左和向上或向右和向下:
\
重要笔记:
当绘制类型 4 和 5 的线时,您可以假设(给定与坐标 x1、y1 和 x2、y2 连接的点)
distance(x1,x2) == distance(y1,y2)
。或者换句话说(正如用户 jball 评论的那样):“未水平或垂直对齐的连续元素始终与斜线或反斜线的斜率对齐”。遵循点连接的顺序很重要(较新的线条可以剔除较旧的线条)。
-- 样本输入 1 --
-- 样本输出 1 --
-- 样本输入 2 --
-- 样本输出 2 --(独角兽参考)
优胜者:
最短的解决方案(按代码字符数)。输入可以通过标准输入读取。
language-agnostic - 代码高尔夫:复活节螺旋
有什么比Spiral更适合复活节代码高尔夫课程?
好吧,我猜几乎任何事情。
挑战
显示由星号 ('*') 组成的漂亮 ASCII 螺旋的按字符数计算的最短代码。
输入是单个数字 ,R
它将是螺旋的 x 大小。另一个维度 (y) 始终为R-2
。该程序可以假设R
总是奇数并且 >= 5。
一些例子:
代码计数包括输入/输出(即完整程序)。允许使用任何语言。
我轻松击败的 303 个字符长的 Python 示例:
现在,进入螺旋...