编程拼图和代码高尔夫

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

3
排列组运算
在n个元素的排列与数字0到n!-1之间存在众所周知的双射,使得排列与相应数字的字典顺序相同。例如,n = 3: 0 <-> (0, 1, 2) 1 <-> (0, 2, 1) 2 <-> (1, 0, 2) 3 <-> (1, 2, 0) 4 <-> (2, 0, 1) 5 <-> (2, 1, 0) 还众所周知,n个元素的排列形成一个组(阶为n!的对称组)-因此,尤其是,将n个元素的一个排列应用于n个元素的第二个排列将产生n个元素的排列。 例如,将(1、0、2)应用于(a,b,c)收益率(b,a,c),因此将(1、0、2)应用于(2、1、0)收益率(1、2 ,0)。 编写一个使用三个整数参数的程序:n,p1和p2;将p1和p2解释为n个元素的排列;将第一个应用于第二个;并输出相应的整数。例如: $ ./perm.sh 3 2 5 3

12
呈现BBC Micro猫头鹰徽标的版本[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Code Golf Stack Exchange 的主题。 26天前关闭。 您能从代码中渲染出上述版本的BBC Micro Owl徽标吗? 规则: 您可以使用任何喜欢的编程语言。 输出可以是文本或图形。 圆不必重叠。 优胜者: 投票最多的答案将获胜。 对于在BBC基本版中尝试此操作的任何人都表示感谢。 您可以在这里阅读有关BBC Micro的信息

7
定义一个包含256个元素的字段
甲字段在数学是一组数字,与在其上定义,使得它们满足特定公理加法和乘法操作(Wikipedia中所述;也见下文)。 有限域可以包含p n个元素,其中p素数和n自然数。在这个挑战中,让我们接受p = 2和n = 8,让我们创建一个包含256个元素的字段。 该字段的元素应为包含0和的范围内的连续整数1: -128 ... 127 0 ... 255 或任何其他此类范围 为抽象的“加法”和抽象的“乘法” 定义两个函数(或程序,如果更容易的话),a(x,y)以m(x,y)使它们满足字段公理: 一致性:a(x,y)与m(x,y)时同参数调用产生相同的结果 闭性:结果a和m在相关范围内的整数 关联性:对于任何x,y并且z在范围内a(a(x,y),z)等于a(x,a(y,z));一样m 交换性:对于任何x和y范围内的,a(x,y)是等于a(y,x); 一样m 分布:对于任何x,y并且z在范围内,m(x,a(y,z))等于a(m(x,y),m(x,z)) 中性元素:对于x范围内的任何元素,a(0,x)等于x,并且m(1,x)等于x 否定:对于任何x在的范围内,存在着这样的y即a(x,y)是0 逆:对于任何x≠0在的范围内,存在着这样的y即m(x,y)是1 名称a和m只是示例;您可以使用其他名称或未命名的函数。答案的分数是和的字节长度之a和m。 如果您使用内置函数,也请用文字描述它产生的结果(例如,提供一个乘法表)。

20
打印/输出所有正数,其中十进制表示形式的每个多位数字子字符串也为质数。
任务 您的任务是打印或输出所有正数,其中十进制表示形式的每个多位数字子字符串也都是质数。如果该数字至少包含2位数字,则意味着该数字本身也需要为质数。 例 6197是序列中,因为每一个多位数的子串6197是素数,即:61,19,97,619,197,6197(本身)。 请注意,这6不是质数,但6197仍处于序列中,因为6它不是的多位数子串6197。 8也处于序列中,因为其中的每个多位数字子串8都是质数。里面没有多位数的子串8,所以这是虚无的事实。 眼镜 除了允许您对输出进行硬编码或将与输出有关的信息存储在程序中之外,存在标准漏洞。 输出中的数字可以任意顺序。 输出中的数字允许重复。 如果选择打印而不是输出,则可以使用任何分隔符。 你是允许的,如果你选择要打印的,而不是输出到前缀和/或后缀输出。 分隔符,前缀和后缀不得包含任何数字(U + 0030至U + 0039)。 全部列表(58个项目) 1 2 3 4 5 6 7 8 9 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 113 131 …

11
找到最伟大的路线
您将得到一个由整数组成的二维数组A,长度为N。您的任务是在数组中找到N个元素的直线(水平,垂直或对角线),该直线产生最高的总和,然后返回该总和。 例 N = 3, A = 3 3 7 9 3 2 2 10 4 1 7 7 2 5 0 2 1 4 1 3 该数组有34条有效行,其中包括 Vertical [3] 3 7 9 3 [2] 2 10 4 1 [7] 7 2 5 0 2 1 4 1 3 [3,2,7] …

15
将光盘上的点随机化
我读过某处的圆圈,现在才了解了光盘(这实际上是一个非常普遍的概念),并想到了代码高尔夫。 您的任务是将半径为1 的光盘上的一个点/几个点随机化。 规则: 所有点的产生概率必须相等 必须使用浮点坐标;最低要求是两位小数(例如点(0.12, -0.45)或(0.00, -1.00)有效) 如果程序实际显示边界圆和其中生成的点,则您将获得-20个字节。坐标仍然必须有效但不能显示,并且生成的图像大小必须至少为201 x 201像素 如果程序将要生成的点数作为标准输入的输入,则得到-5字节 如果您决定不绘制边界圆和点,则程序必须输出在格式(x, y)或格式上生成的点。(x,y)标准输出上 如果您决定将生成的点数作为输入,但不作图,则您的程序必须以上述格式输出所有随机化的点,中间必须有一个空格 以字节为单位的最短提交获胜!

9
我的Scopa手的分数是多少?
我喜欢纸牌游戏的挑战,所以我是为意大利纸牌游戏Scopa制作的。自古以来,我的家人就一直在玩这种游戏。它有一个非常有趣的计分系统,对高尔夫来说应该很有趣。我将在R中发布答案以开始乐趣,我相信人们会有所改善。 挑战:鉴于玩家在这一轮中捕获的卡牌作为输入,计算出Scopa回合中得分的数量。 Scopa牌组中有40张卡片。如果您使用的是国际牌,则删除8、9和10,在每套西装中保留A,2、3、4、5、6、7,Q,J,K。1有两个玩家或合伙企业,每轮比赛结束后,所有纸牌最终被两个玩家中的一个抓获。得分计算如下(此处有更多信息): 卡数最多的玩家得分1分。 拥有最多钻石(如果使用意大利套牌,则为硬币)的玩家获得1分。 拥有7颗钻石(或硬币)的玩家,称为sette bello或漂亮的7颗,得分为1分。 拥有最高级初阶球员的球员得到1分。玩家的原始分数是该玩家在每套西装中捕获的最高价值卡的分数总和(请参见下表)。如果每套西装中至少没有一张牌,即使您的得分超过对手的得分,您也会默认丢失。在极少见的情况下,每位球员都没有至少一张牌的情况下,具有较高初等总得分的球员得分。2 原始评分表 | Rank | Value | | ----- | ----- | | 7 | 21 | | 6 | 18 | | A | 16 | | 5 | 15 | | 4 | 14 | | 3 | 13 | | …

16
这个构造数字的启动器是什么?
许多编程语言通过将数字“连接”到现有数字的末尾来构造大整数。例如,迷宫或Adapt。通过将数字连接到末尾,我的意思是,如果现有数字为454545,并且数字为777,则结果数字为457(45×10+7)457(45×10+7)457\:(45 \times 10 + 7)。 构造的数目是可以通过使用单个数字的倍数来构建这样的数:1,2,3,4,5,6,7,8,91,2,3,4,5,6,7,8,91, 2, 3, 4, 5, 6, 7, 8, 9 AKA在这9个序列中的一个元素: 1,12,123,1234,12345,…1,12,123,1234,12345,…1, 12, 123, 1234, 12345, \: \dots 2,24,246,2468,24690,…2,24,246,2468,24690,…2, 24, 246, 2468, 24690, \: \dots 3,36,369,3702,37035,…3,36,369,3702,37035,…3, 36, 369, 3702, 37035, \: \dots 4,48,492,4936,49380,…4,48,492,4936,49380,…4, 48, 492, 4936, 49380, \: \dots 5,60,615,6170,61725,…5,60,615,6170,61725,…5, 60, 615, 6170, 61725, \: \dots …

12
天皇官邸
在中国古代,社会等级不是由出生或财富决定的,而是由一个人在科举考试中表现出色的能力决定的。天堂的神圣统治者翡翠皇帝号召所有臣民接受检查以确定他们的身价,然后由谁下达神圣的使命来统治中国。 官僚规则: Divine官僚机构由以0开头的非负整数值等级组成。官僚机构的每个成员(bot)都属于一个等级。每个等级可以容纳任意多个成员,但除非以上所有等级都为空,否则不能为空 游戏开始时,所有成员的等级均为0 每一次官僚机构的每个成员都必须参加考试。考试包括正确猜测列表的布尔值。列表的长度是该成员上方的等级编号。 试题由以上级别的随机成员准备。最高级别的成员直接从JadeEmperor(请参见下文)获得问题。 考试分数至少达到50%的会员有资格晋升。考试分数低于50%的成员有资格降级。 只有在以下等级中有晋升资格的成员代替其职位时,才有资格降级的成员的排名才降低一级。 只要没有排名空缺,所有有资格晋升的会员的等级都会提高一。 如果不是所有符合条件的成员都可以降级或晋升,则优先级将降到最低(降级)。最高(促销)分数。领带随机断裂。 成员等级每回合最多只能改变1。 游戏规则: 每个机器人在游戏开始时都会被随机分配一个ID,该ID在整个过程中不会改变。在JadeEmperor具有ID -1,其他所有的连续非负的ID,从0开始。 所有机器人同时竞争 游戏运行100圈,机器人的得分为其在那段时间内的平均排名。 总得分是通过运行1000场比赛并取平均结果而获得。 每个Bot是一个Python 3类,实现以下四个功能: ask(self,n,ID),它通过返回list长度为n的布尔值a进行检查。ID是必须猜测该列表的机器人的ID。ask()可以在一个机器人的单个回合中被多次调用,但一点也不被调用。 answer(self,n,ID),这是通过返回list长度为n的布尔值a来回答考试的尝试。ID是ask()生成检查的机器人的ID 。answer()每个机器人每轮准确调用一次。 update(self,rankList,ownExam,otherExams)一旦控制器执行了所有降级和降级,就会调用。它的参数是:整数列表,按所有漫游器的ID列出所有等级;一个由两个列表组成的元组,首先是考试问题,然后是漫游器给出的答案(以防万一它忘记了);然后是元组列表,类似地由考试答案对组成,这次是机器人执行的所有考试。 __init__(self, ID, n) 传递该机器人自己的ID和竞争机器人的数量。 允许类实现其他私有功能 明确允许定义其他变量,并使用它们存储有关过去考试的数据。 禁止编程元效果,这意味着任何直接访问其他机器人代码,控制器代码的尝试均会导致异常或类似情况。这是考试策略的竞赛,而不是代码黑客的竞赛。 明确允许尝试互相帮助的机器人,只要它们不通过元效应来做到,而是纯粹通过传递的信息来实现 update() 仅在其他语言可以轻松转换为Python 3的情况下才允许使用其他语言。 库numpy将作为导入np。版本是1.6.5,这意味着它使用了旧的随机库。如果您有numpy 1.7,则可以使用旧功能numpy.random.mtrand进行测试。请记住要剥离mtrand以便提交。 如果机器人在运行时导致异常,则该机器人不合格。任何代码过于混乱以至于无法确定何时在调用ask()或时answer()都不会生成长度为n的列表的bot 也会被抢先取消资格。强制我进行深度复制输出的机器人的得分为-1。 类名必须唯一 每个人可以使用多个漫游器,但是仅采用最新版本的迭代更新漫游器。 由于关于机器人相似性似乎有些困惑: 您无权发布其他漫游器的副本。这是真正适用于此挑战的唯一 标准漏洞。 您可以与其他机器人(包括其他人的机器人)共享代码。 您不得提交从另一只由一个微不足道的变化的策略(如种子为出题的变化)不同的机器人,除非你能证明这种抄送机器人的数量是成功所需的最小制定他们的策略(通常是两个机器人进行合作)。 示例机器人: 的JadeEmperor始终是比赛的一部分,但不竞争; 他是最高级别的机器人考试的生成器。他的考试是随机的,但不是统一的考试,目的是让智能机器人有进步的方法。 class JadeEmperor: …

9
Fivenum和一点
(一个悖论,一个悖论,一个最巧妙的悖论) 这是受不同R函数启发的多部分系列的第一部分。 任务 给定一个数据集ddD正整数,我需要你计算5号汇总的ddD。但是,我正在处理大型数据集,因此我需要您的代码尽可能小,以便将其存储在计算机上。 这五个数字摘要包括: 最低值 第一四分位数(Q1) 中位数/第二四分位数(Q2) 第三四分位数(Q3) 最大值 定义四分位数的方法有几种,但是我们将使用R实现的方法: 定义: 最小值和最大值:分别为最小值和最大值。 中位数:如果中间值ddD有奇数个条目,和两个中间最值的算术平均值,如果ddD有条目的偶数。请注意,这意味着中位数可能是非整数值。我们之前不得不计算中位数。 第一和第三四分位数:如果ddD的条目数为奇数,则将数据分为两半,包括每一半的中心元素,并找到每一半的中位数。下半部分的中位数是第一四分位数,上半部分的中位数是第三四分位数。 例子: d = [ 1 ,2 ,3 , 4 ,5 ]d=[1个,2,3,4,5]D=[1,2,3,4,5]。中位数为然后333,而下半部分是[ 1 ,2 ,3 ][1个,2,3][1,2,3],得到的第一四分位数222,和上半部是[ 3 ,4 ,5 ][3,4,5][3,4,5],得到的第三四分位444。 d = [ 1 ,3 ,3 ,4 ,5 ,6 , 7 ,10 ]d=[1个,3,3,4,5,6,7,10]D=[1,3,3,4,5,6,7,10]。中值是4.54.54.5,而下半部分是[ 1 ,3 ,3 …

8
发起政变成为山丘之王!
排行榜 154 Calculator 144 Taxman 138 Statistician 137 Solver 137 RandoAggroLawyer 136 Gambler 134 Turncoat 119 Lawyer 119 BloodyMurder 113 Bandit 79 Challenger 74 Mask 64 Random 提供了最新匹配的存档,包括日志和所有输出文件。 Brilliand的计算器是赢家!他的回答已被接受,但这并不意味着挑战已经结束。随时提交新条目或编辑您当前的条目,并尝试将他从王位上撤下。我将在本月底向领导奖赏。 比赛规则 Coup是一款专为2-6位玩家设计的纸牌游戏,我们将与两名玩家一起玩。它由一个金库(对于我们而言是无限的)和一副15张卡片组组成,每张卡片包含以下3种类型:大使,刺客,上尉,孔戴萨,杜克。游戏开始时,每位玩家将获得一枚硬币,并随机发两张牌,直到必要时,他们都会对其保密。目标是成为手中拿着牌的最后一个玩家。 在轮到自己时,玩家可以不考虑其牌而采取以下操作之一: 收入:从金库中取出1个硬币。不可阻挡且不可挑战。 外国援助:从金库中取出2个硬币。可以被玩家与杜克封锁。勇往直前。 政变:从游戏中移除您选择的一个对手的卡牌。花费7个硬币。受害人可以选择丢弃哪张卡。如果玩家在回合开始时拥有10个或更多硬币,则他们必须发动政变。不可阻挡且不可挑战。 根据自己的牌,玩家还可以在回合时采取以下其中一项操作: 交换:带大使的玩家可以从套牌中拿出两张牌。然后,他们可以从手牌和抽牌中选择与原来数量一样多的牌。(也就是说,如果他们只有一张卡,则可以将其交换为一张已抽出的卡或保留它;如果他们有两张卡,则可以选择四张卡中的任意两张。)两张不需要的卡将退回到卡组中。不可阻挡,但具有挑战性。 暗杀:具有刺客的玩家可以花费3个硬币从游戏中删除对手的卡牌。受害人可以选择丢弃哪张卡。可以由一名持孔戴莎游戏的玩家阻止,在这种情况下,不会退还硬币。具有挑战性,在这种情况下,硬币将被退回。 偷:拥有队长的玩家可以从对手那里拿走两枚硬币。如果对手拥有一枚硬币,他们将拿走一枚硬币。如果对手的硬币为零,则他们可能不会偷。可能会被一名带大使或队长的球员阻挡。具有挑战性。 税:拥有杜克大学的球员可以从国库中取出3个硬币。不可阻挡,但具有挑战性。 政变的棘手部分是允许玩家撒谎他们所拥有的卡!不需要卡就可以尝试执行与之相关的操作或阻止。 当玩家执行纸牌动作时,任何对手(甚至没有受到该动作伤害的对手)都可以挑战演员并说他们不相信自己拥有该纸牌。如果挑战者是正确的,则该动作将被取消,并且参与者必须丢弃他们选择的一张卡(如果适用,则收回他们花费的所有硬币)。如果不是,则采取该动作,演员将被挑战的卡退还给甲板并抽出一张新卡,挑战者必须丢弃其中一张卡。玩家必须诚实面对挑战时所持的牌。 从暗杀,政变和失败的挑战中被淘汰的卡牌不会返回到副牌组,但作为获胜挑战的一部分而显示的卡牌会被返回到副牌组。 障碍可能像行动一样受到挑战。例如,如果玩家A要求外国援助,而玩家B说“我有杜克大学,而我阻止了您的外国援助”,则A可能会说“我不相信您有杜克大学”。如果这个说法是正确的,则B因被骗而丢了一张卡,A拿了2个硬币;如果不是这样,则A会丢失一张牌,并且不会获得硬币,B则必须将其公爵归还给甲板并抽取一张新卡。 必须充实与刺客合作的障碍和挑战方式。假设玩家A说“我有一个刺客,而我暗杀了玩家B”。如果B不尝试挑战或阻止A,那么暗杀将继续进行:B丢了一张牌,A支付了3个硬币。 另外,B可以通过说“我不相信你有刺客”来挑战。如果是这样,则A丢弃一张卡并返回其硬币,而B不受影响,并且A的回合结束。如果B的信念是错误的,并且A持有刺客,那么B会丢掉他们的所有牌并失败,一张是针对不正确的挑战,另一张是来自暗杀。 B不用挑战,而可以说“我有一个伯爵夫人,我阻止了暗杀者”。如果A相信B,那么A的回合结束并且他们的硬币不退还。但是A可以挑战障碍并说“我不相信您有伯爵夫人”。如果B实际上确实持有Contessa,则A会因错误的挑战而丢掉一张牌。但是,如果B不这样做,则B会因为被撒谎而丢掉一张卡,而从暗杀中又损失一张。 与上述解释类似的逻辑也适用于机长的偷窃能力,在这种情况下可以挑战动作或障碍。 如果您没有成功地暗杀一名暗杀者,或者被误认为声称自己有一名孔戴莎来阻止暗杀,则有可能丢掉您的两张牌并在一个回合中被淘汰。您从挑战中丢失了一张卡,而在暗杀中丢失了一张卡。 挑战 …

30
向零舍入
这是一个简单的任务。给定正或负实数,将其四舍五入为接近零的下一个整数。 挑战 通过任何正数或负实数的合理形式(stdin,函数等)进行输入。 将此数字四舍五入为“接近零”-这意味着,如果为正数,则将四舍五入;如果为负数,则将四舍五入。 返回该数字或将其输出到控制台。 测试用例 1.1 => 1 -1.1 => -1 500.4 => 500 -283.5 => -283 50 => 50 -50 => -50 规则 这是代码高尔夫,因此最少得分(以字节为单位)获胜。 注意标准漏洞。 玩得开心! 更多吉米挑战即将来临

6
保存我的秘密!
我有很多秘密,无处可保留! 目标很简单:编写一个程序,让您保存字符串并用密码保护它。 该程序将使用别名,密码和(可选)机密作为参数。 如果这是第一次使用给定的别名调用程序,则它将存储/记住机密,并输出所需的内容。 如果使用以前使用过的别名调用该程序,则当密码与使用该别名第一次运行该程序的密码相同时,它将输出该别名的秘密。 其他情况 如果它是第一次使用某个别名被调用而没有给出任何秘密,则不存储任何内容。 如果使用已使用的别名调用程序,并且密码不正确-请返回任何错误或完全不返回任何错误。 如果使用已使用的别名调用该程序,则密码正确并提供了一个新机密-输出旧机密并将其替换为新机密,以便下次仅输出新机密。 如果使用已使用的别名调用该程序,则密码正确且不提供新的密码-输出旧密码并确保不会被替换。 注意:这些机密/密码不需要安全存储 另请注意:别名,密码和机密的任何字母数字输入都应被接受 适用标准规则,祝您好运!

3
弥合差距
给定具有白色背景和一组黑点的黑白图像,将一组白色像素绘制为红色,以便每对黑色像素之间都有一条路径。 细节 路径是一组连接的像素(8邻域连通性)。黑色像素可以用作路径的一部分。目标是在上述条件下尽量减少红色像素的集合,并输出相应的图像。 你不必须找到最佳的解决方案。 一个平凡而又最糟糕的解决方案就是将所有白色像素都涂成红色。 示例(为可视性将像素放大): 细节 给定一个像素图像(采用任何合适的格式),则返回另一个图像,该图像具有如上所述连接的点以及一个整数,该整数指示使用了多少个红色像素。 分数是14个测试用例的每一个的乘积((1 +红色像素的数量))。 目标是得分最低。 测试用例 14个测试用例如下所示。可以在此处找到用于验证输出连接性的python程序。 元 感谢@ Veskah,@ Fatalize,@ wizzwizz4和@trichoplax的各种建议。

4
在韩文两组键盘和qwerty键盘之间转换
介绍 它有点像DVORAK键盘布局,但要难得多。 让我们先谈谈韩文键盘。正如您在Wikipedia中看到的那样,有一个Kor / Eng键可以在韩文和英文键集之间进行切换。 韩国人有时输入错误:他们试图在qwerty键盘上用韩语书写,或者在两组键盘上用英语书写。 因此,这就是问题所在:如果给定在两组键盘中输入的韩语字符,请将其转换为在qwerty键盘中键入的字母字符。如果使用qwerty输入了给定的字母字符,请将其更改为两组键盘。 两件套键盘 这是两套键盘布局: ㅂㅈㄷㄱㅅㅛㅕㅑㅐㅔ ㅁㄴㅇㄹㅎㅗㅓㅏㅣ ㅋㅌㅊㅍㅠㅜㅡ 并使用shift键: ㅃㅉㄸㄲㅆㅛㅕㅑㅒㅖ 仅第一行发生变化,而其他行则保持不变。 关于韩文字符 如果到此结束,这可能很容易,但是没有。当您键入 dkssud, tprP! 输出不会以这种方式显示: ㅇㅏㄴㄴㅕㅇ, ㅅㅔㄱㅖ! 但是这样: 안녕, 세계!(means Hello, World!) 这使事情变得更加困难。 朝鲜语字符分为三部分:“宗城(辅音)”,“正城(元音)”和“正城(音节结尾的辅音:可以为空白)”,您必须将其分开。 幸运的是,有办法做到这一点。 如何分开 朝鲜有19个成城,21个成城和28个成城(带空白),0xAC00是朝鲜语的第一个字符“가”。使用此功能,我们可以将朝鲜语字符分为三个部分。这是两个键盘中每个键盘的顺序及其位置。 选择顺序: ㄱㄲㄴㄷㄸㄹㅁㅂㅃㅅㅆㅇㅈㅉㅊㅋㅌㅍㅎ r R s e E f a q Q t T d w W c z …

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.