编程拼图和代码高尔夫

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

6
国际象棋-查找所有合法举动(cast子和传人除外)
编写最短的代码,根据给定的FEN字符串计算当前玩家的所有可能(合法)移动。什么是FEN字符串?(维基百科) 最短的代码胜出,语言无关紧要。 输出动作必须遵守国际象棋的移动规则, 除了传球,cast和典当提升外。 忽略检查,将死和僵持,国王也无法被捕获。 您可以设置输出不同,只要你想(例如:A2-A4,A2A4,a2a4,a2->a4...) 测试用例: #输入1: rnbqkbnr / pppppppp / 8/8/8/8 / PPPPPPPP / RNBQKBNR w KQkq-0 1 #输出1 A2-A4,A2-A3,B2-B4,B2-B3,C2-C4,C2-C3,D2-D4,D2-D3,E2-E4,E2-E3, F2-F4,F2-F3,G2-G4,G2-G3,H2-H4,H2-H3,B1-A3,B1-C3,G1-F3,G1-H3 #输入2 7k / 8/8/8/8/8 / PP6 / Q1q4K w--0 1 #输出2 A1-B1,A1-C1,A2-A3,A2-A4,B2-B3,B2-B4,H1-H2,H1-G1,H1-G2
19 code-golf  chess 

3
地牢建筑套装
小时候,我玩了Intellivision游戏Advanced Dungeons and Dragons:Tarmin of Tarmin。3D图形使您以令人震惊的真实感进入第一人称视角: 但是后来我得到了一架C-64。然后,我可以通过在屏幕上游标,使用Ctrl键和数字设置颜色以及将符号放置在所需的任何位置上来绘制40x25字符网格(为什么bash不让我这样做呢?)。字符集具有三角形成分和实心块成分。因此,我能够推理出如何通过该媒介在网格中生成一个人的视角的渲染。 我在本周的螺旋装订笔记本纸中找到了将近三十年的规格,关于“地下城建筑套装”: (更新:细心的读者会注意到,这在倾斜的部分上并不能完全解决。下面提供了更正的数字。) 尽管Tarmin of Tarmin是在网格上播放的,但墙壁仅存在于网格正方形的边缘。了解了字节是多少之后,我意识到,如果我用字节来制作地图,那么地图上的每个方块的每个边缘可能都有四个可能的状态: 通畅 壁 门 还有吗? 我从来没有去写它(直到昨晚)。我认为其他人尝试可能会很有趣。 因此,您的任务是实现一个基于字符模式的迷宫渲染器,该渲染器实现我的(更正!)规范...但是使用2013年的技术。 输入项 由于规范未定义门的渲染,因此我们仅假设唯一的选择是壁挂式和非壁挂式。为了简单起见,您的输入是一个由几行字符串组成的映射,如下所示: WN.. .N.. .N.. .N.. .N.E W... .... .... ..S. ...E W... .N.E W... .N.. ...E W... .... .... .... ...E W.S. ..S. ..S. ..S. ..SE 那将是一张5x5的地图。左上角(1,1)具有West和North墙设置。右下角(5,5)的S外墙和East墙固定。 如果没有地图导航,则乐趣会大大减少。因此,至少要将您的玩家放在(1,1)朝北的位置,并为他们提供: [F]orward, [B]ackward, turn …

21
可逆换向器
您的任务很简单。该程序从标准输入中读取一行文本,并以字符反转的形式打印出相同的文本。不允许打印其他任何东西。 例如: 输入:“ Hello!”,输出:“!olleH” 要注意的是,如果源代码本身是字符反转的,则您的程序必须能够执行完全相同的操作! 评分:应用标准的代码高尔夫评分,并进行了以下修改以限制无聊 //margorp program// 风格答案:任何回文解决方案都会对分数加+ 25%,四舍五入。例如,如果您在程序中插入没有任何作用的字符,只是为了打破回文,这种惩罚仍然适用。

5
查找最大素数,该最大素数在删除数字后仍然是素数
在/math/33094/deleting-any-digit-yields-a-prime-is-there-a-name-for-this上,提出以下问题。删除任何一位数字后,剩下多少个素数?例如719,您得到了这样的素数71,19而79。尽管这个问题尚未解决,但我认为这是一个不错的编码挑战。 任务。 给出最大的质数,您可以在删除其任何一位后找到仍为质数的质数。您还应该提供找到它的代码。 得分了。您提供的素数的价值。 您可以使用任何免费的编程语言和库。 首先,要99444901133在链接页面上给出最大的内容。 时限。在第一个正确答案大于答案中给出的最大正确答案一周后,我将接受最大的正确99444901133答案。 分数到目前为止。 Python(原始) 4444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444000000000000000000000000000000000000000000000000000000000000000000000000000000001111111111111111111111111111111 J(随机)(此答案从2013年2月21日开始为期一周的计时器。) 222223333333

1
编写一个代码高尔夫问题,其中Java胜出[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Code Golf Stack Exchange 的主题。 7年前关闭。 编写代码高尔夫球任务,使得 任务所需的唯一输入(如果有的话)是来自标准输入的文本,而任务所需的唯一输出是文本到标准输出。 对于任务定义的每种可能的合法输入,只有一个正确的字符串输出字符串。 每个可能的合法输入都少于10000个字符长。 每个正确的输出少于10000个字符长。 成功完成每个输入的任务的最短程序(由StackExchange用户管理编写)是Java。 关联Java程序最短的任务获胜。
19 code-golf 

29
排序数字。Sorta
受到命运多亏的不使用数组而对数字进行排序的启发,但我认为它比SO问题更好地编写了代码。 给定正整数,请对该整数排序。 最低分获胜! 从0分开始。 每个字符加一分。 为您使用的每个数组加20点。 为您的代码中的每个多字符字符串加10点。(除了初始输入,只要将其转换为整数而不对其进行任何其他操作即可。) 如果程序可以处理的最大位数受程序限制(与机器相反),则加32点。 如果您的代码可以根据给定的另一个参数更改排序的方向,则减去10分(无论您要使用什么,例如,降序排序为0,升序排序为1)。 每种语言都不尽相同,但其主旨是避免任何形式的可迭代数字黑客。 例: 输入:52146729 输出:97654221或12245679 笔记: 使用您的编程语言提供的任何内置排序功能,但是如果排序功能涉及字符串或数组,则要加分! 您可以将解决方案编写为直接接受整数的函数,也可以编写为接受argv,文件或流中的参数并将其转换为整数的程序。只要立即将其转换为整数并丢弃原始char *输入而无需对其进行任何进一步的操作,就不会受到任何惩罚。 处罚不仅适用于程序文本中的字符串文字,而且适用于程序功能的任何可能输入或输出字符串或可迭代的部分。例如,JavaScript String.prototype.split至少有一个字符串作为输入(this)和一个数组作为输出,因此使用+30即可。 我试图使这些规则指导算法设计的原理,而不是初始/最终I / O(因此请注意#2)。我认为,int(input())即使input的签名说它返回的是字符串,只要该表达式是程序的初始入口点,也不应适用该惩罚。同样,如果程序的最终输出是print(x)并且x必须是字符串,则惩罚不适用于最后一个字符串的强制转换操作。话虽如此,我从来没有明确地说过这必须是一个程序或I / O必须来自或离开的地方。接受int并返回的函数将起作用int,并且不会遭受这些歧义的困扰。

3
Hashiwokakero:建立桥梁!
Hashiwokakero(日语中的“建造桥梁”)是一个难题,您需要负责将一组岛屿与桥梁连接起来。规则是: 桥梁必须在两个岛之间垂直或水平延伸。 桥梁可能不会彼此交叉。 一对岛最多可通过两个平行桥连接。 每个岛都标记有1到8之间的数字(包括1和8)。连接到孤岛的桥的数量必须与该孤岛上的数量相匹配。 桥接器必须将孤岛连接到单个连接的组中。 您的任务是编写一个解决Hashiwokakero难题的程序。 您可以假设任何给定的难题都是可以解决的,并且只有一个解决方案。 该程序应相当有效。例如,在一般的PC上,解决以下25x25难题的时间不应超过10分钟,并且不应使用超过1 GB的内存。解决7x7之类的小难题需要几秒钟的时间。 输入: 拼图将被给定为字符的2D地图,用数字1来8表示水表示岛屿和空格。必要时,将在行上填充空格以使它们的长度相同。 岛屿将始终在水平和垂直方向上被至少一平方公里的水隔开,以便在它们之间留出空间来放置潜在的桥梁。一个难题中总会有至少两个岛。 您的程序最好从标准输入中读取拼图地图,但是如果您的编程语言需要它,则可以指定其他输入法。 输出: 输出应类似于输入,但必要时用桥代替空格。应使用Unicode框绘图字符─(U + 2500),│(U + 2502),═(U + 2550)和║(U + 2551)绘制桥,以表示水平和垂直单桥和双桥。 如果Unicode字符是一个问题,你可以使用ASCII字符-,|,=和H来代替。 获奖标准: 这是代码高尔夫。以最短的正确且合理有效的解决方案为准。 例子: 拼图(7x7): 2 2 1 1 4 3 3 2 4 3 2 3 1 3 4 2 解: 2─2──1 │1──4─3 3──2║ ║ …
19 code-golf 

1
国际象棋残局:白棋交友
给定一个表示国际象棋当前状态的8x8字母网格,您的程序的任务是找到白色的下一棋,该棋将导致死战(答案将总是一move而就)。 输入项 输入将在STDIN上-8行,每行8个字符。每个字符的含义如下: K/k - king Q/q - queen B/b - bishop N/n - knight R/r - rook P/p - pawn - - empty square 大写字母代表白色,小写字母代表黑色。板的方向将使白色从底部开始向上,黑色从顶部开始向下。 输出量 白色的移动会导致将死,并用代数符号表示。您无需注释何时拍下片段,也无需担心在两个相同的片段之间可以做出相同动作的歧义。 样品输入 例子1 输入: ------R- --p-kp-p -----n-- --PPK--- p----P-r B------- -------- -------- 输出: c6 例子2 输入: --b-r--r ppq-kp-p -np-pn-B -------- ---N---- --P----P PP---PP- …
19 code-golf  chess 

1
独特的Sudoku Finder
挑战: 给定Sudoku开发板的标准输入,找到添加的最小数量以使开发板唯一。 具体/规则: 输入的格式如下(所有空格均有效) 516|827|943 278|394|615 349|615|872 ---+---+--- 98 |4 2|156 465|189|237 12 |5 6|489 ---+---+--- 892|743|561 634|951|728 751|268|394 输出的格式为每行一个数字,格式如(x,y):z-x和y从左上角的一个开始,然后向下和向右递增;z是要加的数字。 在这种情况下,这些都将是有效的输出:(3,4):3,(3,4):7,(5,4):3,(5,4):7,(3,6):3,(3,6):7,(5,6):3,和(5,6):7,如其中任何一项将允许板来解决。 如果输入了唯一/已解决的Sudoku开发板,则该程序不应打印任何内容,甚至不能换行。 该程序对于任何开发板都应在不到一个小时的时间内运行(我建议使用完全空白的开发板或上面带有一个随机数字的开发板进行测试...)。 得分: 以字符为单位的总(行进)代码大小,包括所有空格 ... 奖金: 1/2代码大小:如果程序只打印一个感叹号,并且在没有输入解决方案的电路板时停止。 1/2代码大小:如果程序打印两个感叹号并在输入内部矛盾的木板时停止(两个数字在同一行/列/正方形上相同)。
19 code-golf  game  sudoku 

19
计算海明重量低的海明重量
创建一个程序来计算字符串的汉明权重。获胜者是汉明重量最低的程序。 规则: ASCII字符的汉明加权定义为以1二进制表示形式设置的总位数。 假设输入编码为7位ASCII,并通过您语言所正常使用的任何输入机制(例如stdin,args等)进行传递 将结果以数字形式输出到stdout或您的语言使用的任何默认/正常输出机制。 它应该不用说,但是您必须能够在现实生活中实际运行该程序,才能使其成为有效的解决方案。 优胜者是其代码的汉明权重最低的解决方案。 抱歉,此空格中没有解决方案!好的,现在我已经整理了规则,您可以在空格中进行编码了:) 每个字符的示例: char | binary | weight -----+----------+------- a | 01100001 | 3 x | 01111000 | 4 ? | 00111111 | 6 \x00 | 00000000 | 0 \x7F | 01111111 | 7

3
蜂箱的奇特生活
研究人员最近发现了一个有趣的蜂群,它生活在无限的蜂窝区域中: 每个牢房可以容纳一只蜜蜂或不能容纳一只蜜蜂。实际上,这些生物的生活似乎有点……混乱。可以计算出一个殖民地总是以以下模式开头: (蜂绘制由 灵光布泰 上维基共享资源。这个蜂窝和蜜蜂图像从而被下发布的 CC-BY-SA。 牢骚) 之后,蜜蜂的生命周期分为几代。每一代老蜜蜂死亡而新的蜜蜂孵化,这主要取决于它们细胞的邻居: 如果一只蜜蜂的邻居少于两个,它会因孤独而死亡。 如果一只蜜蜂有三个以上的邻居,则会因拥挤而死亡。 如果一个小区在相邻小区中有两只,三只或四只活蜂,那么下一代会在那里孵化出一只新蜜蜂。 垂死的蜜蜂直到世代末期才死亡,因此它们仍会影响可能会孵化下一代的周围细胞。 现在我们知道了这样一个殖民地的工作方式,我们可以通过任何数量的世代对其进行模拟。 输入项 输入是标准输入给定的单个数字N,以换行符终止。0≤ Ñ ≤150。这是代模拟的数量。 输出量 输出是单个数字,在标准输出上,并且可以选择跟在一个换行符之后,该换行符表示N 代后的活蜂数量。 标准错误的附加输出将被忽略。 样本输入 0 5 42 100 样本输出 6 44 1029 5296 获奖条件 最短的代码胜出,这是高尔夫界的惯例。如果出现平局,则以较早的解决方案为准。 测试用例 有两个测试脚本,包含相同的测试用例: 重击 电源外壳 在这两种情况下都调用:<test script> <my program> [arguments]例如./test ruby beehive.rb或./test.ps1 ./beehive.exe。 我知道只有22个测试,而不是151个(主要是因为解决方案通常很慢)。请避免嵌入确切的测试用例,而不是解决任务。这些脚本可以方便您测试更改是否仍导致程序正常运行。不是您可以使代码适应特定的测试用例。 另一个注意 该任务是2011-W24期间在我的大学举行的高尔夫比赛的一部分。参赛者的成绩和语言如下: 336 – …

17
打印Cantor集
挑战 建立一个N级Cantor集。 Cantor三元组是通过重复删除一组线段的中间三分之二来创建的。 程序接收一个参数N(整数),然后(以控制台或类似方式)打印N个康托集。印刷品只能包含非_下划线()和空格字符。参数可以是正数,也可以是负数,并且符号表示Cantor Set的构造方向:如果N > 0Cantor Set是向下构造的,并且N < 0Cantor Set是向上构造的。如果是N = 0这样,程序将打印一行(_)。 例如: N = 2 _________ ___ ___ _ _ _ _ N = -2 _ _ _ _ ___ ___ _________ N = 3 ___________________________ _________ _________ ___ ___ ___ ___ _ _ _ _ _ _ …

12
填满湖泊
给定ASCII图片格式的土地地形,计算出湖泊将往何处填满。假定有无数的降雨。 例 输入 # ## # #### # ######### ## ########### ## ############# #### ## ############## ##### ################# ####### ######################### ######################### 输出 # ## #@#### #@@@@######### ##@@########### ##@#############@@@#### ##@##############@@##### #################@####### ######################### ######################### 输入将仅包含空格和#标记。每行的长度相同。输出应该是相同的#模式,并带有将在其中积聚水的空间并填充@标记。 底部输入行将始终是所有#号。土地上不会有孔洞或悬垂物。最短的代码胜出。

30
生成通用二进制函数查找表
这与我对发明一种深奥的编程语言的追求是切线相关的。 二进制数0 .. 15的表可用于通过索引操作实现通用二进制函数。给定两个1位输入X和Y,可以将所有 16种可能的功能编码为4位操作码。 X Y F|0 1 2 3 4 5 6 7 8 9 A B C D E F - - - - - - - - - - - - - - - - - - 0 0 0 1 0 1 0 1 0 …

9
从ASCII文本生成PBM位图文件
该PBM(便携式位图)格式是一个非常简单的ASCII黑白位图格式。 这是字母“ J”(从Wikipedia链接复制粘贴)的示例: P1 #这是字母“ J”的示例位图 6 10 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 1 0 …

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.