问题标签 [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 投票
16 回答
6854 浏览

binary - 代码高尔夫 - 十六进制到(原始)二进制转换

在回答这个询问十六进制到(原始)二进制转换的问题时,有一条评论建议它可以用“5-10 行 C 或任何其他语言”来解决。

我确信对于(某些)脚本语言可以实现,并且想看看如何。我们能否证明该评论对于 C 也是正确的?

注意:这并不意味着十六进制到ASCII二进制 - 特别是输出应该是对应于输入 ASCII 十六进制的原始八位字节流。此外,输入解析器应该跳过/忽略空格。

编辑(由 Brian Campbell 撰写)为了保持一致性,我可以提出以下规则吗?如果您认为这些内容没有帮助,请随意编辑或删除这些内容,但我认为由于已经讨论了某些情况应该如何工作,因此进行一些澄清会有所帮助。

  1. 程序必须从标准输入读取并写入标准输出(我们也可以允许读取和写入通过命令行传入的文件,但我无法想象在任何语言中这会比标准输入和标准输出更短)
  2. 该程序必须仅使用包含在您的基本标准语言发行版中的软件包。对于 C/C++,这意味着它们各自的标准库,而不是 POSIX。
  3. 程序必须在没有传递给编译器或解释器的任何特殊选项的情况下编译或运行(因此,'gcc myprog.c' 或 'python myprog.py' 或 'ruby myprog.rb' 都可以,而 'ruby -rscanf myprog.rb ' 是不允许的;需要/导入模块会影响您的字符数)。
  4. 程序应读取由成对的相邻十六进制数字(大写、小写或混合大小写)表示的整数字节,可选用空格分隔,并将相应的字节写入输出。每对十六进制数字首先写入最高有效半字节。
  5. 程序对无效输入的行为(除 之外[a-fA-F \t\r\n]的字符,将两个字符分隔在单个字节中的空格,输入中的奇数个十六进制数字)是未定义的;错误输入的任何行为(除了主动损坏用户的计算机或其他东西)都是可以接受的(抛出错误,停止输出,忽略错误字符,将单个字符视为一个字节的值,都可以)
  6. 程序可能不会写入额外的字节来输出。
  7. 代码按源文件中最少的总字节数计分。(或者,如果我们想更忠实于最初的挑战,分数将基于最少的代码行数;在这种情况下,我会限制每行 80 个字符,否则你会得到一堆1 行的关系)。
0 投票
6 回答
120970 浏览

php - 简单的 PHP 表单:电子邮件附件(代码高尔夫)

想象一个用户想在他们的网站上放置一个表单,允许网站访问者上传一个文件和一个简单的消息,这些消息将立即通过电子邮件发送(即,文件没有存储在服务器上,或者如果它是仅暂时)作为文件附件,在邮件正文中带有注释。

在http://a2zsollution.com/php-secure-e-mail/上查看更多详细信息

完成此任务的最简单方法是什么?

最简单的方面:

  • 尺寸(代码高尔夫)
  • 易于实施(理想情况下都在一个文件中,几乎不需要外部资源)
  • 不为混淆而混淆(大小的权衡很好)
  • 自包含示例(如果在没有表单帖子的情况下调用,它会显示表单)

这几乎与以下内容相反:如何从 PHP 获取电子邮件及其附件它几乎可以在Compiling email with multiple attachments in PHP中得到回答,但它实际上并没有显示代码。

0 投票
14 回答
1741 浏览

puzzle - 代码高尔夫:自动机

我使用这些规则制作了终极笑声发生器。你能用你最喜欢的语言巧妙地实现它吗?

规则:

在每次迭代中,都会发生以下转换。

0 投票
9 回答
3137 浏览

java - 素数计算的最短代码

我学校的计算机科学系报纸(称为自述文件,挪威语,第 19 页)举办了一场有趣的比赛,为以下问题编写尽可能短的 Java 代码。

取一个整数(作为字符串数组的第一个条目中的字符串,因为 Java main 方法只接受一个字符串数组)作为参数,并首先写出该数字以下的所有素数,然后写出所有不是素数。最短的代码获胜!

作为答案,我将发布赢得比赛的最短 Java 代码。我想知道 Stack Overflow 社区是否可以制作更短的代码如果你懂挪威语,你会发现如果你这样做了,你可能会赢得一瓶香槟,但不幸的是,比赛的最后提交日期已经结束。

你会如何解决这个问题?

0 投票
3 回答
809 浏览

javascript - 注入尽可能少的字符的javascript文件?

我正在开发一个小书签,并认为我会面临一个挑战:如何从链接中以尽可能少的字符注入外部 javascript 文件。

这是我能想到的最短的:

那是没有 URL 的 88 个字符。

这里的 Stack Overflow javascript 大师能做得更好吗?我将接受字符最少的工作答案,所以戴上你的思考帽!

(有一件事:书签必须在所有主流浏览器中都可以使用。是一个聪明的解决方案,但不适用于所有主流浏览器,因为它会返回一个值。)

0 投票
8 回答
2186 浏览

python - python dict.add_by_value(dict_2)?

问题:

因此,这个想法是两个以最短形式通过 int/float 值添加到字典中。这是我设计的一种解决方案,但我不喜欢它,因为它很长:

我认为必须有一个更短/简洁的解决方案(可能与 reduce 和 operator 模块有关?itertools?)......有什么想法吗?


更新:我真的希望找到更优雅的东西,比如“reduce(operator.add, key = itemgetter(0), a+b)”。(显然这不是真正的代码,但你应该明白)。但这似乎是一场梦。


更新:仍在寻找更简洁的解决方案。也许 groupby 可以提供帮助?我提出的使用“reduce”/“groupby”的解决方案实际上并不简洁:

0 投票
11 回答
6030 浏览

bash - 如何使用 cat 进行编程?

在这部xkcd 漫画中: 真正的程序员

他们提到真正的程序员使用cat. 好吧,我在问自己:你怎么能用这个cat命令来编程?

0 投票
43 回答
19266 浏览

math - 评估一串简单的数学表达式

挑战

这是挑战(我自己的发明,但如果它以前出现在网络上的其他地方,我不会感到惊讶)。

编写一个函数,该函数接受单个参数,该参数是简单数学表达式的字符串表示形式,并将其计算为浮点值。“简单表达式”可以包括以下任何一种:正数或负数十进制数、+-*/(、、)。表达式使用(正常)中缀表示法。运算符应该按照它们出现的顺序进行评估,即不像BODMAS中那样,当然应该正确地观察括号。该函数应该为任何返回正确的结果这种形式的可能表达。但是,该函数不必处理格式错误的表达式(即语法错误的表达式)。

表达式示例:

规则

我预计这里会有某种形式的“作弊”/狡猾,所以请让我提前警告!通过作弊,我指的是eval在动态语言(如 JavaScript 或 PHP)中使用或等效函数,或者同样在运行中编译和执行代码。(我认为我对“无 BODMAS”的规范几乎可以保证这一点。)除此之外,没有任何限制。我预计这里会有一些正则表达式解决方案,但很高兴看到更多。

现在,我主要对这里的 C#/.NET 解决方案感兴趣,但任何其他语言也完全可以接受(特别是用于功能/混合方法的 F# 和 Python)。我还没有决定是否接受最短或最巧妙的解决方案(至少对于语言)作为答案,但我欢迎任何语言的任何形式的解决方案,除了我刚刚在上面禁止的!

我的解决方案

我现在在这里发布了我的 C# 解决方案(403 个字符)。更新: 在一些可爱的正则表达式的帮助下,我的新解决方案在294 chars上明显击败了旧解决方案!我怀疑这很容易被一些语法较轻的语言(特别是功能/动态语言)击败,并且已被证明是正确的,但我很好奇是否有人仍然可以在 C# 中击败它。

更新

我已经看到了一些非常狡猾的解决方案。感谢所有发布过的人。尽管我还没有测试过它们中的任何一个,但我会相信人们并假设他们至少可以使用所有给定的示例。

只是为了说明,重入(即线程安全)不是该功能的要求,尽管它是一个奖励。


格式

为了便于比较,请按以下格式发布所有答案:

语言

字符数:???

完全混淆的功能:

清除/半混淆功能:

关于它所采用的算法/聪明快捷方式的任何注释。


0 投票
3 回答
8237 浏览

c# - Codegolf:在 C# 中使用最少的代码将 csv 转换为 HTML 表格

我正在向我自己的个人工具包库中添加一个函数来进行简单的 CSV 到 HTML 表的转换。

我希望用尽可能小的代码在 C# 中执行此操作,并且它需要能够处理超过 ~500mb 的 CSV 文件。

到目前为止,我的两个竞争者是

  • 通过分隔符将 csv 拆分为数组并构建 HTML 输出

  • 使用 table th tr td 标签搜索替换分隔符

假设已经处理了文件/读取/磁盘操作...即,我将包含所述CSV 内容的字符串传递给此函数。输出将包含直接的简单 HTML 无样式标记,是的,数据中可能有杂散的逗号和中断。

更新: 有些人问。如果有帮助的话,我处理的 CSV 100% 直接来自 excel。

示例字符串:

0 投票
7 回答
3486 浏览

language-agnostic - Code Golf:找到加权中位数的最短代码?

我尝试打代码打高尔夫球。

找到 的最小值∑W_i*|X-X_i|的问题减少到找到权重列表的加权中位数x[i]w[i]定义见下文)。你将如何用一个最短、最简单、最漂亮的程序来做到这一点?

这是我的代码最初的样子(解释在问题的答案中,简短版本作为下面的答案之一发布)。

i(实际上,当您看到变量并重用时,它已经被大量优化sum

规则

浮点数和整数:不同的语言有不同的浮点算术标准,所以我将问题重新表述为整数x[i]如果你愿意,你可以返回两倍的答案值(总是整数)。您可以返回、打印或将答案分配给变量。w[i]

加权中位数的定义和说明:

  • x[i]长度排序数组的中位数nx[n/2](x[n/2-1/2]+x[n/2+1/2])/2取决于n是奇数还是偶数
  • 未排序数组的中位数是排序后数组的中位数(是的,但我们的数组已排序)
  • x[i]具有整数正权重的加权中位数w[i]定义为较大数组的中位数,其中每次出现的x[i]都已更改为w[i]的出现x[i]

我希望看到什么

询问的原因之一是我假设最合适的语言将使用 lambda 进行简单的数组求和和迭代。我认为函数式语言可能是合理的,但我不确定——所以这是问题的一部分。我希望看到类似的东西

不知道是否有任何语言可以实现并且实际上更短。

测试数据

答案:6 或 12。

答案:6.5 或 13。