问题标签 [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.
code-golf - 代码高尔夫:查找所有字谜
如果单词中的字母可以重新排列以形成不同的单词,则该单词就是字谜。
任务:
最短的源代码通过字符数找到给定单词列表的所有字谜集。
空格和换行符应该算作字符
使用码尺
---------10--------20--------30--------40--------50---- ----60--------70--------80--------90--------100--------110- ------120
输入:
来自标准输入的单词列表,每个单词由一个新行分隔。
例如
输出:
所有字谜集,每组由单独的行分隔。
示例运行:
我有一个 149 字符 perl 解决方案,我会在更多人发布后立即发布 :)
玩得开心!
编辑:澄清
- 假设字谜不区分大小写(即大小写字母是等价的)
- 只应打印多于 1 件的套装
- 每组字谜应该只打印一次
- 字谜集中的每个单词只能出现一次
EDIT2:更多说明
- 如果两个单词仅大小写不同,则应将它们折叠成同一个单词,由您决定使用哪种大写方案用于折叠单词
- 单词集只需要换行结束,只要每个单词以某种方式分隔,例如逗号分隔或空格分隔都是有效的。我了解某些语言内置了快速数组打印方法,因此如果它不输出空格分隔的数组,这应该允许您利用它。
string - Code Golf:单词搜索求解器
注意:这是我的第一个 Code Golf 挑战/问题,所以我可能没有使用下面的正确格式。我不太确定如何标记这个特定问题,这应该是社区维基吗?谢谢!
这个 Code Golf 挑战是关于解决单词搜索的!
维基百科定义的单词搜索是:
单词搜索、单词查找、单词搜索、单词侦探或神秘单词拼图是一种单词游戏,它是网格中单词的字母,通常具有矩形或正方形形状。这个谜题的目的是找到并标记隐藏在盒子里的所有单词。单词可以是水平的、垂直的或对角的。通常会提供隐藏单词的列表,但更具挑战性的谜题可能会让玩家弄清楚它们。许多单词搜索谜题都有一个主题,所有隐藏的单词都与之相关。
此挑战的单词搜索都将是矩形网格,并提供要查找的单词列表。单词可以垂直、水平或对角书写。
输入输出
用户输入他们的单词搜索,然后输入要在他们的网格中找到的单词。这两个输入被传递给您将要编写的函数。如何声明和处理这些对象取决于您。
使用下面描述的策略或您自己的策略,该函数在搜索中找到特定单词并输出其起始坐标(仅行号和列号)和结束坐标。如果您发现该单词出现两次,则必须输出两组坐标。如果这个词是回文,你可以任意选择一个末端作为这个词的“开始”。
例子
输入:
要查找的单词:codegolf
输出:
策略
以下是您可能会考虑使用的一些策略。完全由您决定要使用哪种策略;它不必在此列表中。
- 寻找单词的第一个字母;每次出现时,查看周围的八个字母,看看单词的下一个字母是否存在。
- 与上面相同,除了寻找一个单词的一部分,它有两个并排的相同字母。
- 计算字母表中每个字母在整个网格中出现的频率,然后从您必须找到的单词中选择一个出现次数最少的字母并搜索该字母。每次出现该字母时,您都会查看其周围的八个字母,以查看该单词的下一个和前一个字母是否存在。
excel - Code Golf:Excel 列名的数字等效项
挑战
按字符计数的最短代码,将输出 Excel 列字符串的数字等效项。
例如,A
列是 1,B
是 2,依此类推。一旦您点击Z
,下一列将变为AA
,然后AB
以此类推。
测试用例:
代码计数包括输入/输出(即完整程序)。
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
- 有两种无效模式:
|-|-|
并且|=|=|
会产生歧义。给定的输入字符串永远不会包含这些。 - 输入变量对所有人都是相同的;一个数值和一个表示模式的字符串。
- 参赛者必须产生一个功能。
测试用例
编辑:更正预期结果
language-agnostic - 代码高尔夫:代码 39 条码
挑战
按字符计数绘制 Code 39 条形码的 ASCII 表示的最短代码。
关于 Code 39 的维基百科文章: http ://en.wikipedia.org/wiki/Code_39
输入
对于 Code 39 条码,输入将是一串合法字符。这意味着 43 个字符是有效的:0
- 9
A
- Z
(空格)和
-.$/+%
. 该*
字符不会出现在输入中,因为它用作开始和停止字符。
输出
Code 39 条码中编码的每个字符都有九个元素、五个条形和四个空格。条将用#
字符表示,空格将用空格字符表示。九个元素中的三个将是宽的。窄元素是一个字符宽,宽元素是三个字符宽。应在每个字符模式之间添加单个空格的字符间空格。应重复该模式,以使条形码的高度为八个字符高。
开始/停止字符*
(bWbwBwBwb) 将表示如下:
- 开始和结束字符
*
需要在条码的开始和结束处输出。 - 条形码之前或之后不需要包含安静空间。
- 不需要计算校验位。
- 不需要完整的 ASCII Code39 编码,只需标准的 43 个字符。
- 无需在 ASCII 条形码表示下方打印任何文本来识别输出内容。
- 如果需要,该字符
#
可以替换为另一个更高密度的字符。使用完整的块字符 U+2588,将允许条形码在打印时实际扫描。
测试用例
代码计数包括输入/输出(完整程序)。
language-agnostic - 代码高尔夫:1x1 黑色像素
最近,我用我最喜欢的图像编辑器制作了一个 1x1 黑色像素(当你想用 HTML 便宜地绘制实心框时,它可以派上用场)。尽管我把它做成了单色 PNG,但结果却是 120 字节!我的意思是,这有点陡峭。120 字节。 对于一个像素。然后我将其转换为 GIF,将大小降至 43 字节。好多了,但还是...
挑战
是或生成1x1 黑色像素的最短图像文件或程序。提交可能是:
- 表示 1x1 黑色像素的图像文件。选择的格式必须能够表示大于 1x1 的图像,并且不能是临时的(也就是说,它不能是您为代码打高尔夫球而编造的图像格式)。图像文件将按字节数排序。
- 生成此类图像文件的程序。程序将按字符数排名,就像在代码高尔夫中一样。
只要答案属于这两个类别之一,任何事情都是公平的游戏。
此外,对于图像文件,请以十六进制或转义符指定它们,而不是使用外部图像主机 :-)
math - 代码高尔夫:所有 +-*/ 3 个整数的组合
编写一个程序,接受 3 个由空格分隔的整数,并执行可能的加减乘除运算的每个组合,并使用所使用的运算组合显示结果。
例子:
$./solution 1 2 3
结果如下输出
1+2+3 = 6
1-2-3 = -4
1*2*3 = 6
1/2/3 = 0
(仅整数答案,四舍五入为 0.5)
1*2-3 = -1
3*1+2 = 5
ETC...
操作规则的顺序适用,假设不会使用括号,即(3-1)*2 = 4
不是组合,尽管您可以为“额外信用”实施此操作
对于除以 0 的结果,只需返回 NaN
编辑:需要置换输入,即,如果输入为1 2 3
,3*1*2
则为有效组合。