问题标签 [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.

0 投票
9 回答
2870 浏览

language-agnostic - 代码高尔夫:电话号码到单词

SO上的代码高尔夫指南

我们都见过用文字表达的电话号码:1-800-BUY-MORE 等。

您可以编写的最短代码量是多少,它将为 7 位美国电话号码生成所有可能的单词组合。

输入将是一个七位数的整数(或字符串,如果更简单的话),并假设输入格式正确。

输出将是一个由七个字符组成的字符串列表,

例如,数字 428-5246 将产生

GATJAGM
GATJAGN
GATJAGO
GATJAHM
GATJAHN
GATJAGO
GATJAIM
GATJAIN
GATJAIO 等等.....

获胜标准将是来自任何语言的代码,该代码具有最少的字符,可以产生所有可能的字母组合。

补充笔记:

  • 为了使其更有趣,单词只能使用北美经典键盘手机上的字母组成,每个数字三个字母,如此处定义这意味着 Z 和 Q 被排除在外。
  • 对于数字“1”,请放置一个空格。
  • 对于数字“0”,请输入连字符“-”

将输出识别为真正的英语单词可获得奖励积分。好吧,不是真的。;-)

补充:好的,让我们使用“Nick's Modified North American Classic Key Pad”,它在 6 键上有一个“O”(哦,不是零)。

0 投票
13 回答
2366 浏览

language-agnostic - 代码高尔夫:钻石图案

挑战

根据输入,按字符计数的最短代码输出一个菱形图案。

输入由 3 个正数组成,分别代表菱形的大小和网格的大小。

菱形由 ASCII 字符/\空格组成。尺寸为 1 的钻石是:

网格的大小由菱形数量的宽度和高度组成。

测试用例



代码计数包括输入/​​输出(即完整程序)。

0 投票
14 回答
33177 浏览

language-agnostic - Code Golf - 横幅生成

当感谢某人时,你不想只是给他们发一封电子邮件说“谢谢!”,你想要一些 FLASHY 的东西:

编写程序来生成横幅。您只需要生成大写的 AZ 以及空格和感叹号(什么是没有感叹号的横幅?)。所有字符都由相同字符的 3x5 网格组成(因此 S 是由 S 组成的 3x5 网格)。所有输出都应该在一行上(所以没有换行符)。以下是您需要的所有字母:

获胜者是最短的源代码,按以utf-8 编码存储文件所需的字节数计算。源代码应该从标准输入读取输入,输出到标准输出。您可以假设输入将仅包含[A-Z! ]. 如果您因输入错误而侮辱用户,您将获得 10 个字符的折扣 =P。

我本来需要这 28 个字符,但为了让它更有趣,你可以选择你希望它们的外观 - 让你的代码更短!为了证明您的字母确实看起来像普通字母,请显示最后三个运行的输出。


迄今为止最短的代码,以字符为单位(如果存在非 ASCII 编码,则为 utf8 编码):

133 焦

205 蟒蛇

209 红宝石

313 哈斯克尔

345 C89

第382章

0 投票
29 回答
3144 浏览

language-agnostic - Code-Golf:模数除法

挑战:

在不使用您的语言已经提供的模除运算符的情况下,编写一个程序,该程序将接受来自用户的两个整数输入,然后显示第一个数模除数除以第二个数的结果。假设所有输入都是正数。

例子:

谁赢:

如果您不知道 Code Golf 是如何工作的,那么获胜者就是以最少的字符编写此程序的人。

0 投票
2 回答
1738 浏览

php - Code-Golf:一行 PHP 语法

解释

PHP 在其语法中存在一些漏洞,在开发过程中,程序员偶尔会介入其中。这可能会导致很多挫败感,因为这些语法漏洞似乎无缘无故地存在。例如,不能轻易地创建一个数组并在同一行访问该数组的任意元素(func1()[100]不是有效的 PHP 语法)。此问题的解决方法是使用临时变量并将语句分成两行,但有时这会导致非常冗长、笨拙的代码。

挑战

我知道其中一些漏洞(我相信还有更多)。甚至很难想出一个解决方案,更不用说代码高尔夫风格了。获胜者是所有四个语法孔中字符总数最少的人。

规则

  1. 语句必须是这种形式的一行:$output = ...;,其中...不包含任何;'s。
  2. 只使用标准库函数(不允许自定义函数eval
  3. 语句的工作方式与假定的非工作语法的功能相同(即使在它失败的情况下)。
  4. 语句必须在没有任何类型的语法错误的情况下运行E_STRICT | E_ALL

语法漏洞

  1. $output = func_return_array()[$key];- 访问函数返回数组的任意偏移量(string或)integer
  2. $output = new {$class_base.$class_suffix}();- 用于创建新类的任意字符串连接
  3. $output = {$func_base.$func_suffix}();- 任意字符串连接被称为函数
  4. $output = func_return_closure()();- 调用从另一个函数返回的闭包
0 投票
10 回答
4600 浏览

language-agnostic - Code Golf:之字形图案扫描

挑战

按字符数计算的最短代码,它采用单个输入整数N(N >= 3) 并返回一个索引数组,在迭代时将根据 JPEG“之字形”扫描模式遍历Nx矩阵。N以下是遍历 8x8 矩阵src的示例:

之字形布局模式

例子

(中间矩阵不是输入或输出的一部分,只是输入表示的 NxN 矩阵的表示。)

笔记

  • 结果数组的基数应该适合您的语言(例如,Matlab 数组是从 1 开始的,C++ 数组是从 0 开始的)。
  • 这与这个问题有关

奖金

扩展您的答案以获取两个输入N和(N, M >=3) 并在x矩阵M上执行相同的扫描。(在这种情况下是列数和行数。)NMNM

奖金示例

0 投票
7 回答
2360 浏览

language-agnostic - 代码高尔夫:旋转迷宫

代码高尔夫:旋转迷宫


制作一个程序,接收一个由迷宫组成的文件。迷宫的墙壁由#. 迷宫必须包括一个由 a 给出的球和由 a 给出的o任意数量的洞@。迷宫文件既可以通过命令行输入,也可以通过标准输入作为一行读入。请在您的解决方案中指定哪个。

然后您的程序执行以下操作:

您可以假设所有输入迷宫都已关闭。注意:在这方面,孔有效地充当墙壁。

您可以假设所有输入迷宫都没有多余的空格。

按字符数计算最短的源代码获胜。


用 javascript 编写的示例:http: //trinithis.awardspace.com/rotatingMaze/maze.html


迷宫示例:



0 投票
59 回答
37329 浏览

language-agnostic - 构建给定文本中最常用单词的 ASCII 图表

挑战:

构建给定文本中最常用单词的 ASCII 图表。

规则:

  • 只接受a-zA-Z(字母字符)作为单词的一部分。
  • 忽略大小写(She==she我们的目的)。
  • 忽略以下词语(我知道这很武断):the, and, of, to, a, i, it, in, or, is
  • 澄清:考虑到don't:这将被视为范围a-zA-Z: (dont) 中的 2 个不同的“单词”。

  • 或者(现在正式更改规范为时已晚)您可以选择删除所有单字母“单词”(这也可能导致忽略列表的缩短)。

解析给定的text(读取通过命令行参数指定的文件或通过管道输入的文件;假定us-ascii)并构建word frequency chart具有以下特征的我们:

  • 显示 22 个最常见单词的图表(也参见下面的示例)(按频率降序排列)。
  • 条形width表示单词的出现次数(频率)(按比例)。追加一个空格并打印单词。
  • 确保这些条(加上空格-单词-空格)始终适合 ++bar应该始终是 <=[space]字符(确保您考虑到可能不同的条和单词长度:例如:第二个最常见的单词可能会更长第一个虽然频率差异不大)。在这些约束范围内最大化条形宽度并适当地缩放条形(根据它们所代表的频率)。word[space]80

一个例子:

示例文本可在此处找到刘易斯卡罗尔的《爱丽丝梦游仙境》)。

该特定文本将产生以下图表:

供您参考:这些是上述图表所依据的频率:

第二个示例(检查您是否实现了完整的规范):you将链接的爱丽丝梦游仙境文件中的 每个出现替换为superlongstringstring

获胜者,冠军:

最短的解决方案(按字符数,每种语言)。玩得开心!


编辑:总结迄今为止结果的表格(2012-02-15)(最初由用户 Nas Banov 添加):

数字代表特定语言中最短解的长度。“严格”是指完全实现规范的解决方案(绘制|____|条形图,用一条线关闭顶部的第一个条形图____,考虑高频长词的可能性等)。“放松”意味着采取了一些自由来缩短解决方案。

仅包含少于 500 个字符的解决方案。语言列表按“严格”解决方案的长度排序。'Unix Toolchain' 用于表示使用传统 *nix shell混合工具(如 grep、tr、sort、uniq、head、perl、awk)的各种解决方案。

0 投票
7 回答
849 浏览

string - 代码高尔夫:重复文本的“颜色突出显示”

(感谢下面的 greg0ire 对关键概念的帮助)

挑战:构建一个程序来查找所有子字符串并用颜色属性“标记”它们(有效地在 XML 中突出显示它们)。

规则:

  1. 这只应该对长度为 2 或更长的子字符串进行。
  2. 子字符串只是连续字符的字符串,其中可能包括非字母字符。请注意,空格和其他标点符号不会分隔子字符串。
  3. 字符大小写不能忽略。
  4. “突出显示”应该通过在 XML 中标记子字符串来完成。您的标记应采用该子字符串和相同子字符串唯一的正数的<TAG#>theSubstring</TAG#>形式#
  5. 该算法的优先级是找到最长的子字符串,而不是在文本中匹配多少次。

注意:下面示例中显示的标记顺序并不重要。为了清楚起见,它只是由 OP 使用。


示例输入:


部分正确的输出(在此示例中,OP 可能没有完全替换)


您的代码应该能够处理边缘情况,例如:

示例输入 2:

示例输出 2:


获胜者,冠军:

  • 最优雅的解决方案获胜(根据其他评论、赞成票来判断)
  • 使用 shell 脚本的解决方案的奖励积分/注意事项

小说明:

  • 输入可以硬编码或从文件中读取
  • 标准仍然是“优雅”,诚然有点模糊,但它也封装了简单的字符/行数。其他人的评论和/或赞成票也表明 SO 社区如何看待挑战
0 投票
4 回答
2226 浏览

language-agnostic - 代码高尔夫:2D 平台游戏

挑战

  • 到达关卡的尽头!
  • 如果您准确地击中每个 (C)oin 块 2 次,则可获得奖励积分。

不允许

  • 以任何方式对命令序列进行硬编码。
  • 你最喜欢的“一个字符语言”恰好做了一件事,那就是解决这个高尔夫问题。

如何

您的程序通过标准输入接收以下级别(没有换行符)。
然后它必须打印出成功完成关卡所需的命令。

等级

  • S是你的起始位置。
  • E完成关卡所需的位置。
  • C是一个硬币块,里面有 2 个硬币,你永远不必跳过其中一个才能完成关卡。
  • C_算地,只有实地没有浮动平台。
  • | 是一堵墙,为了完成关卡,你需要跳上的所有墙最多只有 1 堵墙高,所有更高的墙都可以认为是你无法以任何方式摆脱的深渊。
  • x是尖峰,猜猜如果你触摸它们会发生什么。尖峰总是在它们周围的地面以下一层。

所有级别都是 4 行高,每行 63 个字符宽。这使得每个级别总共有 252 个字符。

注意: >< 只是为了说明边界,它们包含在程序的输入中。还要注意你的文本编辑器,因为我的空格多次搞砸了

命令

  • M = 将你向右移动 1,如果你下方没有地面,你会跌倒直到你撞到它。坠落时 不能移动。
  • J = 跳跃,在接下来的 3 个命令中将您向上移动 1 或直到您击中 (C)oin 块。在那之后,你会跌倒直到你到达地面。你只能在地面上跳跃。如果 M 将您带到与地面相同的高度,则跳跃将被取消。
  • O = NOP,会让你等待/什么都不做。这样你就可以跳过只有 1 个街区宽的洞和尖峰(你不需要这个对于上面的水平,但如果你能解决需要这个的水平,你会获得额外的积分)。

解决方案(带硬币块)

连续的命令堆叠在一起。
F表示您将跌倒的位置(请记住,跌倒时您不能做任何事情),

生成的命令序列,75 个字符长:

希望这会产生一些有趣的结果......而不是大量的火焰:O

编辑

好的,有比我最初想象的更多的可能性,我为所有的编辑道歉。