问题标签 [rosetta-stone]
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 - 代码高尔夫:科拉茨猜想
受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
代码计数包括输入/输出(即完整程序)。
测试用例
奖励测试用例
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 示例:
现在,进入螺旋...
string - Code Golf:单词搜索求解器
注意:这是我的第一个 Code Golf 挑战/问题,所以我可能没有使用下面的正确格式。我不太确定如何标记这个特定问题,这应该是社区维基吗?谢谢!
这个 Code Golf 挑战是关于解决单词搜索的!
维基百科定义的单词搜索是:
单词搜索、单词查找、单词搜索、单词侦探或神秘单词拼图是一种单词游戏,它是网格中单词的字母,通常具有矩形或正方形形状。这个谜题的目的是找到并标记隐藏在盒子里的所有单词。单词可以是水平的、垂直的或对角的。通常会提供隐藏单词的列表,但更具挑战性的谜题可能会让玩家弄清楚它们。许多单词搜索谜题都有一个主题,所有隐藏的单词都与之相关。
此挑战的单词搜索都将是矩形网格,并提供要查找的单词列表。单词可以垂直、水平或对角书写。
输入输出
用户输入他们的单词搜索,然后输入要在他们的网格中找到的单词。这两个输入被传递给您将要编写的函数。如何声明和处理这些对象取决于您。
使用下面描述的策略或您自己的策略,该函数在搜索中找到特定单词并输出其起始坐标(仅行号和列号)和结束坐标。如果您发现该单词出现两次,则必须输出两组坐标。如果这个词是回文,你可以任意选择一个末端作为这个词的“开始”。
例子
输入:
要查找的单词:codegolf
输出:
策略
以下是您可能会考虑使用的一些策略。完全由您决定要使用哪种策略;它不必在此列表中。
- 寻找单词的第一个字母;每次出现时,查看周围的八个字母,看看单词的下一个字母是否存在。
- 与上面相同,除了寻找一个单词的一部分,它有两个并排的相同字母。
- 计算字母表中每个字母在整个网格中出现的频率,然后从您必须找到的单词中选择一个出现次数最少的字母并搜索该字母。每次出现该字母时,您都会查看其周围的八个字母,以查看该单词的下一个和前一个字母是否存在。
code-golf - 代码高尔夫:Mandelbrot 套装
代码高尔夫的通常规则。这里以python中的一个实现为例
结果应该是这样的
允许使用图像库。或者,您可以使用 ASCII 艺术。这段代码做同样的事情
结果
编辑:
ASCII 艺术的规则:
- 行/列的大小是参数化的,代码必须使用任何有效值。
- 根据迭代次数,密度至少有三级差异(所以我的原型不符合要求)
- 水平方向(所以我上面的原型不兼容)
- 关键参数是固定的(最大迭代次数 = 1000,失控值 x x + y y <= 4.0)
图形规则:
- 行/列的大小是参数化的,代码必须使用任何有效值。
- 至少三级颜色,灰度
- 水平方向(我的原型是兼容的)
language-agnostic - Code-Golf:友好号码缩写
基于这个问题:有没有办法将数字四舍五入成友好的格式?
挑战 -更新! (从规范中删除了数百个缩写)
按字符数计算的最短代码,它将缩写一个整数(无小数)。
代码应包括完整的程序。
相关范围是从0 - 9,223,372,036,854,775,807
(有符号 64 位整数的上限)。
缩写的小数位数将为正数。您不需要计算以下内容:(920535 abbreviated -1 place
类似于0.920535M
)。
十位和百位 ( 0-999
)中的数字绝不应缩写(数字57
到1+
小数位的缩写是5.7dk
- 不必要且不友好)。
请记住从零取整一半(23.5 取整为 24)。银行家的四舍五入是禁止的。
以下是相关的数字缩写:
h = hundred (10
2
)
k = thousand (10
3
)
M = million (10
6
)
G = billion (10
9
)
T = trillion (10
12
)
P = quadrillion (10
15
)
E = quintillion (10
18
)
示例输入/输出(输入可以作为单独的参数传递):
第一个参数将是要缩写的整数。第二个是小数位数。
相关问题的原始答案(JavaScript,不遵循规范):
language-agnostic - Code Golf:MSM 随机数生成器
挑战:
按字符计数的最短代码,将使用Middle-Square Method生成一系列(伪)随机数。
(伪)随机数生成的中方方法由 John Von Neumann 在 1946 年首次提出,定义如下:
R n+1 = 中((R n ) 2 , m)
例如:
3456 2 = 11943936
中(11943936)= 9439
9439 2 = 89094721
中(89094721)= 0947
947 2 = 896809
中(896809)= 9680
9680 2 = 93702400
中(93702400)= 7024
另一个例子:
843 2 = 710649
中(710649)= 106
106 2 = 11236
中(11236)= 123
123 2 = 15129
中(15129)= 512
512 2 = 262144
中(262144)= 621
621 2 = 385641
中(385641)= 856
856 2 = 732736
中(732736)= 327
327 2 = 106929
中(106929)= 069
69 2 = 4761
中(4761) = 476
476 2 = 226576
中(226576)= 265
的定义mid
:
显然,对于 的确切定义存在一些混淆mid
。出于本次挑战的目的,假设您正在提取与起始种子相同的位数。意思是,如果起始种子有 4 个数字,您将从中间提取 4 个数字。如果 起始种子有 3 个数字,您将从中间提取 3 个数字。
关于在找不到确切中间时提取数字,请考虑数字710649。如果要提取中间 3,则存在一些歧义(106或064)。在这种情况下,提取最接近字符串开头的 3。因此,在这种情况下,您将提取106。
一种简单的思考方法是在数字不正确的情况下将零填充到数字中。例如,如果您将前导零填充到710649您将得到0710649并且中间 3 位现在变为106。
测试用例:
不对种子的长度做任何假设。例如,您不能假设种子始终是 4 位数字
生成 4 位随机数的3456起始种子应生成以下系列(前 10 个):
9439、947、9680、7024、3365、3232、4458、8737、3351、2292
生成 4 位随机数的8653起始种子应生成以下系列(前 10 个):
8744、4575、9306、6016、1922、6940、1636、6764、7516、4902
生成 3 位随机数的843起始种子应生成以下系列(前 10 个):
106、123、512、621、856、327、69、476、265、22
生成 5 位随机数的起始种子45678应生成以下系列(前 10 个):
86479、78617、80632、1519、30736、47016、10504、3340、11556、35411
就前导零而言,答案是不应该显示前导零:)。
language-agnostic - 代码高尔夫:鬼腿
挑战
在给定数字和有效字符串模式的情况下,使用Ghost Leg方法输出数字解的按字符数计算的最短代码。
例子
澄清
- 不要打扰输入。考虑其他地方给出的值。
- 两个输入值都有效:列号对应于现有列,模式仅包含符号
|
,-
,=
(和 [space], [LF])。此外,两个相邻的列不能都包含破折号(在同一行中)。 - 图案的尺寸未知(最小 1x1)。
澄清 #2
- 有两种无效模式:
|-|-|
并且|=|=|
会产生歧义。给定的输入字符串永远不会包含这些。 - 输入变量对所有人都是相同的;一个数值和一个表示模式的字符串。
- 参赛者必须产生一个功能。
测试用例
编辑:更正预期结果