编程拼图和代码高尔夫

编程益智爱好者和代码高尔夫球手的问答

30
什么时候(x == x + 2)?[关闭]
挑战:x以这样一种方式定义表达式,使表达式(x == x+2)求值为true。 我用C标记了问题,但欢迎使用其他语言的答案,只要它们具有创造力或突出语言的有趣方面即可。 我打算接受C解决方案,但其他语言也可以投票。 正确-适用于符合标准的实现。例外-假设是基本类型的实现,如果是常见实现(例如,假设int是32位2的补码),则可以。 简单-应该很小,使用基本语言功能。 有趣-我承认这是主观的。我有一些我认为有趣的示例,但我不想给出任何提示。更新:避免预处理器很有趣。 快速-第一个好的答案将被接受。 得到60个答案(我从没想到过这样的参与)后,总结一下可能会很好。 这60个答案分为7组,其中3组可以用C语言实现,其余用其他语言实现: C预处理程序。#define x 2|0有人建议,但还有许多其他可能性。 浮点。大数,无穷大或NaN都起作用。 指针算术。指向巨大结构的指针导致加2来回绕。 其余的不适用于C: 运算符重载- +不加或==始终返回true的 A。 制作x一个函数调用(有些语言允许它没有x()语法)。然后,它每次都可以返回其他内容。 一位数据类型。然后x == x+2 (mod 2)。 不断变化2-您0可以使用某种语言进行分配。
90 math  arithmetic  c 

30
为了纪念亚当·韦斯特
亚当·韦斯特(Adam West)去世了,我想在此纪念他在PPCG上的记忆,尽管我怀疑他知道我们的存在。尽管这个人以许多不同的事物而闻名,但没有比他作为原始蝙蝠侠的角色更突出的了。我将永远记得我的继父至今仍在观看老式的蝙蝠侠和罗宾。这个挑战本质上是简单的,根本不符合亚当·韦斯特这个复杂的人。但是,这是我能想到的最好的方法,因为这是该男子职业生涯中最具标志性的形象。 我想早些发布,但是我在等待有人提出更好的建议。 输出以下内容(带或不带尾随空格/换行符): * * **** * * **** **** ******* **** ****** ******* ****** ********* ********* ********* *********************************************** ************************************************* ************************************************* ************************************************* *********************************************** ***** ********************* ***** **** *** ***** *** **** ** * *** * ** 这是代码高尔夫球,最低字节数将获胜。

30
5个最喜欢的字母
挑战实际上非常简单。选择5个不同的字母(如果愿意,您可以选择5个最短的字母)并将它们输出到控制台。但是,不同之处在于它们必须来自以下列表: AAA BBBB CCCC DDDD EEEEE FFFFF GGG H H A A B B C D D E F G H H AAAAA BBBB C D D EEEE FFFF G GG HHHHH A A B B C D D E F G G H H A A BBBB CCCC DDDD …

30
4,8,15,16,23,42 [关闭]
4,8,15,16,23,42 编写一个程序,该程序可以无限次输出此数字序列。但是,数字一定不能出现在源代码中的任何位置。 以下不是输出数字的有效Java程序,因为数字出现在其源代码中: class TheNumbers { public static void main(String[] args) { for(int n = 0;;) System.out.println( n == 4 ? n = 8 : n == 8 ? n = 15 : n == 15 ? n = 16 : n == 16 ? n = 23 : n …

30
Code Golf圣诞版:如何打印出高度为N的圣诞树
给定一个数字N,如何N使用最少数量的代码字符打印出一棵高度高的圣诞树? N假定被限制为的最小值3和的最大值30(不需要边界和错误检查)。N作为程序或脚本的唯一命令行参数给出。 感谢所有语言,如果您看到一种已经实现的语言,并且可以将其简化,请尽可能编辑-否则请评论,并希望有人清理混乱。为了清楚起见,包括换行符和空格,但不要在字符数中包括它们。 这样生成一棵圣诞树,其“树干”仅包含居中的“ *” N = 3: * *** ***** * N = 4: * *** ***** ******* * N = 5: * *** ***** ******* ********* * N定义不包括一个主干的分支的高度。 圣诞快乐PPCG!

15
在C ++中生成最长的错误消息
写一个短的节目,这将产生最长的可能的错误消息,在一个标准的C ++编译器(gcc,cl.exe,icc,或clang)。 每个条目的分数是编译器发出的最长错误消息中的字符数。源代码中包含的类型以及编译器引用的类型被视为单个字符。 作弊 您始终可以在模板中用长名重新定义模板,但是我希望有一些创意。我试图通过最后一条规则来阻止其中的一些,但是当然这些规则可以做得更好,我很高兴得到改进。

30
BrainF *** edBotsForBattling-Brainf ***锦标赛
战场上的所有机器人都突然被搞砸了,没人能解释原因。但是,只要他们仍然能够战斗,谁就会在乎-尽管Brainfuck是他们现在唯一能理解的语言。 自上次提交以来已经有一段时间了,所以我终于宣布BrainFuckedBotsForBattling的赢家:祝贺LymiaAluysia在NyurokiMagicalFantasy上获胜! 计分板 | Owner | Bot Score | |--------------------|-------------------------------| | LymiaAluysia | NyurokiMagicalFantasy - 600 | | Sylwester | LethalLokeV2.1 - 585 | | weston | MickeyV4 - 584 | | Sp3000 | YandereBot - 538 | | Comintern | CounterPunch - 512 | | Sylwester | BurlyBalderV3 - …

30
ECMAScript 6及更高版本中的高尔夫技巧
这与其他“ <...>中打高尔夫球的技巧”相似,但专门针对ECMAScript 6及更高版本中JavaScript的新功能。 JavaScript的本身是一个非常冗长的语言,function(){},.forEach(),将字符串数组,类数组对象数组,等等等等都超涨大,而不是健康的高尔夫。 另一方面,ES6 +具有一些超级方便的功能并减少了占地面积。x=>y,[...x]等等只是一些示例。 请发布一些不错的技巧,以帮助减少代码中的少量额外字节。 注意:ES5技巧已在JavaScript打高尔夫球技巧中提供;请参见 该线程的答案应集中于仅在ES6和其他将来的ES版本中可用的技巧。 但是,此线程也适用于当前使用ES5功能打高尔夫球的用户。答案也可能包含一些技巧,以帮助他们理解ES6功能并将其映射到他们的ES5编码风格。

9
高尔夫降临日历
在一年中的这个时候,我们中的许多人都获得了我们的降临日历!如果您不熟悉出现日历,则这些是特殊的日历,用于在圣诞节前倒计时。以我的经验,门是随机放置的,而小时候正在锻炼明天门的位置的乐趣便是其中的一部分!如今,日历通常在每扇门后都有巧克力,但是您今年不应该购买出现日历,而应该构建ASCII日历! 任务 给定n在0- 范围内的整数()输入,将24产生一个ASCII出现日历,其中门的编号一直到n打开。您必须使用相同的顺序,在下面的例子:2,17,8,12,1,6,11,20,5,22,3,10,15,23,7,16,9,24,18,4,13,19,21,14。 门 封闭的门必须是: .-----------. | | | | | | | nn | |___________| 其中n代表门的数量(前导零是可选的),打开的门为: .-----------. |\ | | | | | | | | | | | |_________| \| 除了24号门,它是: .--------------------------. | | | | | | | 24 | |__________________________| .--------------------------. |\ | | | …

23
编程一个原始世界
让我们将原始程序定义为本身没有任何错误,但是如果您通过删除任何连续的N个字符的子字符串来修改它会出错的程序,其中1 <= N < program length。 例如,三个字符的Python 2程序 `8` 是一个原始程序(谢谢Sp),因为删除长度为1的子字符串所导致的所有程序都会引起错误(实际上是语法错误,但是任何类型的错误都可以): 8` `` `8 并且由于删除长度为2的子字符串而产生的所有程序也会导致错误: ` ` 例如,如果`8曾经是一个没有错误的程序,那么`8`它将不会是原始的,因为所有删除子字符串的结果都必须出错。 在此挑战中,您的任务是编写最短的原始程序,该程序无需输入,但可以输出以下五个单词中的任何一个: world earth globe planet sphere 您选择哪个单词完全取决于您。唯一的单词加上可选的尾随换行符应打印到标准输出(或您的语言的最接近替代品)。以字节为单位的最短程序获胜。 笔记: 需要一个独立程序,而不是一个功能。 这些单词区分大小写;输出World或EARTH不允许。 编译器警告不算作错误。 出错的子程序可以接受输入或给出输出,或执行其他任何操作,只要它们始终最终出错即可。 这是一个堆栈片段,将列出给定潜在原始程序的哪些程序需要出错: <script src='https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js'></script><script>function go() { var s = $('#i').val(), e = []; for (var i = 1; i < s.length; i++) …

14
[此处为圣诞节主题免责声明]
要注意mod,如果标题不公正,请将其更改为任何内容,我认为这很有趣。 您的任务是为此圣诞节季节挂灯,并且您的家人已决定,要使其成为圣诞节快乐,您需要在房屋上悬挂至少2个圣诞灯。因此,您面临的挑战是,给定一个数字1 < n,根据以下规范输出要悬挂的相应数量的圣诞灯... 这是基本的圣诞灯的结构: _?_ [___] /:' \ |:: | \::. / \::./ '=' 唯一不确定的部分是问号,因为取决于灯光在链中的位置,连接方式将有很大不同。 对于链中的第一盏灯,您需要输出: .--._ _(_ [___] /:' \ |:: | \::. / \::./ '=' 对于链中的最后一盏灯,您需要输出: _.--. _)_ [___] /:' \ |:: | \::. / \::./ '=' 对于中间的所有灯: _.--.--._ _Y_ [___] /:' \ |:: | \::. / …

30
Java打高尔夫球技巧
在Java中是否可以使用任何有用的快捷方式? 如下所示,import已经在程序中添加了至少17个字符。 import java.io.*; 我知道简单的解决方案是使用另一种语言,但是缩短Java程序似乎是一个真正的挑战。 提示应特定于Java:如果它们适用于大多数类似C的语言,则它们属于更一般的提示列表。
86 code-golf  tips  java 

28
重新排列图像中的像素,使其无法被识别然后重新取回
创建一个程序,该程序可以重新排列图像中的像素,使其无法被识别。但是,您的程序应该能够将其转换回原始图像。 您可以编写两个函数-用于编码和解码,但是反复使用一个函数可以给出原始图像(例如数学运算- f(x) = 1 - x)是一个加分项。 同样在输出中产生某种模式也会带来好处。 如果您的语言支持,则图像可以表示为1D / 2D数组或图像对象。请注意,您只能更改像素顺序! 将逻辑上选择为产生较少可识别图像的优胜者代码是合乎逻辑的,但是我不知道如何精确地测量它,我能想象的所有方法都会被欺骗。因此,我选择此问题为人气竞赛-让用户选择最佳答案! 测试图像1(800 x 422像素): 测试图像2(800 x 480像素): 请提供代码输出图像。

30
哎呀,这些字节是毛额
编写一个程序或函数,当给定一个字符串时,它会尽可能多地过滤掉不同的字节并返回清理后的字符串。但是,由于您的程序讨厌它们,因此这些字节中的任何一个都不能出现在您自己的代码中。 您的分数将是程序从输入中过滤掉的不同字节数,越高越好。这是最高分数255(因为您的程序必须至少一个字节)。决胜局是代码的长度,越低越好。 例如,如果您的程序过滤出bytes 0123456789,则其得分为10,但您的程序本身不能包含这些字节。 规则 字节表示八位位组。 您还可以选择将输入作为整数列表,其值的范围为0到255。它们对应于等效字节。 您的输出应与输入的格式相同 不阅读源代码 您的代码必须为非空 是的,我知道将会有一个语言/一元答案。但是至少请打高尔夫球吗?;) 编辑规则: 您可以选择忽略某个字节,例如,如果该字符串与字符串或EOF的终止字节无法区分。但是,这意味着您不能在提交中使用它,也不会计入您的分数。如果选择这样做,您的最高分将是254,但是您不必处理输入中的该字节。

25
饥饿的老鼠
将16堆奶酪放在4x4正方形上。它们被标记为到。最小的桩是,最大的桩是。1个111616161个11161616 饥饿的老鼠是如此饥饿,以至于它总是直接跳到最大的一堆(即)并立即吃掉它。161616 之后,它进入最大的相邻堆,并很快也吃掉那堆。(是的…… 真的很饿。)依此类推,直到不再有相邻的堆了。 一堆最多可以有8个邻居(水平,垂直和对角线)。没有环绕。 例 我们从以下几堆奶酪开始: 3615147891个101211165134237105681213159114141162\begin{matrix} 3&7&10&5\\ 6&8&12&13\\ 15&9&11&4\\ 14&1&16&2 \end{matrix} 饥饿的老鼠先吃掉,然后再吃掉最大的邻居堆,即。161616111111 3615147891个1012🐭↑5134237105681213159🐭4141↑2\begin{matrix} 3&7&10&5\\ 6&8&12&13\\ 15&9&🐭&4\\ 14&1&\color{grey}\uparrow&2 \end{matrix} 其下一个动作是,,,,,,,,和在此确切顺序。131313121212101010888151515141414999666777333 🐭↗↓↗←↙↖1个↙↑↗↑5←42🐭←↙5↗↙↑←↓↖↗4↗1↑2\begin{matrix} 🐭&\color{grey}\leftarrow&\small\color{grey}\swarrow&5\\ \small\color{grey}\nearrow&\small\color{grey}\swarrow&\color{grey}\uparrow&\color{grey}\leftarrow\\ \color{grey}\downarrow&\small\color{grey}\nwarrow&\small\color{grey}\nearrow&4\\ \small\color{grey}\nearrow&1&\color{grey}\uparrow&2 \end{matrix} 饥饿的老鼠周围不再有奶酪,所以它停在那里。 挑战 给定初始的奶酪配置,一旦饥饿的老鼠停止吃掉它们,您的代码必须打印或返回剩余的总和。 对于以上示例,预期答案为。121212 规则 由于输入矩阵的大小是固定的,因此可以将其作为2D数组或一维数组。 从到每个值都保证只出现一次。1个11161616 这是代码高尔夫球。 测试用例 [ [ 4, 3, 2, 1], [ 5, 6, 7, 8], [12, 11, 10, …
85 code-golf  matrix 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.