编程拼图和代码高尔夫

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

2
编写辐射硬化的辐照器
任务是编写辐射硬化的辐射器。我到底是什么意思? 辐照器是一个程序,当给定一个字符串作为输入时,它将输出该字符串的所有可能版本,并删除一个字符。例如,给定input Hello, world!,程序应输出: ello, world! Hllo, world! Helo, world! Helo, world! Hell, world! Hello world! Hello,world! Hello, orld! Hello, wrld! Hello, wold! Hello, word! Hello, worl! Hello, world 但是,必须保护辐照器免受其辐射,因此您编写的辐照器在穿过自身时也必须生存。也就是说,当删除程序的任何单个字节时,程序仍必须正常运行。 测试用例 abc -> bc; ac; ab foo bar -> oo bar:fo bar:fo bar:foobar:foo ar:foo br:foo ba source -> ource;surce;sorce;souce;soure;sourc; 技术指标 …

14
变相的排列
给定一个nnn维向量vvv与真正的条目,找到最接近的置换ppp的(1,2,...,n)(1,2,...,n)(1,2,...,n)相对于所述l1l1l_1 -distance。 细节 如果是更方便,你可以使用置换(0,1,...,n−1)(0,1,...,n−1)(0,1,...,n-1)代替。如果存在多个最接近的排列,则可以输出任何一个或全部替换。 两个向量u ,v之间的l1l1l_1距离定义为d (u ,v )= ∑ i | u i − v i | 。u,vu,vu,vd(u,v)=∑i|ui−vi|.d(u,v)=∑i|ui−vi|.d(u,v) = \sum_i \vert u_i-v_i\vert. 如果需要,可以假定输入仅由整数组成。 例子 [0.5 1] -> [1 2], [2 1] c*[1 1 ... 1] -> any permutation [1 4 2 6 2] -> [1 4 3 5 2], …

10
编写一个函数,返回与(x,y)4向相邻的所有有效点的可迭代对象
通常,算法类和计算机科学中非常普遍的需求是在网格或矩阵上(例如在BFS或DFS中)对4方向进行迭代。这似乎经常导致大量笨拙和冗长的代码,并且在循环内进行了大量的算术和比较。我已经看到了许多不同的方法,但是我无法撼动这种简单的方法。 面临的挑战是编写一个纯函数,给定一个有限平面的宽度和高度,该平面n, m起源于point (0,0),并且坐标(x,y)可以表示该平面内的任何有效点,返回平面内所有点的4方向可迭代对象毗邻(x,y)。 目的是在尽可能少的字节中定义该功能。 一些示例可帮助说明有效的输入/输出: n = 5 (y-axis), m = 3 (x-axis) (zero-based) matrix = [ [A, B, C], [D, E, F], [G, H, I], [J, K, L], [M, N, O], ] (x, y) => [valid iterable points] E: (1, 1) => [(1, 0), (2, 1), (1, 2), …

8
吉米需要您的帮助!
似乎最近,吉米人死了很多,在这里和这里都可以看到,要求您确定吉米是否会跌倒。现在是时候制止这种疯狂并设法拯救吉米了。 吉米有三个身体部位/,o以及\安排这样 /o\ 平台用表示-。如果吉米的身体部位不位于平台的正上方,则吉米会从平台上掉下来。 一些例子: /o\ - ------- 吉米会保持平衡,因为他们的所有身体部位都在身体之上-。 /o\ ------ --- 吉米将保持平衡,因为两个身体部位都在-s 之上。 /o\ -- ---- -- 即使将Jimmy分为两个平台,他们也会保持平衡 /o\ - 吉米不会平衡,因为两个身体部位不在平台上方。 由于我的平台供不应求,所以我只有长度为5的平台,重要的是我们使用的平台应尽可能少。 您的任务是输入Jimmys并输出一串平台,该平台将在输入中保存所有Jimmys。您的输出必须使用尽可能少的平台,但每个平台-的宽度必须为5 。 请注意,平台的规则是5 -宽,这意味着每个平台之间必须有一个空格。----------在输出中无效,因为它将被视为长度为10的平台,而不是长度为5的两个平台。 测试用例 /o\ /o\/o\ // input ----- ----- // output /o\ /o\ ----- ----- /o\ /o\ // same input as above ----- ----- // …

29
我反转了源代码,您反转了输入!
另一种公然敲竹杠一个的敲竹杠一个的敲竹杠。去投票那些! 您的任务(如果希望接受)是编写一个程序/函数,该程序输出/返回其字符串输入/参数。棘手的部分是,如果我反转源代码,那么输出也必须反转。 为简单起见,您可以假定输入始终是仅包含ASCII字母(az),数字(0-9)和空格的单行字符串。 应该支持至少8个字符长的输入(不必超过8个字符)。 空输入的行为是不确定的。 例子 假设您的源代码为ABC,其输入为xyz。如果我CBA改为编写并运行它,则输出必须为zyx。 假设您的源代码为ABC,其输入为96。如果我CBA改为编写并运行它,则输出必须为69。 只要前导或尾随空白在正常输出和反向输出中都一致,就可以接受。

20
贡献最大的行
给定一个非负整数的非空矩阵,请回答哪些唯一行对矩阵中元素总数的贡献最大。 通过任何合理的指示来回答,例如,唯一行的出现顺序(或排序顺序)的掩码,或这些行的索引(从零或一开始的索引),或由行组成的子矩阵(以任何顺序)或某些一种字典构造……–但要解释一下! 例子 [[1,2,3],[2,0,4],[6,3,0],[2,0,4],[6,3,0],[2,0,4]]: 唯一的行是[1,2,3],,[2,0,4]并且[6,3,0]每次出现时各自分别贡献6、6和9。但是,它们分别出现一次,三次和两次,因此它们各自的出现对总数(42)的贡献分别为6、18和18,因此后两行是贡献最大的。因此,有效的答案是: [false,true,true] 上面或 实际行的 外观/排序顺序或 [1,2]/ [2,3]基于零/一的索引的 掩码⋮ [[2,0,4],[6,3,0]] [[1,2],[3,1],[2,3],[1,2],[3,1],[2,3],[1,2]] [false,false,true](出现顺序)/ [false,true,false](排序次序) [2]/ [3](出现顺序)/ [1]/ [2](排序次序) [[2,3]] ⋮

9
XKCD日历事实
启示。经许可张贴。 打印可能的XKCD日历“事实”之一: 您可以从我的APL参考实现或Explain XKCD的成绩单(包括插图下方的标题文本)中获取原始文本和结构。 规则 在每个决策节点,每个选择都必须有相等的(伪)随机机会。 您可以全部使用大写字母。 您必须生成三个句子;问题,原因和标题文字。 三句话应被结束?,.以及.分别与由单个空间彼此分离。 您可能包括的唯一额外空白是一个尾随空格和/或换行符。 例子 Did you know that the Latest Sunset drifts out of sync with the Zodiac because of time zone legislation in Indiana? Apparently it's getting worse and no one knows why. While it may seem like trivia, it has to …

26
编写这个代码不太难吗?
您必须使用输出此模式的任何语言编写程序或函数: ~|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||~ |~|||||||||||||||||||||||||||||||||||||||||||||||||||||||||~| ||~|||||||||||||||||||||||||||||||||||||||||||||||||||||||~|| |||~|||||||||||||||||||||||||||||||||||||||||||||||||||||~||| ||||~|||||||||||||||||||||||||||||||||||||||||||||||||||~|||| |||||~|||||||||||||||||||||||||||||||||||||||||||||||||~||||| ||||||~|||||||||||||||||||||||||||||||||||||||||||||||~|||||| |||||||~|||||||||||||||||||||||||||||||||||||||||||||~||||||| ||||||||~|||||||||||||||||||||||||||||||||||||||||||~|||||||| |||||||||~|||||||||||||||||||||||||||||||||||||||||~||||||||| ||||||||||~|||||||||||||||||||~|||||||||||||||||||~|||||||||| |||||||||||~|||||||||||||||||~|~|||||||||||||||||~||||||||||| ||||||||||||~|||||||||||||||~|||~|||||||||||||||~|||||||||||| |||||||||||||~|||||||||||||~|||||~|||||||||||||~||||||||||||| ||||||||||||||~|||||||||||~|||||||~|||||||||||~|||||||||||||| |||||||||||||||~|||||||||~|||||||||~|||||||||~||||||||||||||| ||||||||||||||||~|||||||~|||||||||||~|||||||~|||||||||||||||| |||||||||||||||||~|||||~|||||||||||||~|||||~||||||||||||||||| ||||||||||||||||||~|||~|||||||||||||||~|||~|||||||||||||||||| |||||||||||||||||||~|~|||||||||||||||||~|~||||||||||||||||||| 输出由20行组成,每行61个字符。 规则 禁止出现标准漏洞 输出末尾可能只有一条尾随换行符 在输出的任何行上可能没有尾随空格 如果没有尾随换行符,则输出的md5校验和为fde4e3b4606bf9f8c314131c93988e96。 在尾随换行符的情况下,输出的md5校验和为1f0b43db4fec6594be202c8339024cb7。 这是code-golf,因此以字节为单位的最短代码获胜。

25
好的老后缀矢量
受到旧手册的启发... 挑战 我定义了一个个后缀矢量的b为长度的布尔列表一个与b尾随truthy值。 写一个程序或功能,给定一个和b通过任何手段,则返回一次的后缀向量b通过任何手段。 现在看似微不足道,但要注意的是:您的分数是字节数加上解决方案可以使用的最早年份。 规则 所有标准规则均适用,但也可以使用在挑战后发布的语言和语言版本。 使用您的语言使用的布尔值的任何表示形式进行输出,例如1/ 0,True/ False,TRUE/ FALSE,"True"/ "False"等。 使用列表,你的语言使用,例如任何代表输出0 0 1,[False,False,True],(FALSE;FALSE;TRUE),{"False","False","True"},等。 你可以假设一个 ≥ b始终是真实的,他们是合适的数据类型。 测试用例 给定a = 7和b = 3,返回0 0 0 0 1 1 1 给定a = 4和b = 4,返回[True,True,True,True] 给定a = 2和b = 0,返回(FALSE;FALSE) 给定a = 0和b = 0,返回{} 示例解决方案和评分 我可能想{⌽⍺↑⍵⍴1}使用Dyalog APL 提交解决方案。那将是8的字节数。这是一个动态函数,可以在1998年发布的Dyalog APL …

2
单行中最多违反PEP8的次数
您的任务是编写一个文件,其中包含许多违反pep8的行为。 规则: 我们使用pep8 1.5.7版和默认设置。 不允许使用其他命令行选项或使用自定义rc文件调用pep8。 最大行长为120个字符。您可以违反E501,但是计算分数的行必须小于或等于120个字符。 您的模块可以在前面或后面有其他行,但是只有一行会影响您的分数。 您的文件可以包含SyntaxErrors或任何类型的垃圾,无需导入或运行。 评分示例: 以下模块thing.py的得分为2,因为它包含带有2个pep8违规的行(第1行)。 spam='potato' 要检查分数: ~$ mktmpenv (tmp-ae3045bd2f629a8c)~/.virtualenvs/tmp-ae3045bd2f629a8c$ pip install pep8==1.5.7 (tmp-ae3045bd2f629a8c)~/.virtualenvs/tmp-ae3045bd2f629a8c$ echo -n "spam='potato'" > thing.py (tmp-ae3045bd2f629a8c)~/.virtualenvs/tmp-ae3045bd2f629a8c$ pep8 thing.py thing.py:1:5: E225 missing whitespace around operator thing.py:1:14: W292 no newline at end of file

11
你好世界扭曲
您的目标:编写一段代码,得到经典的结果:“ Hello,world!” 被打印到STDOUT或同等版本。 规则:代码必须完全以ASCII码打印。所有代码都必须可以使用-删除任何单个计数字符都必须更改结果或导致代码无法使用。分配后必须使用所有变量。字符和字符串文字必须是输出所必需的-也就是说,用另一个字符替换任何字符文字或字符串文字中的任何字符都必须能够更改结果(而不是通过转义序列的作用-用反斜杠替换字符)或同等学历) (注意:最终规则已编辑) 得分:这是有趣的地方。根据典型的代码保龄球规则,最高分数取决于字符数。但是重复使用字符会导致扣分。特别... 重复使用任何字母数字字符(az,AZ,0-9)将导致每次重复扣除3分(首次使用不会导致扣除)。 重复使用基本标点符号([!?.-,“:';])-包括方括号-将导致每次重复扣除2分。 重复使用其他ASCII字符{`〜@#$%^&* _ + = | \ /> <}-包括大括号-将导致每次重复减少4点。 重复使用空格,制表符和换行符将导致每次重复扣除1分。也就是说,只有第一次使用空格,制表符或换行符才会计入总计。 注意:尽管标记注释开始/结束的字符确实占注释的总和,但注释不会计入总数。例如,在C / C ++中,如果您有/* This is a comment */,则它将计算两个斜杠和两个星号,但它们之间没有任何区别。 一些示例(注意:使用Julia作为示例语言)... print("Hello, world!"); 可见字符总数:22 包含空格:+1 重复的字母数字:ll表示-12 重复的标点:-2表示“ 最终分数:22 + 1-12-2 = 9 print("Hel",char(108),"o, wor",0x108,"d!"); # 0x108 makes a Uint8 that prints as ASCII 总字符数:43(不包括#后的任何字符,它是注释字符) …

23
让我们移动火星探测器!
摘要 任务是导航火星探测器,并告知其最终坐标和方向。 输入: 首先输入: 首先,您的程序必须采用以下格式的输入: [X-Coordinate],[Y-Coordinate],[Direction] 方向必须是:N或S或E或W(北,南,西,东的起始字母) 示例:( 10,20,Nx = 10,y = 20,方向= N(北)) 第二输入: 所述第二输入包括一系列的R,L,M右,左,分别移动。 对于R和L(左右),流动站的方向必须相应更改。 对于M流动站,必须沿移动之前的方向向前移动1个单位。 计算坐标的规则: N = Y + 1 E = X + 1 S = Y - 1 W = X - 1 输出: 流动站的最终坐标和当前方向。 例: Enter initial data: 1,2,N Enter the instructions: MRMLM …

6
球将降落在哪里?
给定一个字符串,其中第一行包含空格和一个句点(.,即“球”),然后是包含空格,正斜杠(/)和反斜杠(\)的行,请确定从起始位置掉落后球将落入的列。每个/将其向左移动一列,然后\将其向右移动一列。 样品输入 . / \ \ / / \ \/ \ \ /\ \ /\ \ \ / 样品输出 球从第5列开始,击中第/3行,然后在\第5到7 行中击中三个,最终位置为: 7 请注意,列是1索引的,主要是为了与文本编辑器约定保持一致。 边缘情况 如果球/在第一列中击中a ,则它永远卡在不存在的列0中。您的程序应通过打印正确处理此问题0。 如果球撞到\/图案的任一侧,则结果不确定。您的程序被允许以无输出终止,无限循环或打印错误消息(我的解决方案显示-1),但不得打印任何被视为有效输出的内容。 如果球以一定的\\方式击中左斜线,则应该直接在右斜线下方而不是右斜线结束。我最初设想的解决方案很容易出错,所以不要走这条路! 有可能会或可能不会是以后的空间.或最后/或\每行。您的程序不应依赖此类可用的填充。类似地,第一行之后可能有也可能没有任何行。 您可以假设第一行将有零个或多个空格,而正好为一个.。随后的行(如果有)将具有零个或多个空格和零个或多个斜杠。 实施细节 您的程序可以在方便时从文件(指定为命令行参数)中读取或从标准输入中读取。 您的程序必须将单个数字输出到标准输出。(是的,可以使用尾随的换行符。是的,该数字可能超过一位。) 测试用例 输入: . 输出: 1 注意这里的输入正好是一个字节。这是您应该能够处理的最小情况。 输入: . \ \ \ \ 输出: 6 请注意,这些斜杠后没有空格。 输入: . …

2
压缩布尔公式
句法 ~不 /\和 \/或 t真 f假 P,Q,FISH,等:变量 (运算符按优先顺序给出) 介绍 可以将某些布尔公式更改为不同的形式以使其更短。例如,公式 ~(~P /\ ~Q) 可以更改为较短的形式 P\/Q 而公式 P \/ ~P 可以更改为较短的形式 t 挑战 在这一挑战,则需要编写一个程序,给定仅使用任何布尔式/\,\/,~,t,f,括号,布尔变量(大写)和空白,输出一个最短的形式(由于可能存在多于一个的最短形式),该表达式的字符对于所有变量分配都是等效的。最短的代码(使用任何语言)均获胜。I / O可以任何合理的方式完成。 另外,由于很难验证答案,因此包括(但不是必需的)简短说明代码的工作原理将很有帮助。

2
老虎机黑客
问题:来自Facebook Hacker Cup 2011 Round 1B的老虎机黑客 目标:使用stdin / stdout用您喜欢的语言编写的最短代码。你不能假设getRandomNumber已定义,即您的解决方案必须包含潜在的高尔夫球版本,以作为功能或其他方式。 参考解决方案:关于SO [我选择我的,因为它使用stdin / stdout,但我不确定dave的解决方案。] 问题文本如下: 您最近与一个为老虎机编写软件的人成为了朋友。与他闲逛了一会之后,您会发现他很喜欢炫耀自己对老虎机工作原理的了解。最终,您让他为您详细描述了特定品牌机器上使用的算法。算法如下: int getRandomNumber() { secret = (secret * 5402147 + 54321) % 10000001; return secret % 1000; } 此函数返回[0,999]中的整数;每个数字代表在特定机器状态下出现在车轮上的十个符号之一。最初将secret设置为您不知道的一些非负值。 通过长时间观察机器的运行,您可以确定机密值,从而预测未来的结果。了解未来的结果,您将能够以明智的方式下注并赢得很多钱。 输入值 输入的第一行包含正数T,即测试用例的数量。接下来是T测试用例。每个测试用例均包含一个正整数N,即您进行观察的次数。接下来的N个标记是0到999之间的整数,用于描述您的观察结果。 输出量 对于每个测试用例,输出将由机器显示的接下来的10个值,用空格隔开。如果您观察到的顺序不能由您的朋友向您介绍的机器产生,请打印"Wrong machine"。如果您不能唯一确定接下来的10个值,请打印"Not enough observations"。 约束条件 T = 20 1≤N≤100 输入中的令牌长度不超过3个字符,并且仅包含数字0-9。 输入示例 5 1 …
17 code-golf 

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.