编程拼图和代码高尔夫

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

16
在序列中找出奇数
挑战: 考虑以下函数F(N) = 2^N + 1,其中N的正整数小于31。该函数定义的顺序是: 3, 5, 9, 17, 33, 65, 129, 257, 513, 1025, 2049, 4097, 8193, 16385, 32769, 65537, 131073, 262145, 524289, 1048577, 2097153, 4194305, 8388609, 16777217, 33554433, 67108865, 134217729, 268435457, 536870913, 1073741825 输入将生成如下: 从上面的序列中获取5 个连续的整数。 用不同的正整数替换它们之一(该整数可能会或可能不会成为上述序列的一部分)。 (可选)对5个结果数字重新排序。 给定这样一个由5个整数组成的列表,找到被交换的一个,因此不属于原始5个连续整数的一部分。 例: 原始子列表:5, 9, 17, 33, 65。 替换为:5, 7, …

3
舍入为n个Sig图
挑战 给定一个数字x和一个数字n,将数字四舍五入x为n有效数字并输出结果。 重要数字 数字的有效数字是带有含义的数字,有助于其测量分辨率。这包括除前导零以外的所有数字。 请记住,小数点后的前导零仍然是微不足道的数字。 四舍五入一个数字时,如果以下数字大于或等于五,则必须四舍五入。 小数点后的所有尾随零均视为有效。 输入值 第一个数字为x,要舍入的数字。第二个数字将是n,您应舍入x到的有效数字数。 x将是介于-1,000,000,000到1,000,000,000(含)之间的数字(您的代码应同时处理整数和浮点数)。n将是介于1和50之间(含1和50)的正整数。n永远不会大于中的数字位数x。 输入将永远不是0或任何形式0,例如0.000或000。 例子 Inputs: 2.6754, 2 Output: 2.7 的输出2.7000将无效,因为小数点后的零将被视为有效数字。 Inputs: 0.00034551, 4 Output: 0.0003455 Inputs: 50237.1238, 3 Output: 50200 请注意,它不能有小数点。 Inputs: 2374905, 1 Output: 2000000 Inputs: 543.0489, 4 Output: 543.0 Inputs: 15, 1 Output: 20 Inputs: 520.3, 3 Output: 520 如果您愿意,可以520.改为输出,但不能输出520.0。 …
20 code-golf  math 

4
验证茎叶图
甲茎叶情节显示在组一串数值的,这是由所有,但最后一位决定。例如,假设我们有以下数据集: 0, 2, 12, 13, 13, 15, 16, 20, 29, 43, 49, 101 我们可以生成此茎叶图: 0|02 1|23356 2|09 3| 4|39 5| 6| 7| 8| 9| 10|1 第一行的主干为0,因此其“叶子”(位于-之后的数字)|代表0(含0)和10(不含)之间的值。每个茎上的叶子都经过分类。没有叶子的茎(如3)仍出现在图中。101的值在100包含和110之间,因此它的词干为10(100除以10)。 您面临的挑战是检查一段文字是否是有效的茎叶图。有效地块满足以下规则: 数据范围内的每个茎(即10个宽的组)正好有一行(包括中间没有叶子的茎) 没有茎超出范围 所有叶子按升序排列 所有茎都按升序排列 仅包含数字字符(除分隔符外|) 您不必处理具有小数部分的数字。您可以批准或拒绝词干中多余的前导零,但不允许使用空白词干。至少会有一个值。您只能在每行的叶子后面假设多余的空格。您可以假设前导和/或尾随换行符。所有字符均为可打印ASCII。 您的函数或程序应返回或输出(到屏幕或标准输出)有效绘图的真实值,或无效绘图的错误值。您可以将标准输入,文件中的输入当作一个大字符串,作为一个字符串数组-最为方便。 以下是一些有效的测试用例(用空行分隔): 2|00003457 3|35 4|799 5|3 99|3 100|0556 101| 102| 103|8 0|0 这是一些无效的测试用例,在右边有注释: |0 Blank stem 5|347 …

5
好奇心杀死了那只猫?
有人说,好奇心杀死了那只猫。有人说这是箱子和毒药。RSPCA称ErwinSchrödinger必须失去拥有宠物的权利。 与动物权利活动家在他家门外。该猫凶手科学家薛定谔终于拿出了他最伟大的发明。锑和hand的特殊放射性混合物,可以具有任何半衰期,并且一克产品能够杀死任何生物。不幸的是,当他尝试在他的最后一只猫:鲍勃(Bob)上进行测试时,他忘记了猫有9条生命,因此需要9克来杀死。有了一些水但没有食物,可怜的鲍勃如果不先杀了他就可以活1周(7天)。 任务:给定以毫克为单位的质量和以毫秒为单位的半衰期的输入-这两个整数都可以超过2 ^ 31,编写一个程序,输出神秘的超级产品是否杀死了猫,或者是1周时间限制先过期。假设答案是true / yes / 1 /,是指他没有死于饥饿。 为了使产品杀死他,总共必须腐烂9克。因此,在18克样品中,必须经过1个半衰期。如果样品中的含量小于或等于9克,将永远无法实现,因此可以立即假定9克腐烂之前要经过1周。 您可以假设: 鲍勃死了,微秒下降了9克。 由于衰减而变化的质量无关紧要。 所有的日子和时间都遵循公认的地球时间。 鲍勃被密封的盒子是牢不可破且无法打开的,因此不会有其他原因导致的死亡。 氧气也没有问题。 如果两者在同一时间发生,则任何一个输出都是可以接受的。 所有输入应低于2 ^ 63-1 测试用例: 例: 18000 604800001 要使9克衰减,必须准确地通过一半的寿命(18000/2 = 9000毫克或9克)。1个半衰期是604800001毫秒,即168小时1毫秒,或者正好是1周零1毫秒。由于Bob正好在1周内死于饥饿,因此输出结果是错误的,因为他在达到9克产品上限之前死于饥饿 8000 40000 false 70000 800 true 18000 604800000 either 18000 604800001 false 18000 604799999 true 1 1 false 100000 1 true 1000000000 …
20 code-golf  math 

9
Hexplosive ASCII艺术挑战
在策略游戏“ Hexplode”中,玩家轮流将令牌放置在六角形板上。一旦令牌的数量等于相邻图块的数量,该图块h就会爆炸,并将其上的所有tokes移至周围的邻居。您可以在此处在线玩游戏。 我喜欢这个游戏,但有时很难确切知道在特定图块上有多少令牌。我一直在计算邻居的数量。如果我有ASCII艺术来帮助我记住每个图块上有多少令牌,那将真的很方便。 您需要编写一个程序或函数,将正整数作为输入,并生成大小为N的六边形的ASCII表示形式。每个图块将是该图块具有的邻居数。由于1是一个奇怪的极端情况,邻居数为零,因此您只需要处理大于1的输入。 您可以采用任何合理的格式(例如STDIN,函数参数,命令行参数,来自文件等)的数字。输出也可以采用任何合理的格式,例如打印至STDOUT,写入文件,返回字符串列表,换行符分隔的字符串等。 这是前5个输入的一些示例输出: 2) 3 3 3 6 3 3 3 3) 3 4 3 4 6 6 4 3 6 6 6 3 4 6 6 4 3 4 3 4) 3 4 4 3 4 6 6 6 4 4 6 6 6 6 4 …

1
差异压缩[关闭]
已关闭。这个问题需要细节或说明。它当前不接受答案。 想改善这个问题吗?添加详细信息并通过编辑此帖子来澄清问题。 2年前关闭。 对于此挑战,您需要压缩差异。 diff是一些数据,表示两个字符串之间的差异。 面对这一挑战,您需要提供一个或多个程序,这些程序可以: 输入A和B,并输出差异,C 输入A和C,并输出B 输入B和C,并输出A 目标是使diff C尽可能小。 差异可以是任何东西:字符串,数字,数据块。我们只关心大小(字节数)。 我有50个可以在Github上找到的测试用例。每个测试用例包含两个以空格分隔的URL,这些URL指向您需要比较的2个文件。(这些测试用例源自PPCG成员的Github个人资料。谢谢!) 上面的所有三个任务应该在一分钟内才能在具有适当功能的计算机上运行(针对每个测试用例)。 您的分数等于所有50个差异的总大小(以字节为单位),越低越好。不允许在程序中进行硬编码差异(我保留更改测试用例的权利,以防止硬编码)。diffutils不允许产生差异的内建函式(例如)。

14
我的三角形需要更多节点
考虑标准等边三角形,其节点使用重心坐标标记: 我们可以通过添加3个顶点的新线(比原来的3节点三角形的一侧多一个),将3节点三角形变成6节点三角形,删除任何内部边缘(但不包括内部节点),然后重新标准化坐标: 重复此过程,从6个节点的三角形变为10个节点的三角形,添加一行4个顶点(同样,比原始6个节点三角形的一侧多一个),删除所有内部边缘(但不包括内部节点) )并重新标准化坐标: 此过程可以无限期重复。挑战的目标是给一个整数,N代表执行此过程的次数,并在重心坐标中输出关联三角形的所有节点。 输入值 您的程序/函数应采用一个非负整数作为输入,该整数N代表已应用此过程的次数。请注意,对于N=0,您应该输出具有3个节点的原始三角形。 输入可以来自任何来源(功能参数,标准输入输出等)。 输出量 您的程序/函数应以归一化的重心坐标输出所有节点。节点的顺序无关紧要。可以将数字指定为分数(不需要减少分数)或浮点数。您也可以输出“缩放”向量来指定节点。例如,以下所有3个输出都是等效的并被允许: 0.5,0.5,0 1/2,2/4,0 [1,1,0]/2 如果使用浮点输出,则您的输出应精确到1%以内。输出可以是所需的任何接收器(stdio,返回值,返回参数等)。请注意,即使重心坐标唯一地由每个节点2个数字确定,您也应该输出每个节点所有3个数字。 例子 示例案例的格式为: N x0,y0,z0 x1,y1,z1 x2,y2,z2 ... 其中第一行是input N,所有随后的行形成一个节点x,y,z,该节点应在输出中恰好一次。所有数字均以近似浮点数形式给出。 0 1,0,0 0,1,0 0,0,1 1 1,0,0 0,1,0 0,0,1 0.5,0,0.5 0.5,0.5,0 0,0.5,0.5 2 1,0,0 0,1,0 0,0,1 0.667,0,0.333 0.667,0.333,0 0.333,0,0.667 0.333,0.333,0.333 0.333,0.667,0 0,0.333,0.667 0,0.667,0.333 3 1,0,0 0.75,0,0.25 0.75,0.25,0 0.5,0,0.5 …

4
从子字符串中识别字符串
介绍 之前,我曾提出过两个 挑战,即如何使用尽可能少的查询类型的操作来重建对象。这将是第三。 任务 您的输入应为S字母abc及其长度上的非空字符串,而您的输出应为S。没有限制,这当然是一件微不足道的任务。问题是您不允许S直接访问。您唯一可以做的S就是调用函数num_occur(T, S),其中T还有其他一些字符串,并num_occur计算Tin 中出现的次数S。重叠事件都算作不同,所以num_occur(T, S)真正返回的指标的数量i,使得 S[i, i+1, …, i+length(T)-1] == T 例如,num_occur("aba", "cababaababb")将返回3。注意也num_occur(S, S)将返回1。的结果num_occur("", S)是不确定的,因此您不应在空字符串上调用该函数。 简而言之,您应该编写一个函数或程序,该函数或程序以S和length(S)作为输入,num_occur对一些较短的字符串进行调用,并S进行多次调用,然后S从该信息中重构并返回它。 规则和计分 您的目标是编写一个尽可能少调用的程序num_occur。在此存储库中,您将找到一个名为的文件abc_strings.txt。该文件包含100个字符串,每个字符串在其各自的行上,长度在50到99之间。您的得分是这些输入上被调用num_occur的总次数,得分越低越好。您的解决方案最好在运行时跟踪该数字,并在完成后打印出来。通过从中选择均匀随机的字母来生成字符串abc。您可以针对这种生成字符串的方法进行优化,但不能对字符串本身进行优化。 没有时间限制,除了您应该在提交测试案例之前运行您的解决方案。您的解决方案应该适用于任何有效的输入S,而不仅仅是测试用例。 num_occur如果您不使用别人的,也鼓励您也分享自己的实现。为了使事情顺利进行,这是Python中的实现: def num_occur(needle, haystack): num = 0 for i in range(len(haystack) - len(needle) + 1): if haystack[i : i + len(needle)] == needle: num += 1 return num

7
外观顺序:罗马数字版
挑战说明 我们遇到了一些涉及外观序列的挑战。快速提醒: 序列开头1, 该序列的后续项是通过枚举上一项中的每组重复数字而产生的, 因此,前几个术语是: 1 "one" 11 "one one" (we look at the previous term) 21 "two ones" 1211 "one two, one one" 111221 "one one, one two, two ones" 312211 "three ones, two twos, one one" 现在让我们做同样的事情,但是要使用罗马数字。我们从开始I并遵循相同的规则(我们将数字计数规则应用于字符,因此我们将其读IVX为one one, one five, one ten而不是one four, one ten或某种其他方式): I "one" II …

6
你能击败英国情报局吗?(非图求解器)
现在是时候进行一场艰险的任务,击败英国情报局。这项挑战的目的是编写最短的代码来解决Nonogram。 什么是非图? 规则很简单。您有一个正方形网格,必须用黑色填充或保留为空白。在网格的每一行旁边,列出了该行上黑色正方形的游程长度。在每列上方列出了该列中黑色正方形的游程长度。您的目标是找到所有黑色方块。在这种拼图类型中,数字是离散层析成像的一种形式,可测量给定行或列中有多少个实心正方形的连续线。例如,线索“ 4 8 3”表示按此顺序有四个,八个和三个填充正方形的集合,在连续的组之间至少有一个空白正方形。[ 1 ] [ 2 ] 因此,上述Nonogram的解决方案是: 实施细节 您可以根据需要选择表示Nonogram,并以您认为适合其语言的任何方式将其作为输入。输出也一样。挑战的目的是从字面上完成工作。如果您可以使用程序提供的任何输出来解决非图问题,那是有效的。一个警告是您不能使用在线求解器:) 这个问题在算法上非常具有挑战性(np-complete),因为它没有完全有效的解决方案,因此,您将不会因无法解决较大的问题而受到惩罚,尽管如果您的回答是正确的,则将得到极大的回报。能够处理大案件(请参阅奖金)。作为基准,我的解决方案在5到10秒内可达到大约25x25的分辨率。为了在不同语言之间提供灵活性,对于25x25的非图形,少于5分钟的解决方案就足够了。 您可能总是以正方形NxN非图形式感到困惑。 您可以使用此在线非图拼图制造商来测试您的解决方案。 计分 当然,您可以自由使用任何您想要的语言,并且由于这是代码高尔夫球,因此条目将按以下顺序排序:accuracy -> length of code -> speed.但是,请不要因代码高尔夫球语言而气,,所有显示高尔夫球手尝试的语言的答案以一种有趣的方式将被投票! 奖金 其实,我从英国情报部门发布的加密圣诞卡了解Nonograms 这里。第一部分基本上是一个25x25的大型Nonogram。如果您的解决方案能够解决此问题,您将获得荣誉:) 为了使您的数据输入生活更轻松,我提供了如何表示此特定难题的数据,供您免费使用。前25行是行线索,其后是'-'分隔线,随后是25行的col线索,然后是'#'分隔线,然后是填充有正方形线索的网格表示。 7 3 1 1 7 1 1 2 2 1 1 1 3 1 3 1 1 3 1 1 3 …

12
更改时区
挑战 给定一个时间和一个时区作为输入,输出该时区中的时间。 时间 时间将以24小时格式给出,如下所示: hh:mm 其中hh是两位数的小时,mm是两位数的分钟。请注意,小时和分钟总是用零填充,如下所示: 06:09 给定的所有时间均为UTC + 00:00。 输出中的小时数不必用零填充,但您的时间必须为24小时格式 时区 时区将以以下格式给出: UTC±hh:mm 其中±将是+或--和hh,是两位数字的小时,mm是两位数字的分钟(同样,这些数字将用零填充)。 要查找该时区的时间,您可以从输入时间中加(如果符号为+)或减去(如果符号为-)UTC±之后的时间。 例如,如果输入为24:56和UTC-02:50,则从24:56减去2小时50分钟: 24:56 02:50 - ----- 22:06 输出将是 22:06。 例子 芝加哥 Input: 08:50 and UTC-06:00 Output: 02:50 加德满都 Input: 09:42 and UTC+05:45 Output: 15:27 萨摩亚 Input: 06:42 and UTC+13:00 Output: 19:42 夏威夷 Input: 02:40 and …
20 code-golf  date 

30
画一个ASCII矩形
给定两个整数作为数组中的输入,使用第一个整数作为宽度,第二个作为高度,绘制一个矩形。 或者,如果您的语言支持,则可以将两个整数作为单独的输入给出。 假设宽度和高度永远不会小于3,并且始终会给出。 输出示例: [3,3] |-| | | |-| [5,8] |---| | | | | | | | | | | | | |---| [10,3] |--------| | | |--------| 这是代码高尔夫球,因此以字节数最少的答案为准。

13
它是词条吗?
使用任何编程语言来查看输入是否为词条的最短方法是什么? 单词是包含长度为1到原始单词长度的单词的单词。例如, 箱子 “我”是单词 “中”是单词 “ bin”是单词 要么, 阶段 'a'是单词 'ta'是单词(是的) 'age'是单词 'stag'是单词 'stage'是单词 输入值 您的代码应采用任何合理格式的单词和字典作为输入。 输出量 输出应为一个值,该值指示对或错,以告诉我们该单词是否为单词。 有关单词学家的更多信息,请单击此处。 这是我将用作输入和子单词的单词列表。另外,作为对@xnor的响应,它必须包含每个长度的子字,而不是一个子字链。注意,只有一个词将用作输入。

5
最短的简单正则表达式匹配二进制单词
任务 将简单的正则表达式定义为仅包含以下内容的非空正则表达式 字符0和1, 分组括号(和), 一个或多个重复量词+。 给定0s和1s 的非空字符串,您的程序应找到与完整输入字符串匹配的最短简单正则表达式。(也就是说,当匹配一个简单的正则表达式时,假装它由^ 和 预定$。)如果有多个最短的正则表达式,请打印其中的一个或全部。 code-golf,所以最短的提交(以字节为单位)获胜。 测试用例 1 -> 1 00 -> 00 or 0+ 010 -> 010 1110 -> 1+0 01010 -> 01010 0101010 -> 0(10)+ or (01)+0 011111 -> 01+ 10110110 -> (1+0)+ 01100110 -> (0110)+ or (01+0)+ 010010010 -> (010)+ 111100111 -> 1+001+ …

5
车牌号高尔夫:识别
另请参阅:解析 介绍 您正在与一个政府编程团队合作,他们一直在为测速相机编程。但是,为速度计算器编程的人占用了太多空间,因此您必须使车牌识别软件尽可能小。 挑战 给定车牌图像,返回车牌上的文字。 车牌号 以下是程序必须识别的所有字符: ABCDEFG H1JKLMN0 PQRSTUVW XYZ01234 56789 注意 在英国车牌上,I(i)和1(一个)的字符相同,而O(o)和0(零)的字符相同。因此,始终假设字符是数字。即以下车牌号是10(一个零): 例子 C0D3 GLF B3T4 DCY M1NUS 15 YET1CGN 其他规定 禁止访问Internet和OCR库和功能。 车牌始终看起来与上面显示的相同。所有号牌的尺寸都大致相同(由于裁剪方法而有些不正确)。 如果您需要任何车牌的无损PNG版本,我们将为您提供。 计分 以字节为单位的最短程序获胜。 所有号码牌均为该站点搜索栏的屏幕截图

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.