编程拼图和代码高尔夫

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

16
罗塞塔石碑挑战:找到系列规则
Rosetta Stone挑战赛的目标是用尽可能多的语言编写解决方案。炫耀您的编程多语言! 挑战 您面临的挑战是实现一种程序,该程序将以尽可能多的编程语言输入一个数字列表,并输出用于生成该系列中每个连续数字的规则。您可以使用您的语言具有的任何标准库函数,因为这主要是语言展示。 什么是“系列”? 系列是整数的有序列表。通过将简单规则应用于序列中的先前编号,可以生成序列中的每个连续编号。在此挑战中,规则包括将数字乘以一个常数,然后加上第二个常数。这两个常数可以是任何整数。挑战的目标是输出这两个常数。 对于该系列2 5 11,该规则可以写为2 1。这意味着每个数字都是前一个数字乘以2,再加上1。一个重要的事实是,大多数序列只有一个规则。某些系列具有无限数或根本没有数字,但是您不必处理这个问题。 输入值 输入将是三个不同整数的列表,它们是序列中的数字。这些数字可以用空格,逗号或换行符分隔,但请指定。由于某些语言可能会有输入限制,因此我将对此限制保持灵活性。这是四个输入示例: 0 7 14 2 5 11 2 0 -4 5 -19 77 输出量 输出将是两个整数,代表用于生成序列的规则。第一个数字将是乘法常数,而第二个数字将是加法常数。输出的格式可以用空格,逗号或换行符分隔。我对此限制也很灵活。以下是相应的输出示例: 1 7 2 1 2 -4 -4 1 客观取胜标准 关于客观的获胜标准,这是:关于谁可以写得最短的条目,每种语言都是一个单独的竞赛,但是总的获胜者将是赢得这些子竞赛中最多的人。这意味着以多种不同寻常的语言回答的人可以获得优势。当一种语言中有多个解决方案时,代码高尔夫球通常是决胜局:程序最短的人会获得该语言的荣誉。 规则,限制和注释 您的程序可以用2012年4月9日之前存在的任何语言编写。由于我不太可能进行测试,因此我还必须依靠社区来验证使用某些较不常见/深奥的语言编写的答复。他们。 现任排行榜 本节将定期更新以显示语言的数量以及每种语言的领先者。 AWK(32)-mellamokb bash(31)-彼得·泰勒 Befunge(29)-霍华德 卑诗省(39)-kernigh 操脑(174)-CMP C(78)-l0n3_shArk C ++(96)-左右左右 常见的Lisp(88)-kernigh 克雷教堂(59)-凯尔·卡诺斯(Kyle …

2
以语言名称为输入并输出以输入语言实现的相同内容的Quine
从奎因中心: 编写一个将语言名称作为输入并输出与输入语言相同的东西的输入框。 原始文章中有一些您可以使用的内容,但是正如作者所说,这要困难得多。显然,您只需要支持有限的几种语言即可。尽管是您的选择,还有基本语言。 作为代码挑战,您的分数将是程序支持的语言数量;越高越好。

19
非平凡的权力
编写最短的程序以按顺序打印≤2 ^ 12的非平凡幂次 非平凡幂表示基数和指数> 1 前导空格是可选的 当有多个解决方案时,顺序并不重要,因此 16 = 4^2, 2^4 还可以 样本输出: 4 = 2^2 8 = 2^3 9 = 3^2 16 = 2^4, 4^2 25 = 5^2 27 = 3^3 32 = 2^5 36 = 6^2 49 = 7^2 64 = 2^6, 4^3, 8^2 81 = 3^4, 9^2 …
15 code-golf  math 

10
计算Pi的位数
这是一个有点不同的任务。从第1024个十六进制位置开始计算π的1024个十六进制数字。 正式地:您的程序应在不到1分钟的时间内完成,并产生以下输出: 25d479d8f6e8def7e3fe501ab6794c3b976ce0bd04c006bac1a94fb6409f60c45e5c9ec2196a246368fb6faf3e6c53b51339b2eb3b52ec6f6dfc511f9b30952ccc814544af5ebd09bee3d004de334afd660f2807192e4bb3c0cba85745c8740fd20b5f39b9d3fbdb5579c0bd1a60320ad6a100c6402c7279679f25fefb1fa3cc8ea5e9f8db3222f83c7516dffd616b152f501ec8ad0552ab323db5fafd23876053317b483e00df829e5c57bbca6f8ca01a87562edf1769dbd542a8f6287effc3ac6732c68c4f5573695b27b0bbca58c8e1ffa35db8f011a010fa3d98fd2183b84afcb56c2dd1d35b9a53e479b6f84565d28e49bc4bfb9790e1ddf2daa4cb7e3362fb1341cee4c6e8ef20cada36774c01d07e9efe2bf11fb495dbda4dae909198eaad8e716b93d5a0d08ed1d0afc725e08e3c5b2f8e7594b78ff6e2fbf2122b648888b812900df01c4fad5ea0688fc31cd1cff191b3a8c1ad2f2f2218be0e1777ea752dfe8b021fa1e5a0cc0fb56f74e818acf3d6ce89e299b4a84fe0fd13e0b77cc43b81d2ada8d9165fa2668095770593cc7314211a1477e6ad206577b5fa86c75442f5fb9d35cfebcdaf0c7b3e89a0d6411bd3ae1e7e4900250e2d2071b35e226800bb57b8e0af2464369bf009b91e5563911d59dfa6aa78c14389d95a537f207d5ba202e5b9c5832603766295cfa911c819684e734a41b3472dca7b14a94 长度最短的程序将获胜。您必须在运行时计算所有数字。您不必实现计算π的算法;如果您的语言已经提供了该功能,则可以使用它。

12
实施Glob Matcher
实现要匹配的模式和字符串的功能,如果模式与WHOLE字符串匹配,则返回true,否则返回false。 我们的全局模式语法为: ? 匹配任何一个字符 + 匹配一个或多个字符 * 匹配零个或多个字符 \ 逃脱 规则: 没有评估,没有转换为正则表达式,没有调用系统glob函数。 不需要I / O:您只需编写一个函数 最短的胜利 例子: glob('abc', 'abc') => true glob('abc', 'abcdef') => false IMPORTANT! glob('a??', 'aww') => true glob('a*b', 'ab') => true glob('a*b', 'agwijgwbgioeb') => true glob('a*?', 'a') => false glob('?*', 'def') => true glob('5+', '5ggggg') => true …

30
实施部门
用您喜欢的语言实现除法算法,该算法可以处理整数除法。它只需要处理正数-但是如果处理负数和混合符号除法,也需要加分。结果四舍五入为分数结果。 该程序可能不包含/,\,div或类似的运营商。它必须是不使用语言的本机除法功能的例程。 您只需要处理32位除法。不允许使用重复减法。 输入值 在stdin上输入两个输入,并用新行或空格分隔(您的选择) 740 2 输出量 在这种情况下,输出为370。 最短的解决方案就是胜利。

24
下星期五13日
能预测下一个星期五的下一个最短程序是哪个月的第13天? 必须是功能完整的程序(而不仅仅是函数/子例程) 必须以以下格式打印日期: YYYY-MM-DD 允许用户提供开始日期作为命令行参数或通过 STDIN 如果用户未提供开始日期,请使用今天作为开始日期。 如果开始日期是13号星期五,则程序应找到下一个 13号星期五。 如果今天(2011年2月16日)运行该程序,则应获得以下输出。 $ ./fr13th 2013-05-09 2013-09-13 $ ./fr13th 2007-06-29 2007-07-13 $ ./fr13th 2007-07-13 2008-06-13 $ ./fr13th 2011-05-13
15 code-golf  date 

18
浮点异或
您的任务非常简单。给定两个浮点数,将它们按位进行异或,然后将其输出为浮点数。 例如, Normal: 16.7472 ^ 123.61 = 7.13402e-37 Binary: 01000001100001011111101001000100 ^ 01000010111101110011100001010010 = 00000011011100101100001000010110 Normal: 2.2 ^ 4.4 = 1.17549e-38 Binary: 01000000000011001100110011001101 ^ 01000000100011001100110011001101 = 00000000100000000000000000000000 Normal: 7.898 ^ 3.4444 = 1.47705e-38 Binary: 01000000111111001011110001101010 ^ 01000000010111000110101001111111 = 00000000101000001101011000010101 限制/说明: 输入/输出可以通过任何方便的方法给出。 该程序可以是完整程序,也可以只是功能。两者都很好。 浮点类型可以是任意大小,但最小大小为2个字节。 禁止出现标准漏洞。 最短的代码获胜。

30
前进两步,后退一步
假设我距离目的地十步之遥。我按照古老的谚语“向前走两步,向后退一步”走到那里。我向前走了两步,向后走了一步,直到我正好站在目的地上。(这可能涉及跨过我的目的地,然后返回目的地)。我走了几步? 当然,我可能还没有十步之遥。我可能只有11步之遥,或者是100步。我可以测量10个步伐,并继续来回走动以解决问题,或者...我可以编写一些代码! 编写一个函数,计算出要走N步要走多少步,顺序为:向前两步,向后一步。 假设您已从步骤0开始。将“向前两步”算作两步,而不是一步。 假设所有步骤都是统一的长度。 它应该返回到达该空间时首先执行的步骤数。(例如,距离10步需要26步,但是您在步骤30再次点击了它)。我们对26个感兴趣。 使用您喜欢的任何语言。 它应该接受任何正整数作为输入。这代表了目标步骤。 最小的字节数获胜。 例: 我想走5步: | | | | | | <- I'm at step 0, not yet on the grid. | |X| | | | <- I take two steps forward, I'm on step 2: the count is 2 |X| | | | …

2
这是有效的棋步吗?
备用名称: ChessMoveQ 给定最多包含32个元素的列表,每个元素由4个元素组成,以及具有4个元素的第二个列表,请确定第二个输入中详细说明的移动是否是有效的国际象棋移动。 第一个列表指示所有32个部件在板上的位置。每个元素都将遵循结构<colour>, <piece-name>, <x-coord>, <y-coord>,例如["W", "K", 5, 1],它指示白色国王在上面5, 1(e1在正常的棋盘上)。第一个输入的所有元素都是唯一的。<x-coord>并且<y-coord>始终在1到8之间。一个示例是: [["B", "K", 3, 8], ["B", "Q", 1, 5], ["B", "N", 4, 7], ["B", "N", 7, 8], ["B", "B", 2, 4], ["B", "R", 4, 8], ["B", "R", 8, 8], ["B", "P", 1, 7], ["B", "P", 2, 7], ["B", "P", 3, …

2
给我一些问题来解答!
介绍 有时候我很无聊,关于PPCG并没有新的问题,所以我希望您从PPCG的过去中随机抽取一个问题。 挑战 给定用户的PPCG ID作为输入(例如,我的ID为30525),输出随机选择的PPCG问题的URL。如果问题不符合以下条件,则必须选择另一个问题,直到满足条件: 问题提问者不能是为其问题输入ID的用户 输入其问题ID的用户一定不能回答该问题 这个问题一定不能回答:这可能太难了 这个问题不能有10个以上的答案:这可能太容易了 该问题必须标记为代码高尔夫 规则 不允许使用URL缩短器。 您可以使用Stack Exchange API和Stack Exchange Data Explorer。 您只会获得真实的PPCG用户ID。 万一没有合适的问题,您不必输出任何东西(未定义的行为就可以了)。 侧面挑战 尽管不会获得加分,但是如果有人设计了可用的书签,则该书签会在运行时打开浏览器窗口,显示符合上述条件的随机PPCG问题,我们将不胜感激。用户ID应该被硬编码到程序中(仅用于书签)。 挑战 以字节为单位的最短代码获胜。

5
二进制卷积
二进制卷积由数字描述M,并应用于数字N。对于的二进制表示形式中的每个位M,如果将该位设置为(1),则通过将与相应位中的相应位相邻的两个位进行XOR N(在必要时进行环绕)来给出输出中的相应位。如果未设置该位(0),则输出中的相应位由中的相应位给出N。 一个有效的示例(具有8位值): 让N = 150,M = 59。它们的二进制表示形式分别为10010110和00111011。 根据M的二进制表示形式,卷积0、1、3、4和5。 位0的结果由对位1和7进行XOR运算得出(因为我们进行了环绕),得出1。 位1的结果由位0和2的XOR运算得出0。 位2的结果由原始位2给出,即1。 第3位的结果由第2位和第4位的XOR运算得出0。 位4的结果由位3和5的XOR运算得出0。 第5位的结果由第4位和第6位的XOR运算得出1。 位6和7的结果由原始位6和7给出,得出0和1。 因此,输出为10100110(166)。 挑战 给定N和M,输出执行Mon上描述的二进制卷积的结果N。输入和输出可以采用任何方便,一致且明确的格式。N并且M将始终在(包括)范围内[0, 255](8位无符号整数),并且应将其二进制表示形式填充为8位以执行二进制卷积。 测试用例 150 59 -> 166 242 209 -> 178 1 17 -> 0 189 139 -> 181 215 104 -> 215 79 214 -> 25 190 207 -> 50 61 …
15 code-golf  binary  integer  bitwise  code-golf  rational-numbers  code-golf  string  palindrome  code-golf  ascii-art  code-golf  code-golf  string  fibonacci  code-golf  math  sequence  code-golf  code-golf  string  palindrome  code-golf  string  code-golf  math  primes  source-layout  code-golf  sequence  binary  integer  code-golf  math  arithmetic  game  code-golf  restricted-source  palindrome  code-golf  restricted-source  palindrome  code-golf  combinatorics  binary  code-golf  string  math  code-golf  ascii-art  number  code-golf  cipher  code-golf  base-conversion  counting  code-golf  sequence  random  classification  code-golf  string  subsequence  code-golf  permutations  code-golf  string  code-golf  string  cipher  code-golf  kolmogorov-complexity  arithmetic  integer  code-golf  quine  markov-chain  code-golf  string  code-golf  code-golf  ascii-art  maze 

18
如何轻松减肥?
在这个问题上,尽管减肥的方法仍然很多,但我们只会专注于通过运动来减肥。 不同的运动会消耗不同量的卡路里。 例如,打台球一个小时可以燃烧102卡路里[1],而打篮球15分钟可以燃烧119卡路里[1],至少从某些角度来看,这使打篮球更容易减轻体重。 衡量舒适度的确切方法是将燃烧的卡路里量除以所需的时间,从而得出舒适度指数(EI)。 例如,击剑15分钟可以燃烧85卡路里的热量,EI为85/15。 您将获得以下格式的列表: [["fencing",15,85],["billiards",60,102],["basketball",15,119]] 或您想要的其他格式。 然后,您将输出具有最高EI的运动。 TL; DR 给定一个元组[name,value1,value2]输出列表,name其中where value2/value1最高。 约束条件 您可能不会在该过程中产生任何非整数的实数。 您不得使用任何内置分数。 规格(规格) 如果满足该结果的名称不止一个,则可以输出它们的任何非空子集或它们的任何元素。 该名称将与regex匹配/^[a-z]+$/,这意味着它仅由小写的拉丁文标准字母组成。 该列表将不会为空。 测试用例 输入: [["fencing",15,85],["billiards",60,102],["basketball",15,119]] 输出: basketball 参考文献 http://calorielab.com/burned/

1
使用NAND逻辑门构建微型浮点加法器
甲minifloat是具有非常少的比特的浮点数的二进制表示。 此问题中的最小浮点数将定义为6位数字m,其具有以下表示形式: 1位代表数字的符号。此位将是0如果数字为正,1如果该数字为负。 3位代表数字的指数,偏移量为3(即的指数110实际上代表2 3的因数,而不是2 6的因数)。 指数是000指次正规数。尾数是整数的小数部分0乘以最低可能指数(在这种情况下为2 -2)的系数。 2位代表数字的尾数。如果指数不是000或111,则2位代表a之后的小数部分1。 的指数111表示infinity尾数是否为0,NaN否则为(不是数字)。 在Wikipedia文章中,这将被称为(1.3.2.3)minifloat。 此微型浮点数表示的一些示例: 000000 = 0.00 = 0 000110 = 1.10 × 2^(1-3) = 0.375 001100 = 1.00 × 2^(3-3) = 1 011001 = 1.01 × 2^(6-3) = 10 011100 = infinity 011101 = NaN 100000 = -0.00 = -0 100011 …

8
为Hello World建立多语言
产生一个打印“ Hello World!”的文本文件。在编译/解释时以尽可能多的编程语言编写,同时也要尽可能简短。 您提交的分数的计算方式为C / 2 ^ ((L - 1) / 4),其中“ C”是文本文件的长度(以字符为单位),“ L”是该程序有效的语言数量。

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.