编程拼图和代码高尔夫

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

14
欧几里得算法(用于找到最大公约数)
挑战 编写一个程序或函数,它接受两个输入整数i和j,并输出它们的最大公约数;通过使用欧几里得算法计算得出(见下文)。 输入项 输入可以作为和的空格分隔的字符串表示形式i,j或作为两个单独的整数。您可以假设整数将小于或等于10,000。您还可以假定输入整数不会互为素数。 欧几里得分解 之间的较大数量i和j由较小的分割多次可能的。然后,添加其余部分。对剩余数和前一个数字重复此过程,直到剩余数变为0。 例如,如果输入为1599 650: 1599 = (650 * 2) + 299 650 = (299 * 2) + 52 299 = (52 * 5) + 39 52 = (39 * 1) + 13 39 = (13 * 3) + 0 最终数字13是两个输入整数的最大公约数。它可以像这样可视化: 输出量 您的输出必须是上面表格中的细分,然后是换行符和GCD。可以通过任何介质输出。 例子 输入项 18 27 …
22 code-golf  math 

2
你会施法吗?
在《魔法:聚会》中,法师(称为“鹏洛客”)通过施展法术相互抗争。法术消耗魔法。存在五种法术力颜色:白色,蓝色,黑色,红色和绿色,分别表示为{W},{U},{B},{R}和{G}。 咒语的费用稍微复杂一些。成本可以是以下各项的任意组合: 一种或多种颜色 一个或多个无色,表示为{X},其中X是一个正整数 一个或多个杂种,表示为{Y / Z},其中Y和Z是一种颜色(由五个字母之一表示)或无色,由一个正整数表示 尝试施放咒语时,以下规则适用: 成本中的一种颜色必须由一种颜色的法术力来满足 无色成本{X}可以由任何颜色的X魔法值来满足 可以通过满足Y或Z来满足混合成本{Y / Z} 请注意,大括号不嵌套 Y和Z不混合 编写一个程序或函数,给定一个法术力和一个成本池,当且仅当该池中的法术力可以满足该成本,否则打印或返回true(或某个真实值),否则返回false(或某个虚假值)。 魔力池是以下格式的非空字符串: Color1,Color2,Color3,...,Colorn-1,Colorn 费用是以下格式的非空字符串: Cost1,Cost2,Cost3,...,Costn-1,Costn 例子 格式Pool Cost -> ExpectedOutput(在“池”和“成本”之间有一个空格): {R},{R},{G},{B},{R} {4},{R} -> True {G},{G},{G},{G},{W},{W},{W} {2/W},{2/U},{2/B},{2/R},{2/G} -> False {G},{G},{R} {R/G},{G/B},{B/R} -> True {R},{R},{R},{G} {1},{G},{2/G}-> True {R} {R},{R},{R},{R},{R} -> False {W},{R},{R} {2/W},{W/B} -> True {U},{U} {1} …

18
输出Iccanobif序列
编写程序或命名函数,该程序或函数将输出或返回序列,直到nIccanobif序列中的第th个整数,在OEIS上记录为A014258。请注意,0如果n为零,则仅打印序列()中的第零个元素。 该序列是通过像标准Fibonacci序列一样开始而生成的,但是在将前两个数字相加后,可以翻转结果并删除所有前导零。至少对我而言,一个有趣的事实是该序列没有严格增加(请参见下面的列表)。它似乎也(可能)严格大于或等于斐波那契数列。 程序的输入必须是整数。 为了您的观看乐趣,此处提供了序列的前20个数字: 0, 1, 1, 2, 3, 5, 8, 31, 93, 421, 415, 638, 3501, 9314, 51821, 53116, 739401, 715297, 8964541, 8389769 禁止出现标准漏洞。 最短的程序获胜。 编辑:添加了一条注释,以澄清该序列从第零个元素开始,如果n为零,则应包括在内。 IO可能性示例: 0 -> 0 1 -> 0 1 6 -> 0 1 1 2 3 5 8 17 -> [0, 1, 1, 2, …

8
盒子的高度图
看一下这张各种盒子的ascii艺术图: +--------------------------------------------------------------+ | | | +-------------------------------+ +-------+ | | | | | | | | | | | | | | | +----------------+ | | | | | | | | | +-------+ | | | | | | | | | | | | +-------+ | | | +----------------+ …

9
山丘之王-骗子的骰子
说谎者的骰子是一个相当简单的骰子游戏。我看到了一些不同的规则变体,但这是我最熟悉的版本: 每个玩家以5d6开始 除了在回合结束时计算骰子时,每个玩家都可以看到自己的骰子,但看不到任何对手的骰子 在任何给定回合开始时,所有玩家都掷出他们当前拥有的任何骰子 然后,一个玩家(通常是前一轮的获胜者,或者是上次开始的玩家左侧的玩家;我们将前者用于此KotH;随机玩家在第一轮开始)猜测桌子上有多少个特定数字(很野生) 竞标继续向右移动,每次竞标都更高(例如,3个5、3个6和4个2都高于3个4个,但3个3个不是; 4个也更高,但竞标可能会使您处于坏处); 直到任何玩家称他们之前的玩家为骗子 在这一点上,所有玩家都展示自己的骰子,并在桌子上一并计算最后一次竞标的次数 如果总价低于出价,则出价的玩家必须给称他们为说谎者的玩家致死,否则,称出价者为说谎者的玩家必须给出价者致死(这样,出价者获胜。如果他们的数量至少等于他出价的数量,则不必是确切的数量) 当骰子用完时,您会输 最后一名站长获胜 例如: 玩家一有1,1,2,4,6 玩家二有1,2,2,3,5 玩家三有1,3,3,4,6 玩家一:三分之六。 玩家二:四分之二。 玩家三:四个三分。 玩家一:五分之二。 玩家二:六个二。 玩家三:六个三分。 玩家一:六四。 玩家二:骗子! 他们露出自己的骰子,并数出骰子(因为有些是野生的)和四数。 事实证明,实际上恰好有六个四。 因此,第二个玩家给一个玩家一个死亡。 他们重新投掷,第一人开始下一轮比赛。 您必须编写一个机器人才能玩此游戏。它必须实现以下抽象java类: public abstract class Player { public Player() {} public String toString() { return this.getClass().getSimpleName(); } public abstract String bid(int yourId, int[] …

2
六角棒中的水
我有一堆六角棒粘在一起,成为一个奇怪的雕塑。棒长1至99厘米(cm),横截面积为1平方厘米。所有的杆都在六角面上粘贴到至少另一个杆上。杆都在其底部边缘对齐。 一阵大雨后,雕塑里充满了水。它容纳多少水? 输入项 您的程序应(通过stdin或文件)读入多行,这些行由成对的空格和成对的数字组成,以这种格式指定标尺的长度: aa bb cc dd ee ff gg 如示例中所示,每个杆(如此处的dd)最多可粘到6个周围的杆上。缺少杆是孔,不会积水。例如,输入 04 04 04 01 03 04 04 将代表以下雕塑: 中心杆是高度1(在该杆也可见的地方,我找不到合适的角度)。现在,该杆上方的柱子可以容纳2 cm的水,然后才能溢出3右侧的杆。由于其他任何一根杆都无法在其上方容纳任何水,因此答案为2。这是两个更复杂的示例: Example 2: 55 34 45 66 33 21 27 23 12 01 77 36 31 74 answer = 35 ( 2 on top of 21 +11 on top …

5
StickStack编号
StickStack是一种非常简单的基于堆栈的编程语言,只有两条指令: | 将堆栈长度推到堆栈上 -从堆栈中弹出前两个元素,然后将它们的差值推回(second topmost - topmost) 语言细节 程序开始时堆栈为空。 所有指令从左到右依次执行。 如果堆栈中的数字少于2,则该-指令是非法的。 在执行结束时,堆栈应恰好包含一个数字。 StickStack程序可以生成任何整数。例如: |||--||-- generates the number 2 through the following stack states: [] [0] [0, 1] [0, 1, 2] [0, -1] [1] [1, 1] [1, 1, 2] [1, -1] [2] 要评估您的StickStack代码,您可以使用此在线(CJam)评估程序。(感谢@Martin提供的代码。) 任务 您应该编写一个给定整数值作为输入输出的程序或函数,或者返回一个代表输出给定数字的StickStack程序的字符串。 计分 您的主要得分是以下给定测试用例的StickStack程序的总长度。分数越低越好。 仅当您在所有测试用例上运行了程序并计算了分数时,您的提交才有效。 您的次要(抢七)得分是生成程序或函数的长度。 输入测试用例 (每个数字都是不同的测试用例。) …

3
分解一个64位整数
编写一个GOLF汇编程序,该程序从stdin读取一个整数(后跟换行符),并输出由换行符分隔的素数,然后在stdout上输出尾随换行符。 主要因素不必按特定顺序排列。1不是主要因素。 您的GOLF二进制文件(组装后)必须适合8192字节。 通过运行10次,您的程序将获得评分,每次输入以下内容之一: 8831269065180497 2843901546547359024 6111061272747645669 11554045868611683619 6764921230558061729 16870180535862877896 3778974635503891117 204667546124958269 16927447722109721827 9929766466606501253 这些数字按照难度粗略排序。第一个应该很容易通过试算法解决。 对这组数字进行优化违反了问题的实质,我可以随时更改这组数字。您的程序必须适用于任何正的64位输入数字,而不仅仅是这些。 您的分数是用于计算上述数字的CPU周期的总和。 因为GOLF是非常新的,所以我将在此处包括一些指针。你应该阅读的 GOLF所有的指令和周期成本规格。在Github仓库示例程序中可以找到。请特别看一下析因示例程序,该程序演示了输入/输出。 通过运行将程序编译为二进制文件python3 assemble.py your_source.golf。然后使用运行您的程序python3 golf.py your_source.bin,这也应该打印周期计数。-d使用--help标志查看程序出口处寄存器内容的值-用于查看所有标志。

13
西部最快的枪,挑战山丘之王
这是循环赛中的山丘之王挑战赛。寻找西方最好的枪手是一场战斗! 为了能够参加这场比赛,您需要具备两个职能。第一个设置枪手的属性,第二个设置枪手的主要逻辑功能。 属性功能 function () { var bot = { name: "testBot", numbOfBullets: 7, reloadSpeed: 1, shotsPerTurn: 1, moveSpeed: 2 } return bot } 该属性函数包含5个变量,您需要根据一些规则进行设置(但该变量name可以是任何字符串)。您必须在枪手上总共花费15分,而没有全部花掉15分的枪手不符合资格。属性的工作方式如下: numbOfBullets -定义枪支可容纳多少发子弹。 的初始值和最小值numbOfBullets是1。每增加一个子弹将花费1点,最多花费16个子弹,花费15点。 reloadSpeed -定义您的枪手用完子弹后需要多少回弹才能重新装填枪支。 基本和最大值为4,最小值为1。将此属性减少1将花费2分。 shotsPerTurn -定义您的枪手在一回合内可以射击多少次。 基本值和最小值是1。每增加1,您将得到3分,因此您每轮最多可以有6张射击,花费15点。将这个属性提高到上面numbOfBullets会适得其反,因为您不能发射更多的子弹,而枪支则无法容纳。 moveSpeed -定义您的枪手可以在一转内跑多少个空间。 基本和最小值是1。每增加1,就会花费3点,最多花费6点速度,花费15点。枪手每转一圈可以向左或向右奔跑,以达到最大移动速度。他还可以保持静止不动,这会给他带来奖金(稍后会详细介绍)。 上面的示例函数在子弹上花费6点,在重装速度上花费6点,在移动上花费3点。 主功能 function main(bulletsLeft, yourShots, enemyShots, yourMovement, enemyMovement) { var shots = []; …

12
基数中阶乘的最后一个非零数字
您应该编写一个程序或函数,该程序或函数给出三个正整数n b k作为输入输出,或者返回k的基本b表示形式中的尾随零之前的最后一位数字n!。 例 n=7 b=5 k=4 factorial(n) is 5040 5040 is 130130 in base 5 the last 4 digits of 130130 before the trailing zeros are 3013 the output is 3013 输入项 3个正整数n b k,其中2 <= b <= 10。 输入整数的顺序可以任意选择。 输出量 返回或输出为整数或整数列表的数字列表。 前导零是可选的。 您的解决方案必须在一分钟之内在我的计算机上解决任何示例测试用例(我将仅测试关闭的用例。我的PC低于平均水平。)。 例子 添加了新测试以检查提交的正确性。(它们不属于1分钟内运行时规则的一部分。) 输入=>输出(可以选择省略前导零) 3 10 …

16
广义列阵
一个简单的高尔夫开始本周!您将获得三个数组:基本数组 B,值数组 V和索引数组 I。您应该生成另一个数组,其中from的值V将插入到B由指定的索引处I。这是一个例子: Base: [5, 1, 4, 1, 3] Values: [0, 0, 7] Indices: [5, 0, 3] 索引指向基数组中的以下位置: [ 5, 1, 4, 1, 3 ] ^ ^ ^ 0 3 5 因此,从值数组中插入相应的元素,结果应为: [0, 5, 1, 4, 7, 1, 3, 0] 规则 您可以编写程序或函数,通过STDIN(或最接近的替代方案),命令行参数或函数自变量获取输入,并通过STDOUT(或最接近的替代方案),函数返回值或通过修改作为B参数给出的数组来输出结果。 如果您提交的内容是一种函数,I并且V可以以任何方式进行修改以及B不用于输出。 您可以对输入做出以下假设: 基数和值数组的所有元素都是非负整数。 该值数组最多比基本数组多一个元素。 值数组和索引数组将具有相同数量的元素。 索引数组将不包含重复的索引,并且所有索引都在范围内。 基数组和值数组可能包含重复的元素。 …

12
大熊狩猎
完成 Wumpus季节已经结束,许多邪恶的Wumpus和勇敢的Hunter的生活也随之结束。以及一些怯ward,不道德和彻头彻尾的愚蠢猎人。但是最终,Heckle博士的NascarHunter夺走了最多的战利品和荣耀。我们向您致敬,哦,勇敢...司机? 这是旺普斯的开放季节,来自世界各地的猎人正涌向伍普斯山洞,以尝试从宝贵的伍普斯果皮中致富。 游戏 基于经典的《Hunt the Wumpus》游戏,有一些变化。 地图 一个十二面体。有20个房间,每个房间连接到其他3个房间,基本上形成3个环,中间有桥。 ump 巫婆是个神秘​​的野兽。没有人知道它是什么样,但是所有人都同意它是凶猛的。乌普斯人住在山洞里,喜欢吃死掉的东西。如果Wumpus旁边的山洞里有尸体,他会搬到那里吃掉。如果Wumpus碰巧进入一个包含猎人的洞穴,他也会杀死并吃掉它们。如果Wumpus听到附近有箭,他会惊慌失措,跑进随机房间。 可选特征:当前包括这些特征,以使游戏更有趣,但如果它们增加了太多的随机性,则可以应大众要求将其删除。 愤怒的旺普斯:如果旺普斯被枪杀,他有20%的生存率和狂暴持续3天。横冲直撞时,他每天会随机移动两次,但仍然会被尸体吸引。3天后,他将死亡。第二箭也将杀死伍普斯。 流浪的乌姆普斯:每天,如果没有其他因素触发乌姆普斯,他有25%的机会移动。 猎人们 四个猎人可以一次进入洞穴。洞穴是黑暗的,所以猎人看不见,但他们可以使用其他感觉。猎人可以闻到隔壁房间里的乌姆布斯,闻到隔壁房间里的尸体,听到其他猎人在隔壁房间里移动,并听到是否有箭射入了隔壁房间。 猎人有两个动作:射击或移动。猎人可以向附近的房间或自己的房间射箭,并以类似的方式移动。 游戏玩法 在每一回合中,猎人都会先注意周围的环境,然后再动一动。移动发生在箭头之前,因此,如果将箭射入猎人要移出的房间,猎人将幸免于难。完成所有猎人动作后,将评估箭头。如果单个乘员和箭头在同一房间内,乘员将被枪杀并死亡。如果两个或两个以上的乘客共用一个房间,一个人将被随机打死。注意:尸体是乘员,因此尸体可以作为部分防护罩。 所有猎人移动后,Wumpus会做出反应。如果猎人和Wumpus一起搬进了房间,Wumpus会把他/她吃掉。如果Wumpus搬家,它也会吃掉新房间的住户。 100天后,如果猎人没有杀死Wumpus或下落不明的受害者,他们将在山洞中饿死。 代码 所有源代码都可以在这里找到。除非有人要给我写一个stdIn / stdOut适配器,否则所有提交都应使用Java。 机器人应扩展猎人类。要命名您的Hunter,请添加一个不带参数的构造函数来设置名称字段。要响应,请重写getResponse函数。在此功能中,每回合,您将通过一个5个布尔值的数组来告诉您周围的环境。 状态0 =“您闻到了呕吐物” 状态1 =“您听到了另一个猎人” 状态2 =“您闻到尸体” 状态3 =“您听到了箭声” 状态4 =“您在与您同一个房间里感到另一个猎人” Hunter类有2个插槽:nextMove和nextDirection,分别使用枚举Move和Direction。移动可以是MOVE或SHOOT,方向可以是LEFT,RIGHT,BACK或HERE。方向是一致的,这意味着返回将始终使您返回到您之前所在的房间,并且如果从同一房间进入,则LEFT和RIGHT将始终相同。但是,如果您从另一个方向进入,则LEFT和RIGHT会将您带到不同的地方。 也可以随意实现自己的方法。记忆在整个比赛中都是持久的,这意味着您的猎人只会被构造一次。但是,在每个回合开始时,都会调用newGame()方法来使您的猎人知道新游戏已经开始。 计分 一次有四个猎人竞争。如果被杀死,则伍珀斯毛皮价值60分,在所有幸存的猎人中平均分配。全轮巡赛风格,因此4位猎人的每个组合将一起玩。 包括5个示例Hunter:4个具有非常基本的功能,以及一个允许用户输入播放的功能,以进行测试。 如果您有任何建议/要求,请告诉我! 尽头已尽! 世界上的Wumpus人口正在以惊人的速度被猎杀。预计将于6月17日星期三通过《保护我们的臀部法案》。在此日期之后,将不再允许猎人进入洞穴,而将选择获胜者。 计分板 注意:抱歉,代码中存在一个错误,可能会导致Hunters在多个游戏中丧命。修复后,它不会对整体排名产生很大的影响,但会极大地改变统计数据。 得分不断提高,每组猎人在1000场比赛中都参加比赛。NascarHunter和FullCoverageHunter领先,尽管AntiHunter的加入使Wumpuses的存活率提高了2%,但他们仍然以其同类的32%的存活率摇摇晃晃。猎人同行的箭比以往任何时候都更是洞穴中最大的威胁。 1. NascarHunter : …

7
预测滑坡
滑坡 在此挑战中,您的工作是预测大规模滑坡造成的破坏程度。我们为其使用以下简化的二维模型,该模型以初始高度 h >= 0和临界系数为参数 c > 0。您从高度为的悬崖开始h,并假定地形在其左右两侧完全无限平坦。对于h = 6,情况如下: ########## ########## ########## ########## ########## ########## ----------------------- 将-是不可移动的基石,而且#是不稳定的土壤。如果相邻两列之间的高度差大于c,则会发生滑坡:c左列的土壤的最高单位落到右列的下一c列,每列一列。图中最右边的非空列对于不稳定c = 2,因此触发了滑坡: ######### ######### ########## ########## ########## ############ ----------------------- 柱子仍然不稳定,导致第二次滑坡: ######### ######### ######### ######### ############ ############ ----------------------- 现在,其左侧的柱子变得不稳定,因此在那里触发了新的滑坡: ######## ######## ######### ########### ############ ############ ----------------------- 此后,悬崖再次稳定。这个模型的优点是滑坡的处理顺序无关紧要:最终结果是相同的。 任务 您的程序被赋予整数参数h并c作为输入(顺序无关紧要,但是您必须在答案中指定它),并且它应该输出滑坡影响的总列数。这意味着在所得的稳定悬崖中其高度严格在0和之间的列数h。在以上示例中,正确的输出为4。 您可以编写完整的程序或函数。最低字节数获胜,并且不允许出现标准漏洞。 测试用例 这些以格式给出h c …
22 code-golf 

10
用这个修改后的圆平铺平面
取一个以原点为中心的单位圆。在任何两个相邻的象限中,将圆的曲线跨连接圆的x和y截距的线镜像。 使用生成的形状,可以平铺平面: 我用了不起的2D物理沙箱Algodoo制作了这张图片! 编写一个程序,以某种常见的无损图像文件格式输出与此图像相似的图像。您可以将图像另存为具有您选择的名称的文件,也可以只显示它。请勿输入任何内容。 规则: 必须使用任何两种视觉上不同的RGB颜色将整个图像与修改后的圆形图块进行镶嵌处理:一种用于垂直指向的图块,一种用于水平指向的图块。 圆形图块的半径至少应为32个像素。(上图中的半径大约为110像素。) 图像至少应宽4格,高4格。结合上面的规则,这意味着图像可以具有256×256像素的最小尺寸。(上图是4块x 4块。) 镶嵌可以任意转换。例如,图像的左上角不必是图块相交的顶点。(但是,不应旋转镶嵌。) 您可以使用具有用于绘制圆形和输出图像等命令的外部图形库。 曲线确实应该近似圆,就像使用中点圆算法可以做到的那样,大多数图形库都可以为您做到。 允许但不要求在图块边缘周围进行抗锯齿。 以字节为单位的最短提交获胜。

6
生成最短的De Bruijn
De Bruijn序列很有趣:它是最短的循环序列,其中包含给定长度的给定字母的所有可能序列。例如,如果我们考虑字母A,B,C且长度为3,则可能的输出为: AAABBBCCCABCACCBBAACBCBABAC 你会发现,使用字母每一个可能的3个字符的序列A,B以及C在那里。 您的挑战是如何以尽可能少的字符生成De Bruijn序列。您的函数应使用两个参数,一个代表序列长度的整数,以及一个包含字母的列表。您的输出应为列表形式的序列。 您可以假设字母表中的每个项目都是不同的。 可以在此处找到示例生成器 标准漏洞适用

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.