编程拼图和代码高尔夫

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

19
厄米矩阵?
请注意,此挑战不需要处理或理解复数。 给定一个非空方阵,其中每个元素都是一个由两个元素组成的(Re,Im)整数列表,请确定(给出任何真伪值或任何两个一致值)这是否代表一个埃尔米特矩阵。 注意,输入是一个3D整数数组。不是复数的2D数组。如果您的语言不能直接采用3D数组,则可以采用平面列表(如果有帮助,可以使用n×n或n×n×2形状)。 如果矩阵等于其自身的共轭转置,则为Hermitian。换句话说,如果将它跨过其左上角到右下角的对角线,并取反所有两个元素的叶列表的第二个元素,则它与输入矩阵相同。请注意,翻转和否定的顺序无关紧要,因此您可以先取反,然后再取反。 步行示例 本示例使用带有多余空白的JSON来简化阅读: [[ [2, 0] , [2, 1] , [4, 0] ], [ [2,-1] , [3, 0] , [0, 1] ], [ [4, 0] , [0,-1] , [1, 0] ]] 转置(跨NW-SE对角线翻转): [[ [2, 0] , [2,-1] , [4, 0] ], [ [2, 1] , [3, 0] …

15
在任意(受限制的)无穷集与无序对之间设计一个交换式内射函数
相关,但这只需要正整数,而不必是可交换的 Cantor配对功能在此Wikipedia文章中进行了描述。本质上,这是一种操作,当将其应用于两个值X和Y时,只要给出结果,就可以获得原始值X和Y。 您的任务是设计两个功能:一个执行X, Y -> Z,另一个执行Z -> X, Y。X, Y -> Z要注意的是:必须是可交换的。这意味着Z -> X, Y将无法确定输入是X, Y还是Y, X。 这个挑战的正式定义是: 选择一个可数的无穷大数字S。 设计执行以下任务的两个功能: 给定S中的无序值对,则返回S中的值 给定初始函数的返回值,返回无序的一对值,当通过第一个函数时,该值对将得出输入整数。如果输入不是第一个函数的返回值,则我不关心此反函数的行为。 要求 运行之间的结果应相同。 {a, a} 是无序对 注意:如果您提供证据,您的答案更有可能获得我的支持,但是当我获得答案时,我会进行测试,并在相当确定的情况下对其进行支持。

18
Japt高尔夫技巧
既然我已经完全沉迷于Code Golf,那么现在大概是时候尝试一些高尔夫语言了。 鉴于我几乎只使用JavaScript进行游戏,因此Japt似乎是一门逻辑语言。我将在下一次获得的机会中深入阅读文档,但与此同时,请在下面的答案中发布您对Japt的任何建议。 因为我通常是Japt和高尔夫语言的初学者,所以如果可以的话,如果可以将技巧“翻译”为JavaScript,那将对我有所帮助有很大帮助。
18 code-golf  tips  japt 

23
用n显示n
我想要的是: 非常简单,我想要一个基于文本的显示,要求输入n,然后在显示上显示该值!但是有一个陷阱。每个“真实”“像素”(填充的像素)都必须用该数字表示n。 范例: 系统会为您提供输入n。您可以假设n将是一个数字 Input: 0 Output: 000 0 0 0 0 0 0 000 Input: 1 Output: 1 1 1 1 1 Input: 2 Output: 222 2 222 2 222 Input: 3 Output: 333 3 333 3 333 Input: 4 Output: 4 4 4 4 444 4 4 Input: …

2
玩Yahtzee游戏
在Yahtzee游戏中,玩家轮流滚动5个6面骰子,每回合最多3次,有可能在掷骰子之间节省骰子,然后选择他们希望用于掷骰子的类别。这将继续进行,直到没有其他类别(在13圈之后发生)。然后,计算出玩家的分数,得分最高的玩家获胜。 类别如下(“骰子总和”是指将指定骰子上的点数相加): 上段 王牌:骰子总和显示1点 二进制补码:骰子的总和示出2点 Threes:骰子总和显示3点 Fours:骰子总和显示4点 法夫:骰子总和显示5点 Sixes:骰子总和显示6点 下段 三种:3个相同价值的骰子,总和是所有骰子的总和 同一样四个:4个相同值的骰子,总和是所有骰子的总和 客满:3个骰子带一个值,另外2个带另一个值,得分为25 小直:4个连续骰子,得分为30 大直:5个连续骰子,得分为40 Yahtzee:所有5个相同价值的骰子,得分为50 机会:骰子的任何组合,分数是所有骰子的总和 关于类别选择,有一些规则: 如果玩家选择与自己的掷骰不符的类别,则该类别的得分为0。 如果玩家在上半部分至少获得63分,他们将获得35点奖励积分。 如果玩家掷出Yahtzee,但Yahtzee类别已经被占用(另一个Yahtzee-错过0则不计入),他们将获得100分的奖励。此奖金是在第一个Yahtzee之后颁发的。 此外,玩家还必须选择填写类别。他们必须选择与他们的掷骰相对应的上半部分类别(例如,在Sixes类别中必须放置5 6的掷骰)。如果已经使用了对应的上节类别,则Yahtzee可以用于下节类别(在这种情况下,选择“满屋”,“小平直”或“大平直”将奖励正常数量的积分,而不是0分)。如果采用了所有下半部分类别,则Yahtzee可以应用于得分为0的未使用的上半部分类别。 挑战 在此挑战中,竞争对手将参加Yahtzee的1000场比赛。每场比赛结束时,得分最高的参赛作品将获得1分。所有游戏结束后,得分最高的作品将获胜。如果出现平局,将仅使用并列提交项来玩其他游戏,直到并列打破。 控制者 完整的控制器代码可在此GitHub存储库中找到。以下是玩家将与之互动的公共接口: public interface ScorecardInterface { // returns an array of unused categories Category[] getFreeCategories(); // returns the current total score int getScore(); // returns …

2
被包围的东西
我一直想用#s 包围一些文本,但是我很难弄清楚我所包围的内容,因此在此挑战中,您将编写一个程序来做到这一点 例子 输入/输出用换行符分隔。 ### #a# ### a # #a# # a ### # a # # b c # ####### a b c ABCDHIJ E####GK F# M #L # N#O P#### M N ###A### #C#B#o# #d###e# # go# ### C o d e go 规格 #s是什么“包围”文本块 # 将始终彼此相邻(包括对角线) # …
18 code-golf  string 

5
这个数字是随机的吗?
我问random.org为0和2之间的128个随机整数32 - 1。由于随机数生成器是如此渴望先给第64号,他们显然更随机比其他64。 编写一个完整的程序或函数,当输入以下64个整数之一时,该函数将返回真实结果: [1386551069, 1721125688, 871749537, 3410748801, 2935589455, 1885865030, 776296760, 614705581, 3841106923, 434616334, 1891651756, 1128215653, 256582433, 310780133, 3971028567, 2349690078, 489992769, 493183796, 3073937100, 3968540100, 777207799, 515453341, 487926468, 2597442171, 950819523, 1881247391, 3676486536, 3852572850, 3498953201, 2544525180, 297297258, 3783570310, 2485456860, 2866433205, 2638825384, 2405115019, 2734986756, 3237895121, 1560255677, 4228599165, 3106247743, 742719206, 2409129909, 3008020402, 328113612, 1081997633, …

1
实施谜机
谜机是德国人和其他人用来加密其消息的相当复杂的密码机。实施此机器是您的工作*。 步骤1,旋转 我们的enigma机器有3个转子槽,每个槽有5个可用转子。每个转子都有26个不同的可能位置(从A到Z)。每个转子都有一个预定的缺口位置: Rotor Notch ------------ 1 Q 2 E 3 V 4 J 5 Z 按键时会发生以下步骤: 插槽1中的转子旋转 如果插槽1中的转子经过其槽口,则它将旋转插槽2中的转子。 如果插槽2中的转子在其槽口中(但不只是在那里移动),则转子2和3都会旋转一次。 如果我们使用转子1,3,5和他们中的位置P,U,H,然后位置的顺序是:P,U,H> Q,U,H> R,V,H>S,W,I 步骤2,替代 每个转子执行简单的字符替换。下图是该A位置的每个转子的图表: ABCDEFGHIJKLMNOPQRSTUVWXYZ -------------------------- 1 EKMFLGDQVZNTOWYHXUSPAIBRCJ 2 AJDKSIRUXBLHWTMCQGZNPYFVOE 3 BDFHJLCPRTXVZNYEIWGAKMUSQO 4 ESOVPZJAYQUIRHXLNFTGKDCMWB 5 VZBRGITYUPSDNHLXAWMJQOFECK R YRUHQSLDPXNGOKMIEBFZCWVJAT 转子1在位置T is处PAIBRCJEKMFLGDQVZNTOWYHXUS,它将用字母C代替I。 在三个转子进行替换后,反射器受到撞击(如上R所列)。它执行自己的替换,然后通过转子将信号反射回去。然后,转子以相反的顺序执行反向替换。 的是,代替转子1代反向替换装置A用E,它可以代替E与A 插槽中的转子1,2,3均已安装到位A。该字母Q沿Q>X>V>M通过转子的路径移动。 M反映到O,然后遵循的反向路径O>Z>S>S。因此,A用代替S。 输入输出 您通过了: 3个转子的列表(整数) 3个起始转子位置的列表(以字母表示) 需要加密的字符串。 …

4
走这条路
挑战在于遵循(绘制)路径: ^n -上n行 vn -下降n行 >n -按n个字符位置 <n -左n个字符位置 n是一个大于零的整数(即,您不会收到像这样的命令>-2)。 命令之间没有分隔符,格式正确的输入如下所示:>5v8<10^3,不允许其他形式的输入。 命令的数量是无限的。 不应再有其他字符潜入输入中。 例子。 输入是一个空字符串,输出: * 输入是>3或<3:请注意,这与输出没有任何区别: **** 与^3和类似v3: * * * * 输入:>1v2,输出: ** * * 输入:^4>3v2<1,输出: **** * * * ** * * 如果返回并使用相同的路径,请不要绘制任何新内容。例如>5<5 ****** ...虽然您没有画任何新东西,但显然可以改变位置。因此,如果您的输入如下所示:>4<2v3,则输出为: ***** * * * 这是一个更复杂的示例:1)路径可以穿过自身2)注意,最后一条命令的最后三个步骤将整个路径向右移动。输入:v6>4^3<7,输出: * * * ******** * * * …

9
从RNA到蛋白质的翻译
RNA和DNA一样,是在细胞中编码遗传信息的分子。它由核苷酸组成,由碱基腺嘌呤(A),胞嘧啶(C),鸟嘌呤(G)和尿嘧啶(U)表示。* 密码子是三个核苷酸的序列。 蛋白质是具有多种功能的大分子,例如在头发和指甲中发现的角蛋白和在血细胞中携带氧气的血红蛋白。它们由氨基酸组成,氨基酸在RNA分子中被编码为密码子。有时,不同的密码子可能编码相同的氨基酸。每个氨基酸通常由单个字母表示,例如H代表组氨酸。 给定一个序列ACGU,可以将其翻译成相应的蛋白质字符串吗? * DNA由ACGT组成,其中T为胸腺嘧啶。在DNA到RNA转录过程中,胸腺嘧啶被尿嘧啶替代。 输入值 输入将是仅包含ACGU大写字符的单个字符串。您可以为此挑战编写函数或完整程序。 输出量 您可以选择通过打印或返回字符串来输出(后一种选择仅在函数的情况下可用)。 翻译应该开始以起始密码子(AUG表示为M)并且结束于终止密码子(之一UAA,UAG或UGA表示为*)。在四种情况下,输入可能无效: 输入不以起始密码子开头 输入不以终止密码结尾 输入的长度不是3的倍数 输入的结尾处包含终止密码子 在所有这些情况下,Error都应输出。请注意,与终止密码子不同,起始密码子可能会在字符串开头之后出现。 否则,您应该通过以下RNA密码表将每个密码转换为各自的氨基酸: * UAA UAG UGA A GCU GCC GCA GCG C UGU UGC D GAU GAC E GAA GAG F UUU UUC G GGU GGC GGA GGG H CAU CAC I AUU AUC AUA …

5
打高尔夫球ASCII艺术的技巧
我认为PPCG上的ASCII艺术问题很有趣,但是我个人认为这可能很难,尤其是当该问题标记为code-golf时。 我想知道这里是否有人会提供一些对产生ASCII艺术有用的技巧。 简单地排列字符很容易,但是使用(简短)算法,事情将变得更加复杂。 我说的是ASCII艺术,例如: 文本转ASCII文字(字符) 图片(徽标或图标) 我只是在寻找一般性提示,但是允许使用特定于语言的提示,因为大多数提示都可以翻译。

8
建立一个“ BizzFuzz”程序
在传统的FizzBu​​zz中,系统会要求您打印1到100之间的数字,但用“ Fizz”替换3的每一个倍数,用“ Buzz”替换5的每一个倍数,而将3和5(即15)的每一个倍数都用“ FizzBu​​zz”。 但是,作为一个邪恶的面试官,我发明了自己的FizzBu​​zz版本,我决定将其命名为BizzFuzz,并通过编码面试提供给您。 游戏规则是: 打印从1到100的每个数字,除非该数字满足以下条件之一。 如果数字可被4整除,则打印“ Fizz”。 如果数字可被5整除,则打印“嗡嗡声”。 如果数字可被4整除,但紧随其后的数字可被5整除,请打印“ FizzBu​​zz”而不是“ Fizz”,并定期打印下一个数字。 如果数字可被5整除,但紧随其后的数字可被4整除,则打印“ BuzzFizz”而不是“ Buzz”,并定期打印下一个数字。 如果该数量是立即前通过两个4和5的数整除,打印“BIZZ”。 如果该数字紧接在 4和5可除的数字之后,则打印“ Fuzz”。 如果数字可以同时用4和5整除,则打印“ BizzFuzz”。 以任何语言实现所有这些规则的最短代码胜出。

10
Bentley的编码挑战:k个最常见的单词
这也许是1986年引起共鸣的经典编码挑战之一,当时专栏作家Jon Bentley邀请Donald Knuth编写一个程序,该程序可以在文件中找到k个最常见的单词。Knuth在一个8页长的程序中使用哈希尝试实现了一种快速解决方案,以说明他的识字编程技术。贝尔实验室的道格拉斯·麦克罗伊(Douglas McIlroy)批评克努斯(Knuth)的解决方案甚至无法处理圣经的全文,并回答了这么短的单行代码,但完成了工作: tr -cs A-Za-z '\n' | tr A-Z a-z | sort | uniq -c | sort -rn | sed 10q 1987年,普林斯顿大学教授发表了后续文章,提出了另一种解决方案。但是,即使是一部圣经,它也无法返回结果! 问题描述 原始问题描述: 给定一个文本文件和一个整数k,您将以降低的频率打印文件中的k个最常见的单词(及其出现的次数)。 其他问题说明: Knuth将一个单词定义为一串拉丁字母: [A-Za-z]+ 其他所有字符均被忽略 大写和小写字母被认为是等效的(WoRd== word) 文件大小和字长无限制 连续单词之间的距离可以任意大 最快的程序是使用总CPU时间最少的程序(多线程可能无济于事) 样本测试用例 Test 1: Ulysses by James Joyce concatenated 64 times (96 MB file). 从古腾堡计划中下载《尤利西斯》:wget …

2
计数多带
多条带是符合以下规则的多氨基酸的子集: 每块由1个或多个单元组成 没有一个单元可以有两个以上的邻居 电池不应围成一个洞 当自由多胺基不是另一个(可以拾取和翻转)的刚性转换(平移,旋转,反射或滑行反射)时,它们是不同的。平移,旋转,反射或滑动以反映自由多米诺骨牌不会改变其形状(Wikipedia) 例如,有30个免费的七边形带(长度为7的多带)。这些都是14x15的网格。 图片来源:Miroslav Vicher 目标 编写一个程序/函数,将正整数n作为输入并枚举不同的自由多n带。 n = 1-> 1(一个正方形) n = 2-> 1(只有一个可能的由2个正方形组成的2折带) n = 3-> 2(一个由3个正方形连接成一条直线,另一个为L形) n = 4-> 3(一个直线,一个L形和一个Z形) 。。。 测试用例: n polystrips 1 1 2 1 3 2 4 3 5 7 6 13 7 30 8 64 9 150 10 338 …

6
辅助因子矩阵
辅因子矩阵是Adjugate矩阵的转置。该矩阵的元素是原始矩阵的辅因子。 辅因子(即第i行和第j列的辅因子矩阵的元素)是通过从原始矩阵中删除第i列和第j列乘以(-1)^(i + j)形成的子矩阵的行列式。 例如,对于矩阵 第1行和第2列的辅助因子矩阵的元素为: 您可以在此处找到有关矩阵行列式是什么以及如何计算它们的信息。 挑战 您的目标是输出输入矩阵的辅因子矩阵。 注意:允许使用用于评估辅因子矩阵,辅助矩阵,行列式或类似物的内置函数。 输入值 可以以STDIN最适合您使用的语言的方式或以任何方式将矩阵作为命令行参数,函数参数输入。 矩阵将被格式化为列表列表,每个子列表对应于一行,其中包含从左到右排序的因子。行在列表中从上到下排序。 例如矩阵 a b c d 将以表示[[a,b],[c,d]]。 如果适合您的语言并且明智(例如((a;b);(c;d))),则可以用其他方式替换方括号和逗号。 矩阵将仅包含整数(可以为负数)。 矩阵将始终为正方形(即行和列的数量相同)。 您可以假设输入将始终是正确的(即,没有格式问题,除整数外没有其他问题,没有空矩阵)。 输出量 所得的辅助因子矩阵可以输出到 STDOUT函数,从函数返回,写入文件或任何自然适合您使用的语言的东西。 辅助因子矩阵的格式必须与输入矩阵的给出完全相同,例如[[d,-c],[-b,a]]。如果读取字符串,则必须返回/输出一个字符串,在该字符串中,矩阵的格式应与输入中的格式完全相同。如果您使用诸如列表列表之类的内容作为输入,那么您也必须返回列表列表。 测试用例 输入: [[1]] 输出: [[1]] 输入: [[1,2],[3,4]] 输出: [[4,-3],[-2,1]] 输入: [[-3,2,-5],[-1,0,-2],[3,-4,1]] 输出: [[-8,-5,4],[18,12,-6],[-4,-1,2]] 输入: [[3,-2,7,5,0],[1,-1,42,12,-10],[7,7,7,7,7],[1,2,3,4,5],[-3,14,-1,5,-9]] 输出: [[9044,-13580,-9709,23982,-9737],[-1981,1330,3689,-3444,406],[14727,7113,2715,-9792,414],[-28448,-2674,-707,16989,14840],[-2149,2569,-2380,5649,-3689]] 计分 这是代码高尔夫球,因此最短的答案以字节为单位。

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.