编程拼图和代码高尔夫

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

10
模拟两个生物之间的战斗
欢迎,勇敢的代码高尔夫球手!今天,您将站在妖精和精灵之间的激烈战斗中! goblin attacks elf! elf dodges! elf attacks goblin! elf hits goblin for 13 damage! goblin has 37 health left. goblin attacks elf! goblin hits elf for 1 damage! elf has 49 health left. elf attacks goblin! elf hits goblin for 19 damage! goblin has 18 health left. goblin attacks …


14
石头,纸,剪刀,蜥蜴,史波克[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Code Golf Stack Exchange 的主题。 2年前关闭。 创建一个将两个字符串作为输入并为结果返回单个输出的函数。最受欢迎的答案胜出。 石头剪刀布蜥蜴Spock的规则是: 剪刀剪纸 纸盖岩石 岩石粉碎蜥蜴 蜥蜴毒害了斯波克 Spock砸了剪刀 剪刀斩首蜥蜴 蜥蜴吃纸 纸反驳Spock Spock使岩石蒸发 岩石破剪刀 每种可能的输入情况的输出为: winner('Scissors', 'Paper') -> 'Scissors cut Paper' winner('Scissors', 'Rock') -> 'Rock breaks Scissors' winner('Scissors', 'Spock') -> 'Spock smashes Scissors' winner('Scissors', 'Lizard') -> 'Scissors decapitate Lizard' winner('Scissors', 'Scissors') -> 'Scissors tie …

30
生成数字的随机序列
已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 挑战: 生成数字的随机序列。唯一的输入应该是序列的长度。 纯功能解决方案的额外Internet点。 注意:这是一个代码询问问题。请不要认真对待问题和/或答案。更多信息在这里。

2
赢得虚拟击剑比赛(针对您的堆叠交换器)
警告:这是一个相当复杂的问题,在“山上之王”的战斗风格中,它具有更多的随机性,因此最好的代码可能不会总赢。请阅读所有规则,因为它很复杂! FLAVOR TEXT Bill和Steve决定进行一次“友好的”决斗,但是又如此富有和聪明,决定让他们最好的程序员尝试自己的代码,以相互竞争。你说的是程序员。 OBJECTIVE 在击剑中,您的目标是在击中对手时获得最高的命中率,而自己击中的机会最少 MOVES 您的代码将具有以下“动作”选择 攻击 帕里 座 伦哥 和 头 胸 脚 SCORING POINTS 进攻击败 招架,持续1分刺痛阻挡,争取1分 进攻, 击球1分,阻挡搏击,进攻1分, 刺伤联系进攻,刺弓手无法阻挡或招架下一轮,进攻球员无法进攻或弓箭下一轮 阻挡平局招架,招架球员无法阻挡或招架下一轮,而阻塞球员无法进攻或弓箭下一轮 HEIGHT OF ACTION 您还将为自己的行动选择一个“身高”,因此,只有当两个玩家的身高都与进攻高度相匹配时,以上结果才会发生。如果身高不匹配,则两个玩家可能不再选择与之前的绑架回合相同的动作(不限制身高),直到得分,或者所有4个动作都已填满(一旦打破平局,所有动作)再次可用) CODE REQUIREMENTS 对于每个回合,它都应提示对手的上一回合的移动(第1回合除外),将其与自己的回合进行比较,确定上一回合的结果,然后输出下一回合的数字,得分及其选择/位置在那回合 例如: 输入:LC(大胸) 输出:上一轮:PM vs LC-PM得分!目前比分是2-1,下一轮动作是AH(进攻头) WINNER 游戏结束50局后,或获得3分后结束 AGAINST OTHER PLAYERS 只要第一个答案能够正常工作/发挥作用,它就会立即获得保证的胜利。将根据发布顺序对每个答案与先前的获胜者进行评估,如果获胜,将被宣布为新的获胜者。我要求在赢得或等待竞争时,不要更改代码。一旦被击败,您可能不再会使用相同的语言来争夺冠军头衔,但是您可能会提交不同的语言答案(必须大不相同,不得使用相同基本材料的变体)。 我将尝试进行每项挑战,并将结果发表在冠军和挑战者的评论中,并宣布新的冠军-因为我可能无法使用所有语言,尤其是一些比较晦涩的语言为确保您的答案得到解决,您将提供任何可能的帮助。谢谢!

3
最长的非重复生命游戏序列
给定正整数N,请确定N x N网格上的起始模式,该模式在“人生博弈”规则下产生最长的非重复序列,并以固定模式(长度为1的循环)结束,并在圆环上播放。 目标不是最短的程序,而是最快的程序。 由于世界是有限的,您最终将最终陷入循环,从而重复一个已经访问过的状态。如果此循环的周期为1,则起始模式为有效候选者。 输出:起始模式和序列中唯一状态的总数(包括起始模式)。 现在,1x1圆环是特殊的,因为一个细胞可能被认为与自己相邻,但实际上,这没有问题,单个活细胞在两种情况下都只会死(拥挤或孤独)。因此,输入1产生一个长度为2的序列,该序列是一个存在的单元,然后永远死亡。 这个问题的动机是,它类似于忙碌的海狸函数,但由于我们的内存有限,因此它肯定不那么复杂。这也将是包含在OEIS中的一个很好的顺序。 对于N = 3,序列长度为3,左侧的任何图案都将到达完全黑色的3x3正方形,然后消失。(删除属于1周期一部分的所有模式)。

27
产生一个发音单词
挑战很简单: 产生一个单词。 规格: 单词必须是可发音的。 这被定义为“在辅音和元音之间交替”。 辅音是以下字母之一: bcdfghjklmnpqrstvwxz 元音是以下字母之一: aeiouy 单词必须随机生成。 单词必须能够包含所有辅音和元音。(您不能只bcdf用于辅音和aei元音。) 单词必须包含10个字母。 最短的代码(以字符数计)获胜。

3
Post-It的安全性
如您所知,黑客无处不在,他们想入侵一切。您被要求提出密码要求,这将阻止任何黑客。问题是,您的老板听说为LOC付费是邪恶的,他付给您$ 1800-$ 0.03 *每月插入的字符,使您写出可能可行的最简单的东西。因此,您必须使用少量字符(希望很小),否则就不用花钱了。同样,您的老板不在乎您将使用哪种语言。 良好密码的要求与上述文章类似,只是删除了基于字典的要求,以避免使解决方案依赖于外部文件,您不必检查是否重新排列了字母(很难理解其实际含义),最后一条规则被删除(3/4是什么?),它不检查旧密码。 从链接的文章中删除某些要求后的确切要求是: 至少有8个字符! 不能超过12个字符! 有大小写字符! 最多包含8个大写字母! 最多包含8个小写字母! 至少有2个字母! 有一封领导信! 至少有1位数字! 不是您的用户名! 不要将您的用户名倒退! 不包含您的用户名! 向后不包含您的用户名! 最多有1对重复字符! 没有3个出现次数相同字符的! 不含克拉(^) 没有空间 不包含= 不conatain& 不含 # 不含 , 不conatain ; 不含 ” 不包含> 不包含< 不含 [ 不包含 不含 ) 此列表上的所有拼写错误均保留原样。 $ ./checkpass Username: John Password: L!]E2m69 OK. $ ./checkpass Username: …
16 code-golf 

6
Code Golf:混合坚果,以免碰到任何同种坚果
输入: 输入是随机排列的螺母数组(使用您的语言),随后可能是螺母。您的程序必须具有表示每种螺母的方式,例如整数代码。程序必须能够处理任何大小的螺母配置的数组。 可能的坚果: Kola nut Macadamia Mamoncillo Maya nut Mongongo Oak acorns Ogbono nut Paradise nut Pili nut Pistachio Walnut 输出: 输出必须以没有相邻螺母种类的方式对数组进行排序。如果这不可能,则输出应为空数组。 输入示例(简体): ["walnut", "walnut", "pistachio"] 示例输出: ["walnut", "pistachio", "walnut"] 解决方案可能不会简单地随机排列数组,直到偶然地使其变得唯一。使用的排序必须是确定性的

15
城市名称游戏
如果愿意,可以编写一个根据城市名称游戏规则对城市进行排序的程序。 城市的每个名称应从前一个城市名称的最后一个字母开始。例如Lviv -> v -> Viden -> n -> Neapolis -> s -> Sidney -> y -> Yokogama -> a -> Amsterdam -> m -> Madrid -> d -> Denwer 在排序列表中,第一个城市的第一个字母和最后一个城市的最后一个字母不应该匹配,不必是相同的字母。 您可以假设城市名称只有字母。 程序输出应与输入大写相同 例: % ./script Neapolis Yokogama Sidney Amsterdam Madrid Lviv Viden Denwer ["Lviv", "Viden", "Neapolis", "Sidney", "Yokogama", "Amsterdam", …

10
(最多)5个素数的总和
陶仁涛最近证明了哥德巴赫猜想的一种弱形式!让我们利用它! 给定一个奇数整数n > 1,n最多写5个素数。随心所欲输入,随心所欲输出。例如, def g(o): for l in prime_range(o+1): if l == o: return l, for d in prime_range(l+1): for b in prime_range(d+1): if l+d+b == o: return l,d,b for c in prime_range(b+1): for h in prime_range(c+1): if l+d+b+c+h == o: return l,d,b,c,h 是Sage代码,它将整数作为输入,并返回一个整数列表作为输出,其和为n。根据陶定理,这将永远终止! 输入值 一个奇数整数n。您可以决定如何接受输入,但是如果很奇怪,请解释一下。 输出量 相当开放。返回列表。打印一个字符串。给一个,几个或全部。将废话以可预测的方式放在堆栈(GS,Piet等)上或连续(可访问)的内存块(BF等)中。对于这些以后的情况,请解释输出。在所有情况下,退货/打印/拥有的内容应该是n素数分区少于6个部分的简单表示。 计分 …
16 code-golf  math  primes 

13
建立一个模拟时钟
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 2年前关闭。 编写一个程序,使用ASCII图形将当前系统时间显示为模拟时钟。时钟必须至少显示小时和分钟指针,并且必须具有至少5分钟的足够分辨率。 显示屏可能很小也很丑,但是显示的时间应该很容易辨认。 该程序必须连续运行并更新其状态。如果您的系统可以清除屏幕,请使用它,否则当状态更改时足以重绘时钟。 如果时钟的分辨率至少为1分钟,您将获得-20%的字符数奖励。

3
高尔夫代码:通过解析英语解决“骑士与刀子”的逻辑问题
背景 有两个人,比尔和约翰。其中一个是骑士,总是说出真相,另一个是小刀,总是说出谎言。您不知道谁是骑士,谁是骑士。然后每个人都说几句关于谁是小刀和谁是骑士。使用此信息,您必须得出结论,谁是骑士,谁是骑士。 的骑士和无赖逻辑问题是基于Booleen代数。一个人说的话构成了Booleen可满足性问题。骑士的陈述必须始终为false,其他骑士的陈述必须始终为true。 约翰说:“我既是个刀匠,比尔也是个刀匠”。如果约翰是骑士,那么这个说法将是错误的,因此他不能成为骑士。如果他是骑士,而比尔是骑士,那么即使第一部分是正确的,这个陈述仍然是错误的。所以,约翰是个k夫。 挑战 您面临的挑战是编写尽可能最短的程序,该程序将列出每个人的声明列表,并弄清楚谁是骑士,谁是骑士。有很多细节要介绍,因此在三个部分中描述了此问题。 输入值 输入将是两行,后跟一个换行符。每行将给出一个字符的名称,后跟一个冒号,然后是该人说的几句话。如果一个人是骑士,那么他所有的句子都是正确的,而所有那位知识分子的句子都是错误的。句子的第一个字母将始终大写,并且每个句子将以句号结尾。这是一个例子: Joe: Both I am a knight and neither Steve is a knave nor I am a knave. Steve: Joe is a knave. Either Joe is a knight or I am a knight. 解析中 每个句子至少包含一个从句。每个子句包含以下几项之一(希望您能理解我的表示法): both [clause] and [clause] either [clause] or [clause] …

4
最佳计分板
我有兴趣看到此问题(现已失效)的答案,但从未对其进行过纠正/改进。 给定一组6面Boggle骰子(此问题中的配置被盗),请在两分钟的处理时间内确定哪种电路板配置将允许最高分。(即哪个骰子在哪个位置,哪个面朝上允许最大的得分单词池?) 目的 您的代码运行时间不得超过2分钟(120秒)。那时,它应该自动停止运行并打印结果。 最终挑战分数将是该程序运行5次的平均Boggle分数。 如果出现平局,则获胜者将是发现更多单词的算法。 如果仍然有平局,则获胜者将是找到更长 (8+)个单词的算法。 规则/约束 这是一个代码挑战。代码长度无关紧要。 请参考此链接以获取单词列表(使用ISPELL "english.0"列表-SCOWL列表缺少一些非常常见的单词)。 您可以通过任何方式在您的代码中引用/导入/阅读此清单。 仅^([a-pr-z]|qu){3,16}$计算与正则表达式匹配的单词。(只有小写字母(3-16个字符,qu必须用作单位)。 通过链接相邻的字母(水平,垂直和对角线)以正确的顺序拼写单词,而不会在单个单词中多次使用单个骰子来形成单词。 单词必须是3个字母或更长;简短的单词将不赚分。 重复的字母是可以接受的,只是不能骰子。 单词不能跨越边或从木板的一侧越过到另一侧。 最终的Boggle(而非挑战)分数是找到的所有单词的总分。 为每个单词分配的点值基于单词的长度。(见下文) 普通的Boggle规则会扣除/打折其他玩家找到的单词。假设这里没有其他玩家参与,所有找到的单词都计入总分。 但是,在同一网格中发现多次的单词仅应计数一次。 你的函数/程序必须寻找最佳的安排; 简单地对预定列表进行硬编码将无法实现。 您的输出应该是理想游戏板的4x4网格,该板所有找到的单词的列表以及与这些单词匹配的Boggle得分。 模具配置 A A E E G N E L R T T Y A O O T T W A B B J O O …

6
生成随机的Boggle棋盘
生成一个4x12的字母/空格网格: 每个骰子应该出现一次,位置随机选择。位置应近似为骰子的均匀随机排列。显示每个模具的随机(再次,近似均匀)的面。在3个字符的窗口中左对齐脸部。例如, A E A A E C D E D A Qu E E A H D 是我想要的格式的非随机板。允许尾随空格。 骰子: A A E E G N E L R T T Y A O O T T W A B B J O O E H R T V W …
16 code-golf  boggle 

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.