Questions tagged «code-golf»

Code-golf是在最小的源代码字节中解决特定问题的竞赛。

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”。 以任何语言实现所有这些规则的最短代码胜出。

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]] 计分 这是代码高尔夫球,因此最短的答案以字节为单位。

1
玩一个完美的2048游戏
您的工作是模拟一个数学上完美的2048游戏。其想法是找到2048游戏可以进行的理论上限,并找到达到该水平的方法。 要了解其外观,请尝试使用此2x2克隆并尝试获得68分。如果这样做,最终将得到2、4、8和16磁贴。超越这一点是不可能的。 就像此clone一样,您可以轻松选择任务,因为它们可以选择生成瓦片的位置及其值。 您必须编写一个程序或函数,接受2048板作为输入,并输出带有生成的图块的图板和折叠图块后的图板。例如: Input: ------- 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 8 Output: ------- 0 0 0 0 0 0 0 0 0 0 0 0 0 4 8 8 0 0 0 0 0 0 0 0 0 0 …

3
打高尔夫球的数字大于装载机的数字
作为输出量超过Graham数和Golf数大于TREE(3)的最短终止程序的后续程序,我提出了一个新的挑战。 装入程序的数量非常大,很难解释(因为它本身是具有灵活目标的代码高尔夫练习的结果)。有一个定义和解释在这里,但自我封闭的目的,我将试图在这个帖子后面解释它。 Ralph Loader所使用的算法可产生有史以来最多的(可计算的)算法之一!实际上,Loader的号码是Googology Wiki上最大的“可计算”号码。(“可计算”数字是指根据计算定义的数字。)这意味着,如果答案以有趣的方式生成的数字大于Loader的数字(即不只是Loader的数字+1),您可以在谷歌历史!话虽如此,产生类似Loader的number + 1之类的程序绝对是这个问题的有效答案和竞争者。只是不要期望任何名气。 您的工作是创建一个终止程序,该程序产生的数字大于 Loader的数字。这是代码高尔夫球,所以最短的程序会获胜! 您不允许输入。 您的程序最终必须确定性终止,但是您可以假定计算机具有无限的内存。 您可能会假设您的语言的数字类型可以包含任何有限值,但是需要解释一下它在您的语言中的确切工作方式(例如:浮点数具有无限精度吗?) 不允许将无穷大作为输出。 数字类型的下溢引发异常。它不会环绕。 您需要提供一个解释,说明为什么您的电话号码如此之大以及代码的版本不正确,以检查您的解决方案是否有效(因为没有计算机具有足够的内存来存储Loader的电话号码)。 因此,这里是装载机编号的说明。有关更精确的详细信息,请参见http://googology.wikia.com/wiki/Loader%27s_number及其链接。特别是,它包含一个程序,该程序可以准确地生成Loader的编号(根据定义)。 该结构的微积分本质上是一种编程语言,它的特殊性质。 首先,每个句法有效的程序都会终止。没有无限循环。这将非常有用,因为这意味着如果我们运行任意的构造程序演算,我们的程序将不会卡住。问题在于,这意味着构造的演算尚未完成图灵的计算。 其次,在非图灵完整语言中,它是最强大的语言之一。本质上,如果您可以证明图灵机在每个输入上都将停止,则可以在构造演算中模拟该功能的函数。(这并不能完成巡视,因为您无法证明正在停止的巡回机器已经停止。) 装入程序的编号本质上是用于构造演算的忙碌的海狸编号,由于所有coc程序均终止,因此可以计算该编号。 特别是,loader.c定义了一个名为的函数D。大约D(x)在所有小于的位串上进行迭代x,将它们解释为coc程序,运行语法上有效的程序,并将结果(也将是位串)连接起来。它返回此串联。 加载程序的编号为D(D(D(D(D(99)))))。 来自Googolology Wiki的更具可读性的代码副本 int r, a; P(y,x){return y- ~y<<x;} Z(x){return r = x % 2 ? 0 : 1 + Z (x / 2 );} L(x){return x/2 >> Z(x);} …

7
高斯飞往爱森斯坦
给定一个高斯整数,其中,是整数,并且是虚数单位,返回最接近的(爱荷华氏距离的wrt)爱森斯坦整数其中,是整数,。a + b 我a+bia+bi一种aabbbi = 经验(π我/ 2 )i=exp⁡(πi/2)i = \exp\left(\pi i/2\right)ķ + 升ωk+lωk+l\omegaķkk升llω = 经验(2 πi / 3 )= (− 1 + i 3–√)/ 2ω=exp⁡(2πi/3)=(−1+i3)/2\omega = \exp(2\pi i/3) = (-1+i\sqrt{3})/2 背景 很明显,每个高斯整数可以唯一地用,整数表示为。它不是那么明显,但仍然如此:任何艾森斯坦整数能唯一被写为与,整数。它们都形成复数内的 -模数,并且分别是或的第p个环原子整数。注意a + b 我a+bia+bi一种aabbbķ + 升ωk+lωk+l\omegaķkk升llZZ\mathbb{Z}p=2p=2p=23333+2i≠3+2ω3+2i≠3+2ω3+2i \neq 3+2\omega 资料来源:commons.wikimedia.org 细节 如果给定的复数具有两个或三个最接近的点,则可以返回任何一个。 复数以直角坐标(bass)给出,但不是以任何方便的格式(例如或或类似形式)给出。(1,i)(1,i)(1,i)(A,B)A+BiA+B*1j 爱森斯坦整数必须作为基数坐标返回但不是以任何方便的格式(如or 或etc)返回。(1,ω)(1,ω)(1,\omega)(K,L)K+LωK+L*1ω 例子 所有实整数显然应该再次映射到实整数。 6,14 -> …

7
查找适合一组和的数组
考虑A长度数组n。该数组仅包含正整数。例如A = (1,1,2,2)。让我们将定义f(A)为的所有非空连续子数组之和的集合A。在这种情况下f(A) = {1,2,3,4,5,6}。产生步骤f(A) 如下: 的子阵列A是(1), (1), (2), (2), (1,1), (1,2), (2,2), (1,1,2), (1,2,2), (1,1,2,2)。它们各自的总和为1,1,2,2,2,3,4,4,5,6。因此,您从此列表中获得的集合是{1,2,3,4,5,6}。 任务 给定一组S以排序顺序给出的和,仅包含正整数和一个数组长度n,您的工作是输出至少一个X这样的数组f(X) = S。 例如,如果S = {1,2,3,5,6}and,n = 3则有效输出为X = (1,2,3)。 如果没有这样的数组,X您的代码应输出任何常量值。 例子 输入:n=4, S = (1, 3, 4, 5, 6, 8, 9, 10, 13),可能的输出:X = (3, 5, 1, 4) 输入:n=6, S = (2, …

10
机智的程序
目的 您将要编写一个程序,该程序接收一个整数n作为输入(从命令行),并将其自身(该程序)n目录嵌入目录树下。范例n=5: 文件夹名称可以是您想要的任何名称。唯一的要求是深度正确,然后可以从目录树中的新位置再次运行该程序,并且新的源文件保留相同的文件名。 奖金: 得分* 0.9如果目录都具有不同的名称(至少对深度1000万为真) 得分* 0.5如果您不直接或间接读取或移动源文件,或访问程序的源代码

8
除数除数
nnn(k1,k2,...,km)(k1,k2,...,km)(k_1,k_2,...,k_m)ki⩾2ki⩾2k_i \geqslant 2这样和 这里手段是一个多,说: “一个整除b”。如果所有条目必须至少为。对于k1⋅k2⋅...⋅km=nk1⋅k2⋅...⋅km=nk_1 \cdot k_2 \cdot ... \cdot k_m = nk1|k2 , k2|k3 , … , km−1|km.k1|k2 , k2|k3 , … , km−1|km.k_1 | k_2 \text{ , } k_2 | k_3 \text{ , } \ldots \text{ , }k_{m-1}|k_m.a|ba|ba|bbbbaaan>1n>1n>1kikik_i222n=1n=1n=1 我们没有这样的因素,因此我们得到一个空的元组。 如果您想知道这是从哪里来的:这种分解在数论中被称为不变因子分解,它被用于有限生成的Abelian组的分类中。 挑战 鉴于nnn输出所有这样的元组(k1个,ķ2,。。。,ķ米)(ķ1个,ķ2,。。。,ķ米)(k_1,k_2,...,k_m)对于给定的ññn正好一次,在任何命令你等。允许使用标准序列输出格式。 例子 1: () (empty tuple) 2: …

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.