Questions tagged «code-challenge»

代码挑战赛是一种创造性的竞赛,可以用客观的获胜标准来解决编程难题,而其他得分标记(例如,代码高尔夫)则无法涵盖这些目标。

15
变相变形金刚(警察线)
强盗的线在这里 警察的任务是编写一个函数或程序,当给定其自身的输入时,该函数或程序将输出有限的确定性字符串。如果为程序提供了不同的输入,则应返回不同的输出。 规则: 提交内容包括 语言名称 如果使用了任何标志,则应将其显示出来。 程序字节数 输出字节数 输出量 如果时间特别长,请提供粘贴框或类似内容 如果其中包含无法打印的内容,请提供一个十六进制转储。 尾随换行符和空格应包含在输出中 输入来自何处(STDIN,命令行等) 如果适用,您可以假定输入中不存在表示EOF的字节,除非您在程序中使用该字节。 如果您的程序被破解,请在强盗标题中的标题中添加指向相应答案的链接。 您的程序直到一周过去才安全,并且您将其标记为安全。 我不赞成使用输入或加密哈希函数为随机种子等技术。我无法阻止他们,但我不会接受利用其中任何一个的解决方案。还要注意,其中一些技术可能会发生冲突,其中不同的字符串会产生相同的输出。 您的目标是拥有最短的输出。在发布此问题后的三周内发布的最短安全解决方案将获胜! 强盗的任务是找到一个大小等于或小于原始文件的程序,该程序也要遵守上述规则。 如果强盗使用不同于预期的解决方案破解您的程序,那么您就有机会通过证明强盗的解决方案不正确来“破解”程序。您可以通过找到强盗程序的输入来实现,以产生相同的输出。 提交示例: brainfuck,10个字节,得分:10 ]<.[<],>[, 这个解决方案是,[>,] <[。<],它只是反转输入 祝好运!

1
辐射硬化的环状喹poly胶
挑战 编写两个程序: 以两种不同的编程语言运行。 这些可能不是一种语言的两个版本。 当运行一个程序时,它将输出第二个程序,反之亦然。 这两个程序必须不同(不能使用多语言)。 这里是要抓住的地方: 程序必须经过辐射加固。 这意味着从两个程序中的任何一个删除任何一组nnn字符(定义如下)时,其功能均不受影响。 nnn定义为在不影响程序功能的情况下可以省略的字符数。 nnn必须至少为111。 规则 不允许出现标准漏洞。 您的程序必须是正确的循环奎因。他们可能不阅读自己的源代码。 计分过程如下: S1+S2nS1+S2n\frac{S_1+S_2}n S1S1S_1S2S2S_2 nnn 这是代码挑战,最低分获胜。 奖励 由于这个挑战很难回答,因此我将悬赏第一人回答。

5
这是Anagram Quine,而不仅仅是Quine!
任务 在这个挑战中,您的任务是编写一个程序,该程序不输入任何内容,而要使用尽可能多的拼写形式。 您的分数将是程序源代码中有效有效字词的字谜数量除以可能的正确字谜总数,即有效字谜的字谜百分比。 适用标准漏洞和标准奎因规则。 注意:您的程序必须至少包含3个字符(而不是3个字节)。 输入值 程序本身的每个字谜(或排列)(即分数中包含的字谜)都不得输入任何内容。如果您的语言需要输入,那么可以假定您的程序将获得由小写字母A组成的字符串。但是,您不得以任何方式使用输入。 输出量 n程序源代码的不同字谜的数量必须是有效的quines,其中n代表您要包含在乐谱中的那些字谜的数量,即 那些quina-anagarams可以以任何方式输出,除非将输出写入变量。允许写入文件,控制台,屏幕等。功能return也是允许的。 计分范例 假设程序的源代码是code。和, code输出code。 coed输出coed。 cdoe输出cdoe。 cdeo输出cdeo。 cedo输出cedo。 ceod输出ceod。 ocde输出ocde。 oced输出oced。 odce输出odce。 odec不输出odec或产生错误。 oedc不输出oedc或产生错误。 oecd不输出oecd或产生错误。 doce不输出doce或产生错误。 doec不输出doec或产生错误。 dcoe不输出dcoe或产生错误。 dceo不输出deco或产生错误。 deco不输出deco或产生错误。 deoc不输出deoc或产生错误。 eodc不输出eodc或产生错误。 eocd不输出eocd或产生错误。 edoc不输出edoc或产生错误。 edco不输出edco或产生错误。 ecdo不输出ecdo或产生错误。 ecod不输出ecod或产生错误。 该解决方案的分数将是 获胜标准 得分最高的解决方案获胜!如果出现平局,则具有较高字符数(而不是字节数)的答案将获胜(因此,代码保龄球就可以了!)如果平局仍然存在,那么早先发布的解决方案将获胜!

6
N个碱基中的回文数
给定一个非负整数n >= 0,请永远输出x_i >= 3以完全n不同b的底数为回文数的整数序列,底数可以是2 <= b <= x_i-2。 这基本上是OEIS A126071的反函数,在此输出中该序列中的哪些索引具有值n。有点不同,因为我更改了它,所以您忽略了碱基b = x_i-1, x_i, x_i+1,因为这些碱基的结果始终是相同的(值始终是回文率,或者始终不是)。此外,偏移量也不同。 x_i限制为数字,>= 3因此每个结果的第一项n为A037183。 请注意,输出格式是灵活的,但是应该以很好的方式分隔数字。 例子: n seq 0 3 4 6 11 19 47 53 79 103 137 139 149 163 167 ... 1 5 7 8 9 12 13 14 22 23 25 29 35 …
10 code-golf  sequence  base-conversion  palindrome  code-golf  array-manipulation  matrix  code-golf  string  ascii-art  code-golf  ascii-art  physics  code-golf  number  sequence  fibonacci  code-golf  ascii-art  packing  code-golf  string  hexadecimal  code-challenge  restricted-source  decision-problem  binary  code-golf  code-golf  code-golf  stack-exchange-api  code-golf  string  parsing  generation  data-structures  code-golf  kolmogorov-complexity  graphical-output  code-golf  array-manipulation  integer  generation  data-structures  code-golf  number  random  probability-theory  king-of-the-hill  java  minesweeper  code-golf  string  kolmogorov-complexity  animation  code-golf  string  code-golf  code-golf  quine  code-golf  internet  code-golf  arithmetic  base-conversion 

1
将阵列和程序一分为二
介绍 您的任务是编写一个程序,将矩形整数数组平均分成两半(无论出于何种原因)。该任务需要大量计算,但是幸运的是您有一台双核计算机来执行计算。为了最大限度地提高并行性的好处,您决定将程序平均分成两半,并让每个内核独立地运行一个部分。 输入输出 您的输入是大小为1×1的非负整数的矩形2D数组,采用任何合理格式。甲分裂这种阵列的被分割的每个水平行所获得成前缀和后缀(其中任一个可能是空的)。为了使拆分有效,必须在相同索引或相邻索引处拆分两个相邻行。例如,考虑数组 2 4 5 5 6 3 9 7 1 7 7 0 0 0 3 6 7 8 1 2 4 7 6 1 6 6 8 2 0 0 这是有效的拆分: 2;4 5 5 6 3 ;9 7 1 7 7 0 ;0 0 3 6 …

7
构造雅可比矩阵
取未知向量,并应用一些通用的微分函数。的雅可比然后通过矩阵给出,使得: 例如,假设m=3和n=2。然后(使用基于0的索引) 雅可比f然后 这个挑战的目标是打印这个雅可比矩阵。 输入值 你的程序/功能应该采取作为输入两个正整数m和n,其代表的部件的数目f和u分别。输入可以来自任何所需的来源(stdio,功能参数等)。您可以指定接收顺序,对于输入的答案必须一致(请在答案中指定)。 输出量 代表雅可比矩阵的东西。此表示形式必须明确拼出Jacobian矩阵的所有元素,但是每个术语的确切形式都是实现定义的,只要明确区分什么以及关于什么进行区分,并且每个条目均以逻辑顺序输出。用于表示矩阵的示例可接受形式: 列表列表,其中外部列表​​的每个条目都对应于雅可比行的一行,内部列表的每个条目都对应于雅可比行的列。 字符串或文本输出,其中每行是Jacobian行,每行中由定界符分隔的条目对应于jacobian的列。 矩阵的一些图形/视觉表示。示例:使用MatrixForm命令时Mathematica显示的内容 其他每个条目都已存储在内存中并且可以查询的密集矩阵对象(即,您不能使用生成器对象)。例如,Mathematica如何在内部表示Matrix对象 条目格式示例: 形式为的字符串d f_i/d u_j,其中i和j是整数。例如:d f_1/d u_2。请注意,d和f_1或之间的这些空格x_2是可选的。此外,下划线也是可选的。 形式为d f_i(u_1,...,u_n)/d u_j或的字符串d f_i(u)/d u_j。也就是说,功能组件的输入参数f_i是可选的,并且可以明确地拼写出来或以紧凑形式保留。 格式化的图形输出。例如:计算表达式时Mathematica会打印什么D[f_1[u_,u_2,...,u_n],u_1] 您可以选择起始索引u和目标索引f(请在答案中指定)。输出可以是任何所需的接收器(stdio,返回值,输出参数等)。 测试用例 以下测试用例使用约定m,n。索引显示为从0开始。 1,1 [[d f0/d u0]] 2,1 [[d f0/d u0], [d f1/d u0]] 2 2 [[d f0/d u0, d f0/d u1], [d f1/d u0, d …

4
寻找将计数器增加到特定数量的最短方法
我有一个柜台。这是一个小型设备,看起来像这样: 显示从0000到9999。它在顶部有一个小按钮,可将计数增加1,在右边有一个小旋钮,其目的是将计数器重置为0。 现在,关于小旋钮的事情是,如果您将其向后旋转,则可以使它再次增加任何所需的数字。因此,如果我按下计数器按钮10次以使计数器显示出来0010,则可以向后旋转旋钮,直到听到微小的喀哒声,然后再次将其向前旋转并直接转到0090。 但是,旋钮每次向前推动数字时,都会始终使同一数字的所有出现次数增加1。因此,如果计数器显示6060,则只能使其增加到7070,而不能增加到6070或7060。另外,旋钮将9s 滚动0而不携带,因此0990将前进到0000而不是1000或1100。 我想知道将计数器设置为特定数字的最有效方法。您的任务是编写一个程序或函数,该程序或函数将确定执行此操作所需的最短按钮按下和旋钮前进的顺序。 您的程序将输入从0000到的4位数字9999,并以以下格式返回一系列步骤: > 0001 C > 0093 C12345678C12345678CCC > 1000 C12345678C12345678C12345678C12345678C12345678C12345678C12345678C > 9999 012345678 其中C代表“按下计数器按钮”,而D0到9之间的任何数字代表“使用旋钮将所有出现的次数D增加1”。 您的程序必须针对所有可能的四位数组合生成有效的步骤顺序,并将对所有10,000个案例所需的步骤总数进行评分。在平局的情况下(最有可能在找到最佳算法时),较短的代码将获胜。

5
流放地图组合的路径
这个问题的特点是游戏“流放之路”中的机械师。在这个游戏中,有一些叫做“ MAPS”的东西,您可以用来打开高级区域,也可以将其中的三个结合起来以获得升级的区域。这个挑战的任务。升级组合如下: A Crypt Map 68 -> Sewer Map E Dungeon Map 68 -> Channel Map I Grotto Map 68 -> Thicket Map O Dunes Map 68 -> Mountain Ledge Map U Pit Map 68 -> Cemetery Map T Tropical Island Map 68 -> Arcade Map N Desert Map 68 …

2
拜访每个漂移跟踪器
您的工作是在最短的时间内更换许多浮鱼追踪设备上的电池组。您必须将基地留在基地直升机中,并访问每个跟踪器一次,然后返回基地。 找出最佳路线是很困难的,但是还有一个额外的困难!每个跟踪器都有一个漂移速度(假设一天中的速度恒定)。 这是标准的旅行业务员问题,增加了移动节点的难度。找到有效的游览路线应该很容易。主要的挑战是开发一种算法来找到一个接近最佳的行程。我预计在当前N = 300的情况下不可能找到完美的旅行(但我希望证明事实是错误的)。 规则 您的程序将在STDIN上或通过命令行参数被提供一个跟踪器数据字符串。您应该找到一条路线,该路线将完全访问每个跟踪器一次并返回基准站。输出应为空格分隔的跟踪器ID:时间对列表。 位置以厘米(cm)为单位。 时间以秒为单位,从t = 0开始。 速度以厘米/秒为单位。 每个跟踪器ID为1至8个大写字母。 ID为“ BASE”的基地位于(0,0)。 输入和输出的所有数字值都使用带符号的整数。 输入是一个或多个空格或斜杠分隔的跟踪器。 每个跟踪器将有ID:x,y,vx,vy格式(例如:A:566,-344,-5,11) 在时间t,跟踪器将在(x+vx*t, y+vy*t)。 直升机的速度不得超过5000厘米/秒(180公里/小时)。 输出应为按时间顺序分隔的空白访问。 每次访问应该是在ID:时间格式(例如:A:5723) 在输出的最后一次访问必须是基础(如:BASE:6120) 如果在同一位置有多个跟踪器,则它们之间的移动时间为零。 禁止使用标准漏洞。 示例数据集 A:77000,88000,-120,80 B:52000,-12000,0,-230 C:-140000,-23000,-270,110 非最佳解决方案示例: A:30 B:60 C:120 BASE:160 请注意,这A:30 B:60 C:120 BASE:130将是无效的,因为直升机必须以17268厘米/秒的速度飞行,才能在10秒内回到基地。 测试数据集 AA:-164247,-378265,182,113 AB:-1494514,-385520,-25,80 AC:-744551,832058,-13,-123 AD:-930133,1598806,97,177 AE:-280777,-904936,-48,305 AF:-855362,-10456,-21,-89 AG:880990,154342,175,-100 AH:-319708,-623098,172,-17 AI:620018,-626908,-19,-164 AJ:-990505,164998,18,-120 …

11
列出Sophie Germain素数
问题 阿柔Germain的素数是素数p使得2P + 1是素数为好。例如,11是Sophie Germain素数,因为23也是素数。编写最短的程序以升序计算Sophie Germain素数 规则 Sophie Germain素数必须由您的程序生成,而不是从外部源生成。 您的程序必须计算2³²-1以下的所有Sophie Germain素数 您必须打印程序找到的每个不同的Sophie Germain质数。 得分最低的人获胜 计分 代码的每个字节2点 如果您可以显示程序产生的质数大于2³²-1,则为-10

4
将代码行放到代码中,然后全部摇晃
使用一种编程语言编写5个单行程序,当分别运行时,每个程序都会输出不同的第一节经文给哈里·尼尔森(Harry Nilsson)1972年的歌曲《椰子》。 哥买了一个椰子,他买了一毛钱 他的妹妹有另外一个,她付出它的石灰 她把石灰的椰子,她喝了他们俩了 ,她把石灰的椰子,她喝了他们俩了 她把石灰放在椰子里,她把它们都喝了 (完整歌词) 最后3行具有相同的歌词,因此您的最后3个程序也可能相同。 这5个单行程序有5种阶乘或120种方式,可以在一个5行程序中每行安排一个。您必须优化单行程序,以使对于这120种组合中的尽可能多的5行程序以正确的顺序输出整节经文,与上面显示的完全一样。 例 最简单的答案是5条单行打印语句,最后3条相同: print('Brother bought a coconut, he bought it for a dime') print('His sister had another one, she paid it for a lime') print('She put the lime in the coconut, she drank them both up') print('She put the lime in …

3
mathpack数字文字
前言 在非常炎热的情况下,您必须进一步打高尔夫球。 (例如,在一个挑战中,您的答案长达100个字符,而您无法将其设为99则令人尴尬) 在这种情况下,从现在开始,您将使用该挑战者的获胜者算法:) 目标 您必须编写一个使用uint32并返回最压缩形式的程序。 $ mathpack 147456 9<<14 一个数字将有多种解决方案。选择最短的一个 如果压缩后的格式大于或等于原始编号,请返回原始编号 规则 用任何语言编写-以任何语言输出 我知道在C语言'abc'中6382179,使用此转换可以达到很好的效果。但是在挑战中语言是分开的,所以不要灰心 禁止使用外部变量。仅运算符,文字和数学相关函数! 得分 这是测试用例:pastebin.com/0bYPzUhX 您的分数(百分比)将是byte_size_of_your_output / byte_size_of_the_list 没有换行符的比率。 (您必须自己做,因为我会验证最佳代码,以防万一) 获胜者将由得分和输出语言选择! 例子: $ mathpack 147456 | mathpack 97787584 | mathpack 387420489 9<<14 | 9e7^9e6 | pow(9,9)

1
有多少个数独谜题?
这不是Sudoku求解器,也不是Sudoku检查器。 您的挑战是编写一个函数或脚本,作为输入,它提供2D Sudoku拼图的“块”大小(对于经典9x9板为3 ,对于16x16板为4 ,等等),将计算出该数字的近似值针对该大小存在的不同难题(解决方案)。 例如,在给定输入3的情况下,您的程序应该以期望的精度打印数字6,670,903,752,021,072,936,960的近似值,这是已知的9x9 Sudoku数独难题的已知数量,或者在考虑到各种对称性时为5,472,730,538。您的解决方案应说明是计算对称性还是忽略对称性。 “所需的精度”没有定义:您的程序可能运行给定的时间,然后输出结果,或者将其计算到给定数量的有效数字,甚至永远运行,从而打印出越来越好的近似值。关键是应该有可能使其在有限的时间内以任何所需的精度计算结果。(因此,“ 42”是不可接受的答案。)将结果的精度限制在可用的机器浮动范围内是可以接受的。 不能访问在线资源,不能在文件名中存储源代码,等等。 PS:我知道这是一个难题(如果我没记错的话,请填写NP。)但是这个问题只是在寻求一个近似的统计解决方案。例如,您可以尝试满足一个(或两个以上)约束的随机配置,计算其中存在多少约束,然后检查获得满足所有三个约束的难题的频率。对于小尺寸(确定为size = 3,可能为4),这将在适当的时间内起作用,但是该算法应该足够通用,以适合任何尺寸。 最好的算法获胜。 PS2:我从“代码高尔夫”更改为“代码挑战”,以更好地反映问题的难度并鼓励采用更聪明的解决方案,而不是笨拙但效果良好的解决方案。但是由于显然“最佳算法”尚不清楚,所以让我尝试正确定义它。 给定足够的时间并且不考虑常量因素(包括CPU和解释器速度),或者等效地考虑它们的无症状行为,哪种解决方案将以最快的速度收敛到准确的结果?

2
机器人!收集这些泡菜!
我似乎有点不高兴。从字面上看。我把一堆泡菜放在地板上,现在它们都散落了!我需要你来帮助我收集它们。哦,我是否提到我要指挥一堆机器人?(它们也分散在各处;我真的很难组织事情。) 您必须以以下形式输入: P....... ..1..2.. .......P ........ P3PP...4 .......P 即,多行.,P(点名)或数字(机器人的ID)。(您可以假设每行的长度相等,并用.。填充。)您可以将这些行作为数组输入,或者从STDIN中吸取,或者读取以逗号分隔的单行,或者读取文件,或者执行任何操作喜欢接受输入。 您的输出必须采用n行的形式,其中n是最高的机械手ID。(机器人ID始终从1开始是连续的。)每行将包含由字母L(左),R(右),U(上)和D(下)组成的机器人路径。例如,这是该难题的示例输出: LLU RDR LRRR D 也可以是 LLU RDR LRRR D 要么 ["LLU","RDR","LRRR","D"] 或任何您想要的格式,只要您能说出解决方案应该是什么即可。 您的目标是找到最佳输出,这是步骤最少的输出。步数被视为所有机器人的最大步数。例如,上面的示例包含4个步骤。请注意,可能有多种解决方案,但是您只需要输出一种即可。 得分: 您的程序将与5个(随机生成的)测试用例一起运行。 您必须添加每次运行的步骤,这就是您的分数。 最低的累计分数将获胜。 您可能没有为这些特定输入进行硬编码。您的代码也应适用于任何其他输入。 机器人可以相互穿过。 您的程序必须是确定性的,即每次运行都具有相同的输出。您可以使用随机数生成器,只要它是种子并且可以跨平台一致地生成相同的数字即可。 每个输入的代码必须在3分钟内运行。(最好少得多。) 如果平局,大多数投票将获胜。 这是测试用例。它们是用我写的一个小的Ruby脚本随机生成的。 P.......1. .......... P.....P... ..P....... ....P2.... ...P.P.... .PP..P.... ....P....P PPPP....3. .P..P.P..P ....P..... P....1.... .P.....PP. .PP....PP. .2.P.P.... ..P....P.. .P........ …

5
交换数字
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Code Golf Stack Exchange 的主题。 2年前关闭。 这是许多人手动解决的普遍难题。现在是时候编写一种算法来解决该问题了。 在彼此面对的两个不同侧面上排列有相等数量的火柴棍。它们之间只有一个空白空间。说出类似下图的内容(如果火柴总数为4)。 每个摇杆都可以向前滑动一步(如果紧邻的前部空间是空的),也可以跳过它们前面的一根摇杆,然后降落到自由空间中(如果该空间是空的)。反向移动是不可能的(即使空间是空的)。也不允许反向跳转。一步只能执行一次移动。 现在,您必须编写一种算法来查找所需的最小步骤,所有左手火柴将落在右侧,而所有右手火柴将落在左侧。 例如:如果总共有2个火柴棒(每侧1个),则步骤为: 注意:在上图中,首先移动了左侧操纵杆。当右侧操纵杆先移动时,存在另一种解决方案。但是对于这个问题,您只需要给出一个解决方案,并且还假设左侧操纵杆先移动。 下图描述了使用4个火柴棍(每侧2个)的移动: 注意:在上图中,首先移动了左侧操纵杆。当右侧操纵杆先移动时,存在另一种解决方案。但是对于这个问题,您只需要给出一个解决方案,并且还假设左侧操纵杆先移动。 [假设:输入可以是02到14之间的任何偶数(即每侧1到7个火柴)。对于此范围之外的输入,您不需要进行任何验证,也不需要提供任何错误消息。注意:在输出中,每个步骤都由一个'|'分隔 (管道)字符。COBOL程序员应始终将PIC 9(2)作为输入大小,并且还可以将输出假定为固定的最大长度450个字符,并在右边填充空格。 样本输入: 02 样本输出: 01To02|03To01|02To03| 样本输入: 04 样本输出: 02To03|04To02|05To04|03To05|01To03|02To01|04To02|03To04| 样本输入: 06 样本输出: 03To04|05To03|06To05|04To06|02To04|01To02|03To01|05To03|07To05|06To07|04To06|02To04|03To02|05To03|04To05|

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.