Questions tagged «code-golf»

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

14
将数组放入垃圾箱
在这个简单的挑战中,将为您提供L非负整数的输入数组,以及数量b大于0但不超过的长度的bin L。您的代码必须返回一个新数组M,该数组的长度为b,并且已对该数组进行分箱L。用示例最容易解释。 L = [1,0,5,1]然后b = 2返回M = [1,6]。 L = [0,3,7,2,5,1]然后b = 3返回M = [3,9,6]。 到目前为止,如此简单。但是,在这个问题b上并不一定要分开len(L)。在这种情况下,最后一个垃圾箱将只有更少的数字可以组成。 除可能的最后一个垃圾箱外,每个垃圾箱必须具有相同数量的数字,以构成其总数。最后一个垃圾箱所贡献的号码不得超过其他垃圾箱。在其他规则的约束下,最后一个bin必须具有尽可能多的数字。 L = [0,3,7,2,5,1]然后b = 4返回M = [3,9,6,0]。 M = [10,8,0,0]是不可接受的输出,因为第三个bin的名称编号不包含在bin 1和中2。 L = [0,3,7,2,5]然后b = 2返回M = [10,7]。 M = [3, 14]不是可接受的输出,因为最后一个bin会有3贡献的元素,但是第一个只有2。 L = [1,1,1,1,1,1,1]然后b = 3返回M = [3,3,1]。 作为最后一条规则,您的代码必须在线性时间内运行。 您可以使用任何喜欢的语言或库,并且可以假定以您认为方便的任何方式提供了输入。 事实证明,有些输入无法解决。例如[1,1,1,1,1]和b=4。您的代码可以输出任何喜欢的输入。

5
通过…布雷森纳姆(Bresenham)的线栅格化,可跟踪任何矩阵
灵感来自此。 大二的阿加莎·斯蒂芬代尔(Agatha Stephendale)确实很喜欢栅格图形,他学习了线性代数课程。现在,她将矩阵想象为矩形,但是在她的艺术思想中,她将对角线附加到这些矩形上,并尝试计算沿它们的迹线。实际上,她想计算所有矩阵的迹线,而不仅仅是正方形。 由于Agatha是一位艺术家,她知道如何在自己喜欢的图像编辑器中绘制线条,而后者使用Bresenham的算法绘制线条。她甚至检查了维基百科,并找到了伪代码: function line(x0, y0, x1, y1) real deltax := x1 - x0 real deltay := y1 - y0 real deltaerr := abs(deltay / deltax) // Assume deltax != 0 (line is not vertical), // note that this division needs to be done in a way that preserves …

5
稀疏量角器
给定一些正整数n,设计一个带有最少标记数的量角器,使您能够测量所有角度的整数倍2π/n(每个角度一次测量)。 细节 作为输出,可以在的范围内输出的整数列表0到n-1(或1到n)表示每一个标记的位置。或者,也可以输出长度的串/列表n与#在每个标记的位置和_(下划线)在有无。(或两种不同的字符,如果更方便的。) 实施例:对于n = 5您需要的3马克到能够测量所有角度2π/5, 4π/5, 6π/5, 8π/5, 2π通过设置(例如)在1马克0,在1马克2π/5和1马克6π/5。我们可以将其编码为列表[0,1,3]或字符串##_#_。 例子 注意,输出不一定是唯一的。 n: output: 1 [0] 2 [0,1] 3 [0,1] 4 [0,1,2] 5 [0,1,2] 6 [0,1,3] 7 [0,1,3] 8 [0,1,2,4] 9 [0,1,3,4] 10 [0,1,3,6] 11 [0,1,3,8] 20 [0,1,2,3,6,10] PS:这类似于稀疏标尺问题,但是我们考虑使用圆形(角形)刻度,而不是线性刻度(两端)。 PPS:此脚本应为每个脚本计算一组标记的一个示例n。在线尝试! PPPS:正如@ngn所指出的,此问题等效于找到阶的循环组的最小差分基n。最小订单在http://oeis.org/A283297中列出,一些理论界限在https://arxiv.org/pdf/1702.02631.pdf中找到

5
减少因果分解的领导者变动
tl; dr:输出减少的素因数分解前导改变的值。 每个正整数都有一个唯一的素因式分解。让我们称简化素数分解为素数的多重性列表,按因子的大小排序。例如,减少的素因数分解1980为[2, 2, 1, 1],因为1980 = 2 * 2 * 3 * 3 * 5 * 11。 接下来,让我们记录下每个简化素数分解发生的频率[1, 2, ..., n]。例如,在中[1, 2, ..., 10],发生以下减少的素数分解: [1]: 4 (2, 3, 5, 7) [2]: 2 (4, 9) [1, 1]: 2 (6, 10) []: 1 (1) [3]: 1 (8) 我们将把领导者召集到n最经常发生的减少的素因分解[1, 2, ..., n]。因此,的简化素因分解导数n …

3
罗马化韩文
是的,基本上,您是一个浪漫主义者,宝贝,但是要难一些。象,路更难。 学习韩语很困难。至少对于亚洲以外的人来说。但是他们至少有机会学习,对吗? 你必须做什么 您将获得韩国声明。例如,안녕하세요。您必须将输入转换为其罗马发音。对于给定的示例,输出可以为annyeonghaseyo。 现在获得技术 朝鲜语字符分为三个部分:起始辅音,元音和结束辅音。字符中可能不存在结尾辅音。 例如,아是ㅇ(开始辅音)和ㅏ(Vowel),并且손是ㅅ(开始辅音),ㅗ(Vowel)和ㄴ(结束辅音)。 Evert辅音和元音有其发音。每个辅音的发音如下。 Korean ㄱ ㄲ ㄴ ㄷ ㄸ ㄹ ㅁ ㅂ ㅃ ㅅ ㅆ ㅇ ㅈ ㅉ ㅊ ㅋ ㅌ ㅍ ㅎ Romanization Starting g kk n d tt r m b pp s ss – j jj ch k t p h Ending …

3
狂热的“快棕色狐狸”沿着时髦的螺旋形“跳跃”
介绍 编写一个程序,按照给定的规则输出著名的八卦的输出螺旋。 挑战 一个全字母短句是使用给定的字母的每一个字母至少一次的句子。最著名的语言之一是在Windows字体查看器中广泛使用的语言,即“ 快速的棕色狐狸跳过懒狗 ”。挑战在于根据此文本输出螺旋形。 您的任务将输出以下确切文本: heeeeellllllllllllazzzzzzzzzzz hummmmmmmmmmmmmppppppppppppppy hubrrrrrrrrrrrrrrrrrrooooooosy hukyddddoooooooooooooooggggwsy hukyveeeeerrrrrrrrrrrrrrrrtwsy hukyvxjjjjjjjjjjuuuuuuuuuttwsy hukyvxkbbrrrrrrrrrrrrrrrmttwsy hukyvxkogggggggttttttttomttwsy tukyvokoellllllllllllahomttwsy tukyvokoeovvvvvvvvvvvzhomttwsy tukyvocoeoummmmmmmmmezhomttwsy tukyvocoeoufooooooopezhomttwsy tukyvocohoufroooooxpezhomttwsy tukyvoiohoufrquuuwxpezhomttwsy tucyvoiohoufbqttiwxpezhomttwsy tucyvoiohoufbeehiwxprzhomttwsy tucyvoiohoufkccciwxprzeomttwsy tjiyvoidhounnnnnnwxprzeomttwsy tjiyvoidhojjjjjjjjxprzeomttwsy tjiyvoidhssssssssssprzeopttwsy tjiyvoidttttttttttttrzeopttwsy tjiyvoiyyyyyyyyyyyyyyzqopttwoy tjiyvouuuuuuuuuuuuuuuuqwpttwoy tjiyvffffnnnnnnnnnnnnnnwpttwoy tjiyossssssssssssssssssspthwoy tjizzzzalllllllllllleeeeehhwoy tjuuqqqqqqqqqqqqqqqqqeeeeehnod txxxxxoooooooooooooooffffffnod reeeeevvvvvvvvvvvvvvvvvvvvvvod gggggggoooooooooooooood 它是这样产生的, 有一只热心的狐狸喜欢八卦,“敏捷的棕色狐狸跳过了懒狗”。一天,他在向外螺旋的中心,决定跳进去并画画。 他想从头到尾遍历全能图,如果一个字母是字母表中的第n个字母,他想把它画n次。 但是,狐狸不太擅长在拐角处转弯,因此在到达每个拐角处时,他还必须停下来切换到下一个字母。 他还决定重复三次全字母短句强调,他是在敏捷的棕色狐狸。 您的工作是显示在狐狸涂完所有这些字母后的螺旋状。 (普通版,不讲故事) 重复三次著名的字母“快速的棕色狐狸越过懒狗”,去掉空格,所有字母都小写,生成 thequickbrownfoxjumpsoverthelazydogthequickbrownfoxjumpsoverthelazydogthequickbrownfoxjumpsoverthelazydog 螺旋从中心开始,以字母“ t”开始,从右向开始,然后顺时针向外延伸。如果当前字符是字母表中的第n个字母,则无论何时只要切换到下一个字符 螺旋到达一个角,或 当前字母正好打印n次。 …

7
让我们加密吧!
挑战 挑战在于使用以下指定的规则对给定的字符串进行加密。该字符串将仅包含小写字母,数字和/或空格。 等效字符 现在,首先,您将需要知道如何查找每个字符的“等效”字符。 如果字符是辅音,则可以通过以下方法找到它的等价物: 1) List all the consonants in alphabetical order b c d f g h j k l m n p q r s t v w x y z 2) Get the position of the consonant you are finding the equivalent of. 3) The equivalent …

4
用适当的总和计算矩阵数
在Steenrod代数的Milnor基中乘以单项式时,该算法的一部分涉及枚举某些“可允许矩阵”。 给定两个非负整数r 1,...,r m和 s 1,...,s n的列表,一个非负整数X的矩阵 如果是允许的 第j列的总和小于或等于s j: 第i行乘以2的幂进行加权的总和小于或等于r i: 任务 编写一个程序,该程序采用一对列表r 1,...,r m和s 1,s 1,...,s n并计算这些列表的允许矩阵数。如果需要,您的程序可以选择将m和n作为附加参数。 这些数字可以按喜欢的任何格式输入,例如分组到列表中或以一元编码或其他形式输入。 输出应为正整数 有标准漏洞。 计分 这就是代码高尔夫:以字节为单位的最短解决方案获胜。 例子: 对于[2]和[1],有两个允许的矩阵: 对于[4],[1,1]存在三个允许的矩阵: 对于[2,4],[1,1]有五个允许的矩阵: 测试用例: Input: [1], [2] Output: 1 Input: [2], [1] Output: 2 Input: [4], [1,1] Output: 3 Input: [2,4], [1,1] Output: 5 Input: …

10
创建N维单形(四面体)
一个可以为任何尺寸创建的最简单的N维形状是Simplex,这是一组N + 1个点,它们彼此之间的距离相等。 对于2维,这是等边三角形,对于3维,这是正则四面体,在4维上是5单元,依此类推。 挑战 给定整数维N作为输入,输出代表该维单纯形的数组/列表/堆栈/ N个维点中的任意一个。即,N + 1个顶点彼此相等且距离不为零。 Lua中的参考实施 例子 1 -> [[0], [1]] 2 -> [[0, 0], [1, 0], [0.5, 0.866...]] 4 -> [[0, 0, 0, 0], [1, 0, 0, 0], [0.5, 0.866..., 0, 0], [0.5, 0.288..., 0.816..., 0], [0.5, 0.288..., 0.204..., 0.790...]] 笔记 输入是任何标准格式的数字,并且始终是大于1且小于10的整数 硬编码允许输入1,但不能更高。 输出中允许出现合理的错误。浮点算术或Trig问题可能会被忽略。 N维单纯形的任何变换都是允许的,只要它保持正则和非零即可。 …

14
通过插入减少主要因素的数量
给定两个正整数甲和乙,返回的位置p的是最小化的所得到的整数的素因子(计数多重)的数量,当乙被插入在一个在p。 例如,给定A = 1234和B = 32,这些是可能的插入(p为0索引)以及有关其主要因子的相应信息: p | 结果 主要因素| Ω(N)/计数 0 | 321234 | [2,3,37,1447] | 4 1 | 132234 | [2,3,22039] | 3 2 | 123234 | [2,3,19,23,47] | 5 3 | 123324 | [2,2,3,43,239] | 5 4 | 123432 | [2,2,2,3,37,139] | 6 您可以看到,当p为1 时,结果具有最小数量的质因子3。因此,在这种情况下,应输出1。 眼镜 如果有多个位置p使结果最小化,则可以选择输出所有位置p或其中的任何一个。 …

3
贷款“大量”的钱
介绍 您有一个不断向您要贷款的朋友,您对此感到厌倦。今天,他再次来借钱。您不会拒绝他的提议,而是有了一个好主意:通过给他的朋友尽可能多的硬币/票据来拖曳他的朋友。 挑战 您将输入:您的朋友想要贷款的金额以及您拥有的硬币/票据的金额。对于此挑战,可能的面额为$ 20.00,$ 10.00,$ 5.00,$ 2.00,$ 1.00,$ 0.25,$ 0.10,$ 0.05和$ 0.01。输入的一个示例是,5.67, [5, 3, 4, 5, 5, 9, 8, 1, 2]如果您的朋友想要5.67美元,并且您有5张20美元的钞票,3张10美元的钞票等。您的输出将是能给您的朋友尽可能多的金属/纸张/塑料的硬币/钞票的数量。 如果不可能给您的朋友确切的金额,请给他您可以支付的最接近的金额,该金额要大于他想要的金额。例如,如果您的朋友想要$ 0.07但您只有$ 0.07 [0, 0, 0, 0, 0, 2, 4, 2, 0],则给他2个$ 0.05硬币(而不是1个$ 0.10,因为那样会给他尽可能多的硬币!)。 如果您的朋友想要的钱比您多,请把所有的钱都给他(并祈祷您不需要购买任何东西)。 测试用例 Input: 6.54, [9, 8, 7, 6, 5, 4, 3, 2, 4] Output: …
12 code-golf  math 

18
加密数字!
问题: 两个敌对的秘密特工设计了一种极好的(对您来说)通信方式! 加密过程的工作原理如下: 1)取每个字母的ascii等效项。(不发送空格,数字或标点符号) 2)对于消息中的每个字母,将它和它后面的字母(如果存在,如果不存在,则应视为0)的等效字母乘以(此乘积存储在数组/列表中)并求和(此数字也存储在其他列表中)。 3)将两个列表(总和和乘积)连接在一起(总和列表,然后是倍数列表,进入同一数组)并传输。 您需要编写最小的程序来反转此过程并解密以这种格式发送的消息! 输入和输出对示例: [173, 209, 216, 219, 198, 198, 225, 222, 208, 100, 7272, 10908, 11664, 11988, 9657, 9657, 12654, 12312, 10800, 0] -> “HelloWorld” [131, 133, 164, 195, 197, 99, 4290, 4422, 6499, 9506, 9702, 0] -> “ABCabc” 这是代码高尔夫球,因此以字节为单位的最小解决方案获胜。 错误消息是允许的。 如果在提交中指定,则可以为程序提供列表1维数组或逗号分隔的字符串。默认值为数组/列表。

10
解开双链接数据
双向链接列表是一种数据结构,其中每个节点都具有value指向列表中的previous和的“链接” nodes。例如,考虑以下具有值12、99和37的节点: 在此,值为12和99的节点指向其各自的next值为99和37的节点。值为37的节点没有next指针,因为它是列表中的最后一个节点。同样,值分别为99和37的节点指向它们各自的previous节点12和99,但是12没有previous指针,因为它是列表中的第一个节点。 设置 实际上,节点的“链接”被实现为指向内存中上一个和下一个节点位置的指针。对于我们的目的,“内存”将是节点的数组,而节点的位置将是其在数组中的索引。节点可以认为是形式的3元组( prev value next )。那么,上面的示例可能如下所示: 但它看起来可能像这样: 从任何节点开始,您可以跟随previous链接(显示为红色箭头的起点)到达其之前的节点,并跟随链接(next绿色箭头)以查找后续节点,以便按顺序获取所有节点的值:[12, 99, 37]。 上面的第一个图可以用数组表示[[null, 12, 1], [0, 99, 2], [1, 37, null]]。那么第二个是[[2, 99, 1], [0, 37, null], [null, 12, 0]]。 挑战 编写一个程序,该程序将节点数组和节点索引作为输入,并以列表顺序返回同一双链表中节点的值。 并发症 “内存”并不总是只包含一个列表的节点。它可能包含几个列表: 上面的数组包含三个双向链接列表,为方便起见用颜色编码: 在索引节点7,10,1,4,3,12(只显示next链接,以减少混乱;点击放大): 给定此数组和所有这些索引,您的程序应按顺序返回values [0, 1, 1, 2, 3, 5, 8]。 索引处的节点9: 给定索引9,您的程序应返回[99]。 在索引节点11,8,0,6,2: 给定这些索引之一,它应该返回[2, 3, 5, …

2
圣诞老人送礼物要花多长时间?
不久前,我发布了这个挑战,它涉及圣诞老人需要送多少礼物的精灵。 由于人口增加,圣诞老人在今年的时间上压力更大。尽管过去我们非常异步地运行,但是我们开始尝试越来越同步。因此,圣诞老人需要知道他要花多长时间才能将给定数量的精灵送给每个地区的礼物。 煤炭的重量在过去两年中没有变化-它仍然比礼物重,因此圣诞老人在屋子里每个顽皮的人需要三个精灵,在屋子里每个好人需要两个精灵。 精灵们整年都在圣诞节训练,因此分娩之间不需要任何休息。他们一次只能将礼物送到一所房子,并且必须回去圣诞老人的雪橇并收集下一份礼物,然后再去下一所房子。由于我没有自由分享的理由,精灵们不会花时间在圣诞老人的雪橇和房屋之间旅行(但只能在圣诞老人的雪橇在屋顶上时旅行),他的雪橇也不花时间在房屋之间移动。(圣诞老人的雪橇确实需要在每个房子之间移动以收集燃料,但我已经说了太多了。) 运送礼物的精灵需要花费4秒*每个运送礼物,运送煤炭的精灵需要花费5秒*每个运送礼物(根据圣诞老人航空管理局的规定,戴有煤尘的手套必须在焚化后立即焚化。登上雪橇,这需要一些时间)。此外,必须按照从左到右在地图上的顺序来访问房屋,并且在所有礼物都已交付到他们当前所在的房屋之前,精灵无法开始将礼物交付到其他房屋。 如果我们假设圣诞老人在该地区拥有足够多的精灵,那么只需要花费很长时间就可以向顽皮名单上的某人送礼物,每只房子5秒,如果每个人都很好,则每只房子4秒。 但是,与前几个季节相比,这个即将到来的圣诞节圣诞老人的每个区域可能没有足够的精灵,因此4秒是将礼物运送到任何给定房屋所需的最短时间*,除非有0好人和​​0个顽皮的人,在这种情况下,将需要0秒。 另外,即使其中一所房子的顽皮名单上也有人,圣诞老人也将需要至少三个精灵。如果至少其中一所房子的某个人在好名单上,而没有一个人在顽皮的名单上,那么圣诞老人将需要至少两个精灵。如果没有一所房子符合圣诞节的气氛,那么任何数量的精灵(包括0个)将花费0秒。 在圣诞老人的地图上,一栋房子用表示*,每栋房子用分割+。圣诞老人仍然使用与其他挑战相同的地图,但是我将在此处包括有关它们的文档。 房子的两边都会有一个数字-左边的数字代表房子里顽皮的人数,右边的数字代表房子里好人的人数。如果一侧没有数字,则将其解释为0。 我知道这听起来很疯狂,但是有些人“不喜欢圣诞节”,所以有时候,房子的两边可能没有数字。 圣诞老人的一张地图可能看起来像这样。 1*3+2*+*5+*+4*7 假设圣诞老人的雪橇上有九只精灵。 (0s)第一所房子有1个顽皮的人和3个好人。其中三只精灵需要五秒钟来运送煤炭,六只礼物需要四秒钟来运送礼物。五秒钟后,圣诞老人的雪橇移到下一所房子 (5s)第二宫有2个顽皮和0个好人。六个精灵运送煤炭,耗时五秒钟。五秒钟后,圣诞老人的雪橇移到下一所房子 (10s)第三宫有0个顽皮和5个好人。其中有八只精灵送来了四个礼物(被遗忘的那一个无法送出礼物)。四秒钟后,所有的小精灵都回来了,其中两个去运送另一个礼物(雪橇必须等到小精灵回来之后才能去下一所房子),再花四秒钟 (18s)第四宫不属于圣诞节气氛,所以有0个顽皮和0个好人,因此被跳过 (18岁)第五宫有4个顽皮的人和7个好人。这有点复杂... I.所有九个精灵都去交付三份煤礼物(离开t + 0,返回t + 5s)II。5s之后,他们又回到了雪橇上,其中三个去送了最后一个煤炭礼物(离开t + 5s,返回t + 10s),而其他六个去了三个礼物(离开t + 5s,返回t + 9s)。 三,四秒钟后,六个小精灵又回来了,又去送了三个精美的礼物(离开t + 9s,返回t + 13s)。 IV。他们离开后一秒钟,三个送煤的精灵回来了,其中两个离开了,送了最后一个漂亮的礼物(离开+ 10s,返回t + 14s) (18 + 14 = 32秒)圣诞老人完成了向该地区运送礼物的工作。 如我们所见,圣诞老人总共需要32秒钟才能将礼物运送到该地区。不过,那是圣诞老人的一张地图的过于简化的版本。通常,圣诞老人的地图有多条线,并且呈正方形,以便更好地适合他的列表。法线贴图可能看起来像这样(\n每行的结尾处是a ) 1*2+*+*4+1* 2*4+3*+1*6+* …
12 code-golf  string 

2
玩骰子板球游戏
骰子板球是我从小就被介绍的一款游戏,并且自那以后一直用作打发时间的一种方式。我找不到维基百科页面,所以我将在下面解释规则。 骰子板球规则 前提 骰子板球是类似于得分的游戏的游戏板球,你看它,但不是观看和录制的结果,你掷骰子,并记录结果。 结果记录在底部显示的表格中。 显示 骰子板球使用特定的显示屏来显示所有发生的信息。 该表有11行。每行代表一个击球手。该行的布局说明如下。 +------+------------------------------+---------+-----+ | Name | Runs | How Out |Score| +------+------------------------------+---------+-----+ 名称:名称必须是完全由大写或小写字母组成的字符串 运行:击球手可以面对30个球。每个球可以是之一1 2 4 6 . /。这将在下面更详细地说明 表现:击球手的出场方式。可以是任何Bowled, LBW (Leg Before Wicket), Caught, Retired or Not Out 分数:中的所有数字之和 Runs 游戏如何运作 在游戏中,球场上总是有2个击球手。默认情况下,第一个玩家是当前击球手,第二个是“关闭”击球手。 游戏是由“球”组成的:板球比赛中的每个球都由掷骰子表示。每个滚动执行不同的命令: 1,2,4和6使击球手得分高很多。如果将1滚动,则当前面糊将变为“关闭”面糊,而“ off”面糊将变为当前面糊 3是“圆点球”,表示什么也没有发生。它在本Runs节中以a表示.,得分为0。A 0不能用来表示它。 5是检票口。如果掷出5,则当前击球手为“出局”,这意味着a /被添加到奔跑中,此后,击球手将不再得分。然后将面糊与下一个未击打的面糊交换。本How Out节是随机选择的逃生方式:Bowled, LBW, Caught 检票口的示例(为清楚起见,这不是输出方式) …

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.