编程拼图和代码高尔夫

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

6
旅行推销员
给您一个列表或向量或其他任何东西,一堆3元组或其他任何东西,其中前两个是字符串,第三个是一个数字。字符串是城市,数字是它们之间的距离。元组中城市的顺序是任意的(即,先到先后都没关系),因为每种方式的距离相同。另外,每对连接的城市都有一个元组。并非所有城市都可以连接。而且,距离始终为正(不是0)。您不需要检查这些条件,可以假设输入格式正确。您的工作是按循环顺序返回城市,这样,如果您从任何一个城市开始,然后按顺序返回同一城市,则城市之间的总距离将最小(确切地说,总之情况。)您可以假设存在解决方案。例如,假设您被授予 [("New York", "Detroit", 2.2), ("New York", "Dillsburg", 3.7), ("Hong Kong", "Dillsburg", 4), ("Hong Kong", "Detroit", 4), ("Dillsburg", "Detroit", 9000.1), ("New York", "Hong Kong", 9000.01)] 您可以输出以下任何内容(但只需要输出一个): ["Detroit","Hong Kong","Dillsburg","New York"] ["Hong Kong","Dillsburg","New York","Detroit"] ["Dillsburg","New York","Detroit","Hong Kong"] ["New York","Detroit","Hong Kong","Dillsburg"] ["Dillsburg","Hong Kong","Detroit","New York"] ["New York","Dillsburg","Hong Kong","Detroit"] ["Detroit","New York","Dillsburg","Hong Kong"] ["Hong Kong","Detroit","New York","Dillsburg"] …

2
垄断压缩
给定代表玩家回合开始时大富翁游戏当前状态的字符串,请将所有必要的数据压缩到最小的输出中。答案将根据输出大小和源大小来判断。 注意:有许多区域差异,但本文中对属性名称等的所有引用均基于此板。 输入: 输入将作为一个;单独的字符串给出。该字符串以您选择的语言中惯用的任何方式提供给程序,无论是stdin,参数等。 未格式化的输入如下所示: numPlayers (1 to 8) whose turn (0 to numPlayers-1) for each player: bankrupt? (true/false) money (0 to 2^16-1) get-out-of-jail-free cards (0 to 2) position (0 to 39) jail turns (-1 to 2) for 28 properties: owner (-1 to numPlayers-1) mortgaged? (true/false) improvement level (0 to …

4
小山上的复活节彩蛋狩猎
寻找复活节彩蛋活动 机器人在兔子找到鸡蛋之前先找到鸡蛋。机器人高兴。 总览 这是纪念复活节和追捕复活节彩蛋的传统之王挑战! 您的机器人在每个方向上都有两个空间的视野,包括对角线,在您周围创建了一个5x5的正方形,您可以看到。它正在寻找鸡蛋,发现鸡蛋最多的人将获胜! 董事会 棋盘将由os(代表复活节彩蛋),#s(代表墙壁),*s(代表其他玩家)和s(代表空白)组成。 这将是一个具有边长的正方形(number of entries) * 3。 它将被墙壁包围。 墙的内部将是各种随机放置的,的直线墙#,其随机长度在2到10之间(含2和10)。会有(number of entries) * 3他们。 然后将鸡蛋随机放置。会有(number of entries) * 4它们,并且它们只会在空白()正方形上生成。 为了使电路板生成过程正常运行,必须至少有7个整体。 这是一个JSFiddle,它将生成一个随机的板供您测试。这是一个带有的示例(number of entries) = 7: ##################### # o ## # # o ## # #o ###### ## ###### # ## ## o # # ## ## …

4
完成懒惰的括号
键盘上的括号已全部用完,我想尽可能避免使用它们。您的挑战是通过在每行之前和之后添加括号来平衡包含括号的行。 这类似于TI-Basic的自动括号和字符串闭包(即Output(1, 1, "Hello, World!)。它还可以保存程序中的宝贵字节! 输入示例: This line has no parentheses alert(Math.max(1, 2 1+1)*2).toString() function() { alert('Hello, World!'); })( 示例(可能)输出: This line has no parentheses alert(Math.max(1, 2)) ((1+1)*2).toString() (function() { alert('Hello, World!'); })() 规格: 对于每一行输入, 根据需要在行的开头添加尽可能多的开放括号,并在行的末尾添加封闭括号以平衡行中的括号 “余额”的定义是: (和)行中的金额相同 对于从字符串开头开始的每个子字符串,此子字符串的结束括号不得多于开头括号 例如,(foo))(bar不平衡是因为(foo))闭括号比开括号多 如果需要,可以添加多余的括号,如果这样会使代码更短 您无需担心字符串文字或类似的东西,假设所有括号都需要平衡 输出每行且括号括起来 这是代码高尔夫球,所以最短的代码(以字节为单位)将获胜!

9
字符串中单词的相反顺序
任务 系统会为您提供一个匹配的可变字符串[a-z]+( [a-z]+)*。 您必须将其变异为包含相同单词的字符串,但是顺序相反,以便“大家好”变成“大家好”。 您不得使用固定数量以上的额外内存(因此,请勿将整个字符串或任何整个单词复制到刚分配的缓冲区中)。 没有时间限制。绝望的低效率不会损害您的分数。 如果您选择的语言不允许对字符串进行突变,则可以使用字符数组作为替代。 你的分数 您的分数完全是根据您对字符串元素的分配次数来计算的(小分数最好)。如果您使用写入字符串的库函数,则其写入也将计数。 假设输入s所需的分配数量为n(s)。然后,您的分数是所有输入s(与上面指定的正则表达式匹配)的n(s)/ length(s)的最大值(在学上,最高)。如果无法精确计算,则可以使用可以证明的最低上限。 如果可以证明您的算法使用的渐近分配较少,那么您可以平分秋色(即使得分相同,也可能发生这种情况,请参阅下文)。如果您不能这样做,则可以通过显示使用更少的额外内存来打破平局。但是,第一个抢七的条件始终优先。 对于某些输入,每个字符都需要更改,因此得分不能低于1。 我可以想到一个得分为2的简单算法(但我没有输入)。 关于至上和纽带的注意事项 一组数字的最大值是不小于任何一个的最小数字。这与集合的最大值非常相似,除了{2/3,3/4,4/5,5/6,...}等一些无限集合没有单个最大元素,但仍然有一个最大值,在这种情况下1。 如果您设法在我的得分2算法(例如)上仅“保存”固定数量的作业,您的得分仍将为2,因为输入越大,您将任意接近2。但是,如果涉及到决胜局,您将获胜。

7
如果社区会成为一个人
井社区仅仅是一个机器人。但是如果会是一个人怎么办? 您的任务是查找如果社区因其所做的编辑而享有声誉(只需进行2次编辑),就会发现其声誉。 这适用于任何站点,但是我们将考虑使用PP&CG解决此问题。 使用任何语言,甚至data.stackexchange也可以。 因为这是代码高尔夫球,所以最小的代码赢得了我获得+15的声望(通过赏金,我会为自己留下101个:P)。 编辑:考虑各种可以提高声誉的编辑。
17 code-golf 

19
打印两个数字的最大公因数的素数分解
标题说明了一切。两个输入的32位正整数m, n >= 2,gcd(m,n)以素数分解形式输出。 输入值 命令行参数或1行stdin可以,对于高尔夫来说更合适。 输出量 用指数分隔的单个空格(没有其他空格)。如果输入是相对质数,则什么也不输出。 例子: $ ./factorize 96 162 2^1 3^1 $ ./factorize 14 15 $ ./factorize 196 294 2^1 7^2 规则 您不得将外部资源,数学库或内置函数用于分解或GCD。示例:Java,否java.lang.Math。红宝石,否prime_division,perl,否factor等
17 code-golf  math 

7
预测男人会去哪里
一个人住在(0, 0)一个城镇的西北角,高度h和宽度都很高w。他每天都从他的家走到边境(?, w)或边境(h, ?)。在以下示例中,该名男子前往(3, 3)今天。 (0, 0) +--+ + + . (0, 4) | + +--+--+ . | + + + + . | (3, 0) . . . . . (3, 4) 这个人在每个点上都记录了一点(+在上面的示例中)。每次到达某个点时,如果钻头在哪里,他就会向东1走,否则就向南。他离开后,位被翻转了。例如: Day 1: 1--0 1 1 Day 2: 0 1 1 1 Day 3: 1--1--1--1-- Day 4: …

5
让Beal拿走$ 1,000,000
比尔的猜想如果您证明/反驳则一百万美元的奖金。 它指出,如果A,B,C,x,y和z是x,y,z> 2的正整数,则A,B和C具有共同的质因数。 挑战在于编写一个程序来搜索反例以证明这一点! 规则 编写程序,搜索比尔猜想的反例 您可以执行穷举搜索(即,所有适合此格式的数字的可能组合)或使用一些优化方法(例如,A和B是对称的)。 您必须使用任意精度的整数。 笔记 这是一次人气竞赛,请发挥创意! 速度不是必需的,但是会使速度更有趣。优化! 我也有兴趣查看最短的代码。您会从我这里得到+1! 我将在可以访问的超级计算机上运行获奖程序! 这个猜想被认为是正确的,但这并不意味着我们不能尝试! Google的Peter Norvig也尝试过此问题。您可以使用他的页面作为指导。他有一个简短的Python程序,您可以作为示例。 其他人(也恰好在Google工作)已经大大改进了Norvig的方法,可以在此处找到其页面(带有源代码)。 我两年前与此相关的SO问题也可能会有所帮助:在给定范围内对所有A ^ x求鳍。

4
我喜欢毕达哥拉斯的树
...所以要让我成为一棵树是一个挑战。 生成一个名为tree的程序或函数,该程序或函数采用一个整数参数N,并绘制一个N层深的勾股树,其中0层只是树干。 树的每个结点都应将三角形的顶点放置在周长上的任意点上(此点应均匀分布在至少5个等距的点上,或均匀分布在整个半圆上)。 根据您的时间,您的树也可以是3d,彩色或点亮。但是,这是代码高尔夫球,因此最小的文件为准。 编辑:一周之后,我将关闭比赛并接受最小的答案

1
使用最少的字节来解决2048的确定性版本
编写一个程序,该程序将生成到游戏2048的确定性变式的获胜顺序。该顺序应为数字字符串0-3的形式,其中0:向上,1:向右,2:向下,3:剩下。例如,字符串“ 1132”表示右右左下。获胜的程序是到2048的最短源代码! 确定性2048的规则:游戏在4x4网格上进行游戏,该网格最初包含1个图块,位于左上角。每个移动都由命令“左”,“右”,“上”或“下”组成。左命令将网格上的所有图块向左滑动,然后像从左开始的图块一样进行合并和求和。同样,右命令将图块向右滑动,然后从右开始进行组合。 每个图块一次只能加入一个组合。 移动后,将在左侧的第一列中创建一个具有可用空间的新2磁贴,在该列的顶部中的第一个可用空间中将创建一个新的2磁贴。 例如,序列“右右左下”会导致状态 2___ ____ ____ ____ 2__2 ____ ____ ____ 2__4 ____ ____ ____ 24__ 2___ ____ ____ 2___ ____ ____ 44__ 应用于行_ 2 2 2的命令权限将导致_ _ 2 4。应用于行2 2 2 2的命令权限将导致_ _ 4 4 这个问题的灵感来自http://jmfork.github.io/2048/

3
在3D中实现生活游戏
面临的挑战是找到最短的3D生活游戏实施方式(示例)。这些是规则: 只有1个或更少邻居的像元(在这种情况下为立方体)会死亡,就像是出于孤独一样。 如果恰好有5个细胞围绕一个空细胞,则它们会繁殖并充满它。 如果一个小区有8个或更多的邻居,它将死于拥挤。 至少将其设置为10x10x10,这样才能分别输出图层: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 X 0 0 X 0 0 0 0 0 0 0 X X X …

17
从子串中找到最小的素数
1946年,鄂尔多斯和科普兰证明某个数字是一个正数,即其十进制扩展中的数字是均匀分布的。 用户将输入一个数字序列,您会发现以10为底的包含该字符串的最小素数。 例: input -> output "10" -> 101 "03" -> 103 "222" -> 2221 "98765" -> 987659 以字节为单位的最短代码获胜。我确实知道某些语言(mathematica,sage,pari-gp ...)带有与质数有关的内置函数。-50字节(如果您的程序不依赖于此类功能)。如果您的语言已经具有巨大的优势,请不要试图对此作弊,不要索取奖金。 编辑 根据下面的一些评论,包含“ 03”的最小素数为3。这真的有区别吗?我唯一想到的是,数字可能比字符串更容易处理。 在“ 03”之类的情况下,首选输出为103。但是,我不认为它是程序的基础部分,因此,如果它允许您减少字节数,则可以随意忽略任何前导零。
17 code-golf  primes 

1
隐藏邪恶代码-在目录树中的任何位置打印包含给定字符串的文件
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Code Golf Stack Exchange 的主题。 3年前关闭。 这个难题的重点是学习如何在程序中隐藏和发现恶意代码。 一个人在问一个问题: 请给我一些代码,该如何找到文件的代码可能位于“当前目录”或其子目录中。 (这是我在一个网站上看到的一个真实问题的变体。) 更具体地说:OP希望您编写一个接受字符串和目录的程序。它将遍历目录中的所有文件并递归遍历其所有子目录。对于每个文件,它将检查文件是否包含字符串,如果包含,则将打印文件的名称。(如果需要,该程序可以具有其他功能,只要它们与主要目标相关即可。)对遍历顺序没有任何要求。 但是,这个难题的主要任务是在程序中隐藏其他代码,这些代码会使在用户/同事/老板/等人眼中要求该程序的人变得愚蠢。例如,在某个时候打印出侮辱性的文字,例如:该程序的作者不知道如何编程,应退还其文凭并被解雇。要有创造力。 规则: 该解决方案一定不会有害(当然,除了愚弄OP外)。它一定不能对最终用户造成任何不可逆转的伤害(没有类似之类的东西rm -rf!)!此类解决方案将被取消资格。 拖钓的物品应隐藏起来,以免OP轻易找到它。 您正在拖曳OP并不明显。该代码应该看起来是真实的。 解决方案必须附带适当的解释,说明它如何拖延OP,以便每个人都可以从您的解决方案中学到一些东西。解释应隐藏在单击后隐藏的文本(“扰流板”)中。进行判断时,请尝试查找巨魔而不看解释,并为难以发现的那些投票。 如果尝试多次运行该代码,也请尝试从OP隐藏该拖钓。也许只在特定日期之后或在草率的程序员不会测试的某些条件下才开始拖钓。要有创造力,不要忘了解释这个技巧。 不要只使用现有工具(例如grep或)创建脚本find。从头开始编写程序。最好避免使用库,而更喜欢低级调用-这将使代码更复杂,并使您有机会在其中隐藏恶意内容。 这是一场人气竞赛。请根据以上几点进行判断。

10
划分水流图
在Palantir Technologies的采访中,这是互联网上的一个挑战。 一组农民有一些海拔数据,我们将帮助他们了解降雨如何流过他们的农田。我们将土地表示为高度的二维数组,并根据水流向山下的思想使用以下模型: 如果一个单元格的四个相邻单元格都具有更高的高度,我们称此单元格为汇;水在水槽中积聚。否则,水将流到最低高度的相邻单元格。如果某个单元格不是接收器,则可以假定它具有唯一的最低邻居,并且该邻居将比该单元格低。 直接或间接排入同一水槽的细胞被称为同一盆的一部分。 您面临的挑战是将地图分成多个盆地。特别是,在给定高程图的情况下,您的代码应将地图划分为盆地,并按降序输出盆地的大小。 假设高程图是正方形的。输入将从以一个整数S(表示地图的高度(和宽度))开始。接下来的S行将分别包含地图的一行,每行都有S个整数-行中S个单元格的高程。一些农民土地面积较小,例如以下示例,而有些农民土地面积较大。但是,在任何情况下农民都不会拥有大于S = 5000的土地。 您的代码应按降序输出以空格分隔的盆地尺寸列表。(忽略尾随空格。) 下面是一些示例。 输入: 3 1 5 2 2 4 7 3 6 9 输出: 7 2 标有A和B的盆地为: A A B A A B A A A 输入: 1 10 输出: 1 在这种情况下,只有一个盆地。 输入: 5 1 0 2 5 8 2 3 …

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.