问题标签 [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.
maze - 代码高尔夫:解决迷宫
这是一个用最少的代码解决的有趣问题。我预计递归解决方案将最受欢迎。
我们有一个迷宫,它被定义为一张人物地图,其中=
是一堵墙,一个空间是一条路径,+
是你的起点,#
也是你的终点。一个非常简单的例子是这样的:
你能用尽可能少的代码编写一个程序来找到解决这种风格的迷宫的最短路径吗?
如果它适用于所有迷宫输入,例如那些具有跨越自身的路径或具有大量分支的迷宫输入,则可以加分。该程序应该能够适用于大型迷宫(例如,1024x1024 - 1 MB),并且如何将迷宫传递给程序并不重要。
“玩家”可以沿对角线移动。输入迷宫永远不会有对角线通道,因此您的基本动作集将是上、下、左、右。对角线运动只是向前看一点,以确定是否可以合并上/下和左/右。
输出必须是迷宫本身,其中最短路径使用星号字符 ( *
) 突出显示。
code-golf - Code Golf:字符串中的重复字符删除
挑战:最短的代码,按字符计数,检测并删除字符串中的重复字符。删除包括重复字符的所有实例(因此,如果您找到 3 个 n,则所有三个都必须删除),并且需要保留原始字符顺序。
示例输入 1:
nbHHkRvrXbvkn示例输出 1:
RrX
示例输入 2:
nbHHkRbvnrXbvkn示例输出 2:
RrX
(第二个示例删除了出现三次的字母;一些解决方案未能解决此问题)
(这是基于我的另一个问题,我需要在 C# 中以最快的方式执行此操作,但我认为它可以跨语言制作良好的 Code Golf。)
language-agnostic - 将字符串转换为摩尔斯电码
挑战
按字符计数的最短代码,将仅使用字母字符(大写和小写)、数字、逗号、句点和问号输入字符串,并以摩尔斯电码返回字符串的表示形式。摩尔斯电码输出应包含-
用于长哔声(AKA 'dah')的破折号( ,ASCII 0x2D)和.
用于短哔声(AKA'dit')的点( ,ASCII 0x2E)。
每个字母应该用空格分隔(' '
, ASCII 0x20),每个单词应该用正斜杠分隔(/
, ASCII 0x2F)。
莫尔斯电码表:
替代文字 http://liranuna.com/junk/morse.gif
测试用例:
代码计数包括输入/输出(即完整程序)。
code-golf - 代码高尔夫:反向奎因
编写一个程序,将其源代码的反向输出为字符串。如果源是
(即 C 字符串"abcd\nefg"
)
那么输出应该是
(即 C 字符串"gfe\ndcba"
)
使用诸如 Brainf*ck 等深奥语言的奖励积分。
*编辑:** 删除了不必要的 \0 字符。+
language-agnostic - 代码高尔夫:浪潮
挑战
按字符计数的最短代码从输入字符串生成波形。
通过提升(第 1 行)较高的字符和降低(第+1 行)较低的字符来生成波浪。相同的字符保持在同一行(不进行提升或降级)。
输入仅由小写字符和数字组成,字母被认为高于数字。
测试用例:
代码计数包括输入/输出(即完整程序)。
algorithm - 编码脑筋急转弯以更新数组(与语言无关)
全部,
我需要一种聪明的方法来尽可能快速和干净地实现这个算法(工作):我想我已经删除了所有语言特定的问题并将其归结为:
我有两个数组:A 和 B。
A 中有一个名称列表 {Apple, Apple, Banana, Banana, Banana, Carrot, ...} 每个第 i 个值在 A 中出现的次数没有上限。可以只有一个“苹果”或数不胜数。
A 中的每个条目在 B 中都有一个匹配的条目。(多对多映射)。例如:
如果 A 中有 100 个或更少的条目实例(如果有 <= 100 个香蕉),那么它们必须共享相同的初始“B”值。如果超过 100 个,则前 100 个必须共享相同的 B 值,但接下来的 100 个将具有第 B[i + 100] 个值。
例如,如果有 102 个苹果
那么我想要的结果是这样的:
我敢肯定有一些超级大脑可以想出我设计的蹩脚算法,所以让我们看看吧!
编辑1:我想我应该指出这是为了工作。我认为这是一个有趣的挑战,有人可能想看看,并且可能想出比我想出的更好的解决方案。
编辑2:感谢丹尼尔指出我的愚蠢错误。
我的解决方案只是为了比较(伪代码):
首先制作 B 的哈希/字典,称为 d,其中 d[ "Apple" ] = A 中 Apple 的实例数。
从记忆中做到这一点,希望我没有搞砸索引......
math - Code Golf:数学表达式评估器(尊重 PEMDAS)
我挑战你编写一个数学表达式评估器,它尊重 PEMDAS(操作顺序:括号、求幂、乘法、除法、加法、减法),而不使用正则表达式、预先存在的类似“Eval()”的函数、解析库, ETC。
我在 SO(此处)上看到了一项预先存在的评估员挑战,但该挑战特别需要从左到右的评估。
示例输入和输出:
我用 C# 编写了一个评估器,但想看看它与选择语言的聪明程序员相比有多糟糕。
有关的:
说明:
让我们把它变成一个接受字符串参数并返回字符串结果的函数。
至于为什么没有正则表达式,那是为了公平竞争。我认为“最紧凑的正则表达式”应该有一个单独的挑战。
使用 StrToFloat() 是可以接受的。通过“解析库”,我的意思是排除通用语法解析器之类的东西,也是为了公平竞争。
支持浮动。
支持括号、求幂和四种算术运算符。
给予乘法和除法同等的优先级。
给予加法和减法同等的优先权。
为简单起见,您可以假设所有输入都是格式正确的。
对于您的函数是否接受诸如“.1”或“1e3”之类的有效数字,我没有偏好,但接受它们将为您赢得布朗尼积分。;)
对于被零除的情况,您也许可以返回“NaN”(假设您希望实现错误处理)。
code-golf - Code Golf:没有正则表达式的电子邮件地址验证
(编辑:什么是 Code Golf:Code Golf 是用您喜欢的任何语言的字符数以最少的代码量解决特定问题的挑战。 更多信息请参见Meta StackOverflow。)
Code Golfers,这是字符串操作的挑战。
电子邮件地址验证,但当然没有正则表达式(或类似的解析库)。与其说是电子邮件地址,不如说是您可以编写多短的不同字符串操作和下面给出的约束。
规则如下(是的,我知道,这不符合 RFC,但这些将是本次挑战的 5 条规则):
该组中至少有 1 个字符位于 @ 之前:
/li>@ 必须存在,只存在一次
/li>句点 (.) 必须在 @ 之后恰好存在一次
/li>@ 和以下之间至少有 1 个[AZ, az]字符。(时期)
/li>在最后的 . 之后至少只有 2 个 [AZ, az]字符。时期
/li>
请仅发布方法/函数,它将采用字符串(建议的电子邮件地址),然后根据电子邮件地址有效(真)或无效(假)返回布尔结果(真/假)。
祝你好运!