编程拼图和代码高尔夫

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

21
星期几(在Flooptonia)?
您是前往Flooptonia星球的太空旅行者!这次飞行还将花费47,315年,因此要在您进行低温冻结之前花费时间,您可以决定编写一个程序来帮助您了解Flooptonian日历。 这是208天的弗洛普顿日历: Month Days Input Range Qupu 22 [0-22) Blinkorp 17 [22-39) Paas 24 [39-63) Karpasus 17 [63-80) Floopdoor 1 [80] Dumaflop 28 [81-109) Lindilo 32 [109-141) Fwup 67 [141-208) 挑战 给定年份中的整数天(范围[0-208)),您的程序将输出相应的月份日期和月份名称(例如13 Dumaflop)。 但是,有一个例外:Floopdoor是Flooptonians的特殊时间,显然应该拥有其自己的日历页面。出于这个原因,Floopdoor不是用一天写的(即输出是Floopdoor,不是1 Floopdoor)。 测试用例 0 => 1 Qupu 32 => 11 Blinkorp 62 => 24 Paas 77 => …
34 code-golf  date 

30
扭曲的话!
扭曲的话! 给定一个字符串和一个正整数。您必须来回扭动琴弦。 输入/输出示例 输入项 Programming Puzzles & Code Golf 4 输出量 Prog mmar ing zzuP les oC & de G flo 输入项 输入可以通过STDIN或函数参数接收。输入将包含一个字符串和一个正整数n。整数将确定每条双绞线的长度。 绳子来回扭动。和的输入HELLO, WORLD!将类似于: 输出量 输出将是扭曲的文本。它可能没有任何尾随空格。如果输入的字符串长度不能被行长度整除,请添加空格直到行被填充: 一个例子: 输入项 Hello, World! 5 输出(请注意最后的空格) Hello roW , ld!
34 code-golf  string 

18
展开数组
这个挑战是由有关Mathematica.SE的一个问题引起的。 假设您有一些任意结构的嵌套列表/数组(每个级别的列表不一定具有相同的长度)。为简单起见,我们假设节点是非负整数或空数组。举个例子 [[[1, 3], 2], [1, 4], 12, [[0, [], 0], [5, [7]]]] 有时,将列表展平以对节点执行一些操作更为方便,例如 --> [1, 3, 2, 1, 4, 12, 0, 0, 5, 7] --> [1, 1, 0, 1, 0, 0, 0, 0, 1, 1] 但是最后,您实际上想要保留原始结构,因此您想将其转换为 --> [[[1, 1], 0], [1, 0], 0, [[0, [], 0], [1, [1]]] 您的任务是执行最后一步。 …

30
查找给定数字的倍数,其十进制表示形式类似于二进制
我所遇到的一个问题上,似乎有趣的代码审查现场。我认为OP做错了,但不能确定...所以让我们为他解决!(编写程序,而不是函数/过程) 输入(标准输入或类似输入): x十进制表示形式的整数。它大于1且小于2 ^ 31。 输出(标准输出或类似输出): y十进制表示形式的整数。x * y以十进制表示的乘积只能包含数字0和1。它必须是大于0的最小值。 注意:输出不受限制-如果最小值y在10 ^ 100左右,则您的程序必须输出其所有100位数字(我不知道是否有合理的限制,例如2 ^ 64 on- y并没有解决它)。 您的程序应该在合理的时间内(1秒或1个小时?)完成所有x范围内的操作。 奖金: 如果您的程序对输入的大小(RAM除外)没有限制,并且具有多项式复杂度,则将程序的字节数乘以0.8并四舍五入。 示例:输入2;输出5,因为2 * 5 = 10 示例:输入21;输出481,因为21 * 481 = 10101 免责声明:对于代码审查网站上的问题,我概不负责。如有任何差异,仅将以上描述视为适当的规格。 OEIS A079339
34 code-golf  number 

1
扫雷求解器
我们已经生成了扫雷场,但是在PCG炸毁之前,确实有人必须清除这些生成的地雷! 您的任务是写一个Minesweeper解算器,该解算器与“ Working Minesweeper”的公认解决方案的稍作修改的版本兼容(动作之间用空格隔开,以允许更大的字段)。 输入:扫雷字段,字段之间用空格分隔。第一行表示地雷总数。 x:不变 !:标志 数字:该区域周围的地雷数量 例: 10 0 0 1 x x x x x 0 0 2 x x x x x 0 0 2 ! x x x x 0 0 1 2 x x x x 0 0 0 1 x x x x …

15
城镇游戏
介绍 游戏发生在不同城镇的小世界中。城镇的统治者彼此憎恨,并希望统治世界。人民分为战士和低年龄两组。但是,低龄者可以抚养战士。您是其中三个城镇的统治者。 游戏玩法 游戏开始时,您将统治三个城镇。每个城镇有100人。您必须将它们分为骑士和低龄者。 然后,基于回合的实际游戏开始。转弯看起来像这样:"Produce" knights=> execute command of first town=> execute command of next town(对所有城镇重复)=> try a rebellion。 每回合,将为属于您的每个城镇调用您的程序。您可以攻击城镇,支持城镇或只是等待。这些动作将顺序执行,而不是同时执行。 每隔三回合,每2个低出生者就会得到一个骑士(23个低出生者=> 11个骑士)。低出生者的数量保持不变。 城镇内的骑士的防御加成为1.2。如果您受到攻击,则您的骑士将乘以该数字(例如78 knights,93 knights在攻击中您将拥有)。攻击后,多余的骑士将被移除(如果82 knights生存,您将仍然拥有78 knights)。 在进攻中,每个骑士在杀死敌人之前都会杀死敌人。例如:30 knights攻击100 knights(没有防御加成)=> 70个骑士可以生存。 您可以通过杀死城镇中的所有骑士来占领城镇。现在所有低出生者都属于您,您尚在世的骑士都驻扎在小镇上。在下一轮中,除了所有其他城镇之外,您还可以统治该城镇。 占领一个城镇后,它不会获得2个完整回合的防御加成(因为城门被打破了)。第三轮,将修复大门。 为了防止低矮人叛乱,您需要的骑士至少是低矮人的一半(一个镇上的23个低矮人在同一镇上需要至少12个骑士)。否则,低矮的士兵将杀死所有骑士,城镇将变成“中立”(无领导者,由PlayerId指示-1)。 中立城镇将“生产”骑士,但不会攻击也不支持任何其他城镇。 句法 控制器通过命令参数为您提供输入,您的程序必须通过stdout输出。 输出(准备) 在游戏开始之前,控制器将调用您的提交而没有参数。这意味着您必须将100个人(每个镇)分配给骑士和低龄者。KnightCount KnightCount KnightCount例如,您需要输出95 80 95。 输入 Round;YourPlayerId;YourTownId;PlayerId_TownId_knights_lowborns;PlayerId_TownId_knights_lowborns;... 在第一轮中,将类似 1;2;2;0_0_100_0;1_1_50_50;2_2_80_20。在这里,您看到这是第一轮比赛,您是城镇2的玩家2。您有80个骑士和20个低胎。 在游戏的后期,它可能类似于20;2;1;0_0_100_0;2_1_30_50;2_2_40_20。您仍然是玩家2(永远不变),但是您占领了城镇1(您现在正在控制)。 输出 A …

5
激光去哪儿了?
取一个二维网格并在其上绘制许多线段以表示镜像。现在选择一个点以放置理论激光,并选择一个角度以定义其指向的方向。问题是:如果您沿着激光束路径走了指定的距离,您在哪个坐标点? 例: 在该图像中,L是激光的位置,t是它的角度(从正X轴测量的), ,M1,M2和M3都是线段反射镜,并且E是后的激光束路径上的点D = d1 + d2 + d3 + d4单位,从开始L。 目标 写的最短程序(以字节计)的输出E给出L,t,D,和一个反射镜的列表。 (使用http://mothereff.in/byte-counter计数字节。) 输入格式 输入来自标准输入,格式为: Lx Ly t D M1x1 M1y1 M1x2 M1y2 M2x1 M2y1 M2x2 M2y2 ... 所有值都是与该正则表达式匹配的浮点数:[-+]?[0-9]*\.?[0-9]+。 每个数字之间始终只有一个空格。 允许在输入周围使用引号。 t以度为单位,但不一定在该[0, 360)范围内。(如果您愿意,可以改用弧度,请在回答中说出来。) D可能为负,有效地将激光旋转180度。D也可能是0。 可能有任意多个镜像(根本没有)。 镜子的顺序无关紧要。 您可以假设输入将是4个数字的倍数。例如Lx Ly t或Lx Ly t D M1x1无效,将不会进行测试。完全没有输入也是无效的。 上面的布局可以输入为: 1 1 430 17 …
34 code-golf 

30
每个输入单词的首字母大写
这是一个相对较快的方法,但是我敢肯定您会喜欢的。 Codegolf一个程序,它将以句子的形式接受输入,然后为输出提供每个单词大写的首字母。 规则: 提交内容可能不是函数形式。所以不行: function x(y){z=some_kind_of_magic(y);return z;} 作为您的最终答案...您的代码必须表明它接受输入并提供输出。 该代码必须保留输入中包含的任何其他大写字母。所以 eCommerce and eBusiness are cool, don't you agree, Richard III? 将呈现为 ECommerce And EBusiness Are Cool, Don't You Agree, Richard III? 你们中有些人可能会想:“容易,我只使用正则表达式!” 因此在您选择的高尔夫语言中使用本地正则表达式将导致30个字符的罚款,这将应用于您的最终代码计数。邪恶的笑 在这种情况下,“单词”是由空格分隔的任何内容。因此palate cleanser是两个字,而pigeon-toed被视为一个字。if_you_love_her_then_you_should_put_a_ring_on_it被认为是一个字。如果单词以非字母字符开头,则会保留该单词,因此_this在渲染后仍为_this。(对Martin Buttner指出此测试用例表示敬意)。 4b。不能保证输入短语中的单词将由单个空格分隔。 测试用例,(请用于测试您的代码): 输入: eCommerce rocks. crazyCamelCase stuff. _those pigeon-toed shennanigans. Fiery trailblazing 345 thirty-two Roger. …

23
加密哈希高尔夫
比赛结束了。 由于警察和强盗挑战的性质,当对相关强盗挑战的兴趣减少时,警察挑战变得容易得多。因此,尽管您仍然可以发布哈希函数,但是您的答案将不会被接受或成为排行榜的一部分。 这个挑战是最短实施的搜索哈希函数是抗碰撞,也就是说,它应该是不可能找到相同的哈希两个不同的消息。 作为警察,您尝试发明并实现一个哈希函数,以在代码大小和抗冲突性之间找到最佳折衷方案。使用太多字节,另一位警察将使您失望! 作为强盗,您尝试通过破坏警察的职能来挫败他们的尝试,证明它们不合适。这将迫使他们使用更多字节来增强算法! 警察挑战 任务 实现加密散列函数H:我- > 0您选择,其中我在2以下的集合中的所有非负整数的2 30和Ø低于2集的所有非负整数的128。 您可以将H实现为实际函数,该函数接受并返回单个整数,整数或整数数组的字符串表示形式,或者从STDIN读取并以10或16为基数打印到STDOUT的完整程序。 计分 H必须抵抗下面定义的强盗挑战。 如果强盗在发布后的168小时内将您提交的内容拒之门外,则认为该文件已被破解。 H的实现应尽可能短。最短的不打扰的提交将是警察挑战赛的获胜者。 附加规则 如果将H实现为函数,请提供一个包装程序,以从行为如上所述的程序中执行该函数。 请为您的程序或包装器至少提供三个测试向量(示例输入及其相应的输出)。 H可以是您的新颖设计(首选)或众所周知的算法,只要您自己实现即可。禁止使用任何类型的内置哈希函数,压缩函数,密码,PRNG等。 通常用于实现哈希函数(例如,基本转换)的任何内置方法都是公平的游戏。 程序或函数的输出必须是确定性的。 应该有一个免费的(如在啤酒中)编译器/解释器,可以在x86或x64平台上或从Web浏览器中运行。 您的程序或函数应该相当高效,并且必须在不到2秒的时间内对I 2 2 19以下的消息进行哈希处理。 对于边缘情况,在我的计算机(Intel Core i7-3770,16 GiB RAM)上花费的(墙)时间将是决定性的。 考虑到这一挑战的性质,无论是否更改输出,都禁止以任何方式更改答案的代码。 如果您提交的内容被破解(甚至没有被破解),则可以发布其他答案。 如果您的答案无效(例如,它不符合I / O规范),请删除它。 例 Python 2.7,22个字节 def H(M): return M%17 包装纸 print H(int(input())) 强盗挑战 任务 通过在强盗的线程中张贴以下内容来破解任何警察的提交:I中的两个消息M和N,使得H(M)= …

12
死亡代码高尔夫[关闭]
写一些导致BSOD或内核崩溃的代码! 规则: 在Windows上,必须引起BugCheck(蓝屏死机),在Linux(或其他* nix系统)上,必须引起内核崩溃。 不得损坏系统(即重新启动后可以正常工作) 允许使用内核模式驱动程序。 陈述您的操作系统和版本信息。 说明崩溃的原因。 使用专门设计导致崩溃的工具并不违反规则,但是这样做并不是很有创意! 最高投票获胜。

4
Flippin广场
通过仅翻转(绕中心点反转)行和列,创建一个程序以消除数字的平方。 输入项 输入将是9x9的数字网格,格式为9行字符串,如下所示: 986553229 264564891 759176443 643982153 567891234 526917874 685328912 891732537 117644378 此输入格式不可协商-输入格式“具有创造性”的任何解决方案都将被视为无效。 输出量 输出应为翻转动作列表,当以给定顺序应用于输入时,应重新创建目标网格。 示例输出(不是先前输入示例的解决方案): 28IF5D3EAB9G3 此输出格式也是不可协商的。输出中不应包含换行符或空格,只能使用1- 9和A- I字符(如果需要,可以使用小写字母代替大写字母)。 目标网格(您需要重新创建的状态)如下: 123456789 234567891 345678912 456789123 567891234 678912345 789123456 891234567 912345678 数字1- 9应该用作翻转行的说明,字母A- I应该用于列。网格处于还原状态时,如下所示。 ABCDEFGHI ||||||||| vvvvvvvvv 1 -> 123456789 2 -> 234567891 3 -> 345678912 4 -> 456789123 5 -> …
34 code-golf 

10
你能走多高?(编码+算法挑战)
现在,每个人都开发了自己的(通常是惊人的)低级编码专业知识,以了解Python到底有多慢?(或者您的语言有多快?)以及Python 到底有多慢(第二部分)?现在是挑战的时候了,这也将扩展您改进算法的能力。 以下代码计算长度为9的列表。列表中的位置i用于i计算计算F和之间的内积时找到至少连续零的次数S。为了精确地做到这一点,它遍历了所有可能F的length n列表S和length 列表n+m-1。 #!/usr/bin/python import itertools import operator n=8 m=n+1 leadingzerocounts = [0]*m for S in itertools.product([-1,1], repeat = n+m-1): for F in itertools.product([-1,1], repeat = n): i = 0 while (i<m and sum(map(operator.mul, F, S[i:i+n])) == 0): leadingzerocounts[i] +=1 i+=1 print leadingzerocounts 输出是 [4587520、1254400、347648、95488、27264、9536、4512、2128、1064] 如果使用此代码将n增加到10、12、14、16、18、20,则它很快变得太慢。 规则 挑战在于给出尽可能大的n的正确输出。仅n的偶数是相关的。 …

18
Jumblers vs Rebuilders:用俄罗斯方块砖编码
在传统的俄罗斯方块中,有7种不同的tetromino砖,每个砖都用与其形状相似的字母表示。 # # # # # ## # # ### ## ## # ## ## ## # ## ## I O L J T Z S 考虑对于一些正整数W和H,这些砖的排列方式可以形成一个实心的W×H矩形。例如,使用2个I,1个L,1个J,2个T和1个S,一个7×4矩形可以被制成: IIIITTT LIIIITJ LTTTSSJ LLTSSJJ 可以将相同的积木重新排列(通过移动和旋转,但不能翻转)为不同的7×4模式: IJJTLLI IJTTTLI IJSSTLI ISSTTTI 现在考虑使用矩形代码块代替第一种排列。例如,Python 3的以下7×4位将打印Tetris到stdout: p=print x='Tet' y='ris' p(x+y)# 根据第一个俄罗斯方块安排,它的7个“砖”是... x ' int y ' ='r is …

17
创建Flood Paint AI
在Flood Paint游戏中,游戏的目标是在尽可能少的回合时间内使整个板成为相同的颜色。 游戏从一个看起来像这样的棋盘开始: 3 3 5 4 1 3 4 1 5 5 1 3 4 1 1 5 2 1 6 5 2 3 4 3 3 4 3 4 4 4 5 5 5 4 1 4 6 2 5 3[3]1 1 6 6 5 5 1 2 …

30
ROT-13转换标准输入
挑战:读取任意长度的输入并产生输入的ROT13。除AZ以外的所有字符都应原样复制到输出中,并在可能的情况下保留大小写。 任何可以读写标准流的语言都是公平的游戏。

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.