Questions tagged «code-golf»

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

10
确定输入的类型
挑战很简单:确定输入的类型,然后输出一个标识它是什么类型的标识符。 “UI”,无符号整数:0,1,34,111111111111111111111111111111111111111111 “SI”,有符号整数:+0,+1,+42,-1,-3,-111111111111111111111111111111111111111111 “UD”无符号十进制:0.0,1.23,1234.1234 “SD”,符号十进制:-0.0,+0.0,-1.235 “ LE”,字母:a- z和A-Z “ SY”,符号:ASCII代码点:([32-47, 58-64, 91-96, 123-126]即,除数字和字母外的所有字符) “ ST”,字符串:两个或多个无法解析为上述任何数字格式的字符 规则: 输入的长度为1-99个字符 输入将仅包含可打印的ASCII字符,代码点:32-126。 输出应该是上面定义的两个标识符字母(UI,SI ...) 适用标准I / O规则 例子: UI: 0 01 34 12938219383278319086135768712319838871631827319218923 SI: -0 +01 +1 -123 +123 UD: 0.0 3.1415 2.718281828459045235360287471352662497757 SD: +0.0 -3.1415 +2.718281828459045235360287471352662497757 LE: a k L Z SY: @ …

12
多维数据集距离数的稀有度
灵感来自这个 Numberphile进入 背景 整数n的立方距离数在此定义为一组整数,它们是给定x的x³距离。举一个简单的例子,使用和时,立方体距离数为。n=100x=2{92,108} 只需更改x即可将其扩展为更大的集合。使用x ∈ {1,2,3,4}和相同n=100,我们得到结果集{36,73,92,99,101,108,127,164}。 让我们来定义CD(N,X)的所有整数的集合n ± z³带z ∈ {1,2,3,...,x}。 现在我们可以集中讨论这些立方距离数字的一些特殊属性。在数字可以具有的许多特殊属性中,我们在此处感兴趣的两个属性是素数和素数除数。 对于上面的示例CD(100,4),请注意它们73, 101, 127都是素数。如果将它们从集合中删除,则剩下{36,92,99,108,164}。这些数字的所有主除数都是(按顺序){2,2,3,3,2,2,23,3,3,11,2,2,3,3,3,2,2,41},这意味着我们有5个不同的主除数{2,3,23,11,41}。因此,我们可以定义CD(100,4)具有ravenity 1中5。 这里的挑战是以最小的字节编写一个函数或程序,以输出给定输入的泛滥。 输入值 两个正整数n和x,采用任何方便的格式。 输出量 当用CD(n,x)计算时,一个整数,描述两个输入数字的奇异性。 规则 输入/输出可以通过任何合适的方法。 适用标准漏洞限制。 为了便于计算,您可以假设输入数据将使CD(n,x)在集合中仅具有正数(即,没有CD(n,x)会具有负数或零)。 该函数或程序应该能够处理输入数字,以便n + x³适合您语言的本机整数数据类型。例如,对于32位带符号整数类型,所有输入数字n + x³ < 2147483648都可以。 例子 n,x - output 2,1 - 0 (since CD(2,1)={1,3}, distinct prime divisors={}, ravenity=0) 5,1 - 2 100,4 …

6
玩具店利润
故事 “ 2016年?好吧。”玩具销售商希尔伯特抱怨道。他睁开眼睛,擦干沙拉酱从耳朵里滴了出来,吃了早晨的起司奶油。典范假期。不过,他现在需要去上班,并完成年度会计。 圣诞节是一年中非常丰收的时期,尤其是对他的销售而言。希尔伯特(Hilbert)确切地知道它是如何工作的:一个人走进商店,购买了他们提供的第一份礼物。他们为此付费并跑到另一家商店。在实践中,礼物实际上是什么并没有真正改变。价格也不要紧,前提是价格不要太高。这完全取决于圣诞节前的剩余时间-时间越短,客户的悔恨就越大,他们愿意支付的价格就越高。 希尔伯特所需要做的就是看他的手表-他马上就知道他的顾客可以花多少钱。他可以轻松地利用这一事实:他只是找到可以出售给特定客户的最昂贵的礼物,并将其提供给他们。直到现在,他才意识到自己去年忘记采用这种狡猾的策略。那会改变的! 尽管如此,希尔伯特想知道如果他实际上使用了他的宏伟计划,他的生意将会蓬勃发展。他设法将来商店的人的名单汇总在一起,但是他不确定自己可以为他们赚多少钱。 您的任务(TL; DR) 输入包括可用礼物价格的升序列表和客户预算的列表。预算清单的顺序与客户到达商店的顺序相同-条件是每个客户都愿意至少支付与前者相同的费用,这意味着预算也在不断增加。 对于每个客户,找到他们愿意支付的最昂贵的礼物,然后输出价格。如果预算内没有可用的礼物,则输出0。 -40%如果算法的渐近时间复杂度为O(n+m)(而不是琐碎的O(n*m)),那么您将获得字符奖励,其中n, m输入列表的长度在哪里。 这是代码高尔夫球,最短字节获胜。禁止出现标准漏洞。 例 输入: 1 2 2 2 5 7 10 20 1 1 2 3 6 6 15 21 21 22 输出: 1 0 2 2 5 2 10 20 7 0 这项任务是从本地编程比赛中提取的,由我翻译成英语。这是原始作业:https : //www.ksp.sk/ulohy/zadania/1131/
15 code-golf 

4
旋转矩阵中的每一行和每一列
挑战 给定一个n x n整数矩阵n >= 2 1 2 3 4 以及具有确切2n元素的整数列表 [1,2,-3,-1] 输出旋转的矩阵。该矩阵的构造方式如下: 取列表中的第一个整数,然后将此值向右旋转第一行。 取下一个整数并将第一列向下旋转此值。 取下一个整数并将第二行向右旋转此值,依此类推,直到将矩阵的每一行和每一列旋转一次。 该列表可以包含负整数,这意味着您将行/列向左/上移,而不是向右/下移。如果整数为零,请不要旋转行/列。 使用上面输入的示例 列表元素矩阵说明 -------------------------------------------------- ---------- 1 2 1将第一行右移1 3 4 2 2 1将第一列向下旋转2 3 4 -3 2 1将第二行左移3 4 3 -1 2 3将第二列向上旋转1 4 1 规则 您可以选择最方便的输入格式。只需弄清楚您使用的是哪一个即可。 允许功能或完整程序。 输入/输出的默认规则。 有标准漏洞。 这是代码高尔夫球,因此最低字节数获胜。Tiebreaker是较早提交的内容。 测试用例 输入格式是矩阵列表的列表和整数的普通列表。 [[1,2],[3,4]],[1,2,-3,-1]-> …

4
用ASCII艺术建造一个简单的房间
一个房间可以由相连的矩形组成,例如L形房间。这样的房间可以通过描述每个矩形尺寸的尺寸列表来描述。 假设您有两个输入列表。第一个包含彼此垂直垂直堆叠的矩形的宽度。第二个包含矩形的高度。 例如,输入[4 6][3 2]将是6 x 2矩形顶部的4 x 3矩形。下图显示了此形状。请注意,墙壁被认为是“薄”的,因此,墙壁之间的空间取决于输入。 [4 6][3 2] ____ | | | | | |_ | | |______| 面临的挑战是:将尺寸列表作为输入,并以ASCII艺术形式输出房间的形状。格式必须与示例图中的一样: 所有水平墙均使用下划线显示 所有垂直墙均使用条形图显示 矩形连接处不得有墙 左墙是直的 有关更多详细信息,请查看测试用例 您可以做出的假设: 所有尺寸均在范围内 [1 ... 20] 所有的卧式尺寸为偶数 矩形数将在范围内 [1 ... 10] 仅给出有效输入 可选的输入格式(您可以确定输入尺寸的顺序,请在答案中指定)。 测试用例: [2][1] __ |__| --- [4][2] ____ | | |____| …

18
排序矩形矩阵
给定一个矩阵A,我们可以说,如果矩阵的每一行和每一列都A被排序(对行从左到右,对列从上到下,则是“已排序” )。因此,该矩阵被排序: [ 1 2 3 4 5 ] [ 2 2 3 4 5 ] [ 3 3 3 4 5 ] [ 4 4 4 4 5 ] [ 5 5 5 5 5 ] 但是,此矩阵未排序: [ 1 2 3 4 5 ] [ 2 1 3 4 …

5
离外部有多远?
取一个2D空间区域,该区域划分为以轴对齐的单位正方形元素,其中心以整数间隔对齐。如果一条边由两个元素共享,则称该边为内部,否则为外部边。 您的目标是找到从每个元素的中心开始(即traversal distance或distance简称为)到达外部边缘必须经过的最小数量的相邻元素。您只能穿过一条边缘(即没有切角/对角运动)。注意,“外部元素”(具有至少一个外部边缘的元素)被认为需要遍历0相邻元素才能到达外部边缘。 输入值 输入是一个非负整数对坐标的列表,表示所有元素中心的(x,y)。假定不存在重叠元素(即x / y对唯一标识一个元素)。您可能不假定有关元素输入顺序的任何信息。 欢迎您将输入的原点转换到任何位置(例如0,0或1,1,等等)。 您可以假定所有输入元素都已连接,或者换句话说,可以使用上述规则从任何一个元素移动到任何其他元素。注意,这并不意味着2D区域只是简单连接。里面可能有孔。 示例:以下为无效输入。 0,0 2,0 不需要错误检查。 输入可以来自任何来源(文件,stdio,函数参数等) 输出量 输出应该是标识每个元素的坐标列表,并遍历相应的整数距离以到达边缘。输出可以按所需的任何元素顺序进行(例如,您不必按与输入相同的顺序输出元素)。 输出可以是任何源(文件,stdio,函数返回值等) 任何与元素的坐标与其外部距离匹配的输出都可以,例如,所有这些都可以: x,y: distance ... [((x,y), distance), ...] [(x,y,distance), ...] 例子 文本示例输入的格式为x,y,每行一个元素;欢迎您将其重塑为方便的输入格式(请参阅输入格式规则)。 文本示例输出的格式为x,y: distance,每行一个元素;同样,欢迎您将其重塑为方便的输出格式(请参见输出格式规则)。 图形数字的左下边界为(0,0),内部数字表示到达外部边缘的预期最小距离。请注意,这些数字仅用于演示目的;您的程序不需要输出这些。 例子1 输入: 1,0 3,0 0,1 1,2 1,1 2,1 4,3 3,1 2,2 2,3 3,2 3,3 输出: 1,0: 0 3,0: 0 …

18
倒置png图片
创建以文件名作为参数或从标准输入中读取文件名的程序或函数,并完成以下任务: 从png文件(名称作为参数)中读取图像。 反转该图像中的颜色,以便例如深绿色(0、75、30)变为(255、180、225)(因为255-0 = 255、255-75 = 180和255-30 = 225)。您不应更改Alpha通道值。 将该图像输出到一个名为a.png(png格式)的文件,或在GUI窗口中显示。 这是代码高尔夫球。有标准漏洞。

4
周五的返程:重新编号我的ZX Spectrum BASIC列表
我接触到的第一种编程语言是Sinclair BASIC。像许多BASIC方言一样,它要求对所有源代码行进行编号。 结果,该GO TO命令的使用是惯用的,并且将执行跳转到给定的行号(无标签)。 还有一个相关的GO SUB命令,可以用作基本功能调用。同样,执行跳到给定的行号,但是当RETURN到达命令时,执行跳回到下一个指令GO SUB。 同样,该RUN命令将在给定的行重新开始程序执行。 在行号BASIC解释器中花了任何时间的任何人都将学会使用带空格的编号方案。这样可以更轻松地插入新的代码行。但是即使那样,您仍然可能发现自己需要在连续编号的行之间插入新行。 给定行号为BASIC的列表作为输入,输出相同的程序,但重新编号,以使行号从10开始并以10递增。输入列表可能具有GO TO或GO SUB命令,因此也必须调整与它们相关的数字。 GO TO和GO SUB命令位于单独的行或行的末尾IF THEN。可以肯定地说^(\d+) .*GO (TO|SUB) (\d+)$,足以匹配这样的界线。这些带引号的命令应被忽略。 RUN命令将始终保持独立。在这种情况下,行号是可选的。如果缺少它,那么解释器仅从程序顶部开始。 如果一个GO TO,GO SUB或RUN命令引用不存在的线,那么这反而跳转到下一个定义的线。您的输入需要处理此问题,并确保所有此类行引用均已修复,以便它们指向正确的行。如果在这些命令之一中给出了程序结束后的行号,则行为可能不确定。 行号将始终为1到9999之间的正整数(根据手册)。这意味着输入程序永远不会超过999行。 输入行将始终以数字升序编号。 出于此挑战的目的,输入列表将仅包含可打印的ASCII。您无需担心ZX字符集。话虽如此,如果您的条目实际上是写在ZX BASIC或适当的Z80汇编/机器代码(也有模拟器了那里),那么你可以选择你的投入在编码ZX字符集来代替。 您不得使用专门为此目的量身定制的任何重新编号库或实用程序。 输入示例: 1 REM "A rearranged guessing game" 2 INPUT A: CLS 3 INPUT "Guess the number ", B 10 IF A=B THEN …
15 code-golf 

1
同色算术级数
范德瓦尔登定理说 对于任何给定的正整数r和k,都有一些数字N,如果这些整数{1, 2, ..., N}是有色的,每一个都具有一种r 不同的颜色,则k在算术级数中至少存在所有相同颜色的整数。最少的N是Van der Waerden数W(r, k)。 您的目标是给W(r, k)定正整数输入r和来计算范德瓦尔登数k。最少的字节数获胜。 请注意,此功能增长非常快,并且计算耗时。甚至W(4, 4)是未知数。您可能会假设您的代码在资源(时间,内存,堆栈深度等)无限制的理想计算机上运行。理论上,即使对于未知答案的值,您的代码也必须给出正确的答案。 不允许使用计算此功能的内置程序。 例 对于r = 2长度的颜色和渐变k = 3,存在8避免这种渐变的长度序列,即3相同颜色的等距元素: B R R B B R R B 但是,没有这样的长度9序列W(2, 3) == 9。例如, R B B R B R R B R ^ ^ ^ 包含所示的长度3相同颜色的算术级数。 测试用例 您可能只能测试小案例。 +-----+-----+-----+-----+-----+-----+------+ | | …

3
飞船去哪儿了?
基于Zgarb提出的想法。 宇宙飞船在规则的3D网格周围移动。网格的单元格在右手坐标系xyz中用整数索引。太空飞船从原点开始,沿x轴正方向指向,z轴正方向向上。 飞船将沿着由非空运动序列定义的轨迹飞行。每个运动要么是F使飞船朝其朝向移动一个单元的(向后)方向,要么是六个旋转之一UDLRlr。这些对应于以下的俯仰,偏航和横滚: 感谢Zgarb创建该图。 Up和D自己将飞船的俯仰改变90度(方向对应于飞船鼻子的运动)。 L和 R左右将飞船的偏航角改变90度。它们只是常规的左转和右转。 l和 r向后是90度的侧倾运动,方向指示哪个机翼向下运动。 请注意,应该始终相对于飞船解释这些内容,以便相关的轴随之旋转。 用数学术语来说,宇宙飞船最初位于位置(0, 0, 0),沿着(1, 0, 0)矢量(0, 0, 1)指向,指向上方。旋转对应于应用于坐标系的以下矩阵: U = ( 0 0 -1 D = ( 0 0 1 0 1 0 0 1 0 1 0 0 ) -1 0 0 ) L = ( 0 -1 0 R …

3
对N-Bonacci序列进行逆向工程
编辑:我将在2016年2月15日星期一接受答案。愿字节永远对您有利! @DJMcGoathem 在他的“打印N-Bonacci序列”挑战中,描述了N-bonacci序列,其中之前的N个数字相加,而不是斐波纳契序列的传统2个(称为“ 双 nacci序列”)。然后,他要求输入两个输入X和N,然后输出第X个N -nacci数。 我提出相反的建议。 给定一个序列,输出它是N -nacci序列的子集。我之所以说“子集”,是因为: A)这些序列是无限的 B)如果给定序列的开始,则可以只计算前导1的数量 如果它可能属于多个N -nacci序列,请选择最低的序列。 如果它不属于任何N-nacci序列,则您的程序可能会执行其他操作,而不是打印可能会误输出的内容。这些行为包括(但不限于):无限循环,错误,崩溃,删除自身(*咳嗽* 保持警惕 *咳嗽*)或创建黑洞(只要该黑洞不会产生任何可能被误认为是有效输出)。 为了应对这一挑战,这些序列以1开头。这意味着任何N -nacci序列都以N开头。此外,N必须为正整数。所以没有-1 -nacci等 测试用例: 1,1,1 -> 1 49, 97 -> 7 55, 89, 144 -> 2 1 -> 1 6765 -> 2 12, 23, 45, 89 -> 12 100, 199 -> 100

3
斐波那契的六进制
莱昂纳多·达·皮萨诺( Leonardo da Pisano)又名斐波那契( Fibonacci)在将印度-阿拉伯数字系统引入欧洲方面发挥了作用。在此之前,那里的数学家使用罗马数字以60为底数。 例如,两个的平方根可以近似为:一和二十四分之六十和五十一分之三千六百六十,写为:i xxiv li,其缩放比例取决于上下文。当时,“虚无”是已知的(即零),但在此数字系统中没有标准表示形式。 如果斐波那契忽略了他在旅途中遇到的这些新的十进制数字,他肯定会解决当前系统中的缺陷。这个改进的系统称为斐波那契(Fibonacci)的sexagesimals。 您的任务是编写一个程序,函数或代码片段,该片段采用ASCII或二进制格式的浮点数,并以60个基数罗马数字输出。输入可以是文件,控制台,命令行或函数参数,输出可以是文件或控制台,以最简单的为准。 输出可以是大写或小写,并且必须包括以下改进: 使用n或N表示空值,表示某个地点没有值,即 “零”(系统存在问题) 使用ë或ë以指示等对应于所述六十进制点(与系统的另一个问题) 使用中间的点·或星号*分隔罗马数字组(但系统还有另一个问题) 假设输入将是浮点数,尾数不大于lix·lix·lix·lix·lix。小于n·e·n·n·n·n·i的分数可以忽略。因此,如果输入具有这些限制,则最多可以输出十组带有一个e的罗马数字。 小于i的数字必须以n开头,以确保上下文清晰。 一些示例:input→ 输出 0→ n 1→ 我 60→ 我 0.1→ n·e·vi 3600→ i·n·n 10.5→ x·e·xxx 16777215→ i·xvii·xl·xx·xv 3.1415926536→ iii·e·viii·xxix·xliv·n·xlvii 输出必须避免在输出的尾数部分中不必要的前导n·,孤立的e或末尾的n。因此,例如,n·n·n·n·i,i·e和i·e·n·n·n·n·n是输入的不正确输出1。 输出中正负n·e·n·n·n·n·i的差在允许范围内且可以接受。 输入是您选择的语言中的任何合法浮点,因此只要输入不超出上述指定范围,就可以包含正或负指数。 最后,罗马数字内置插件是不允许的!

4
计算绕组数
的绕组数是净逆时针转观察者必须作出遵循给定闭合路径的整数。请注意,任何顺时针旋转都会对绕组数计数为负。路径允许自相交。 下面给出了一些示例(从Wikipedia中无耻地摘录): 您的目标是计算给定路径的绕组数。 输入值 假定观察者在原点(0,0)。 输入是来自任何所需输入源的有限点序列(整数对类似),描述了分段线性路径。如果需要,可以将其展平为一维整数序列,也可以使输入模糊不清,以在所有y坐标之前取所有x坐标,反之亦然。您也可以将输入作为复数a+b i。路径可能会自相交,并且可能包含零长度段。第一点是路径的起点,假定位于正x轴上的某处。 路径的任何部分都不会与原点相交。路径将始终是封闭的(即,第一个和丢失的点是相同的)。您的代码可能暗示最后一点,也可能要求将其包括在内。 例如,根据您的喜好,两个输入都指定相同的正方形: 隐含终点 1,0 1,1 -1,1 -1,-1 1,-1 明确的终点 1,0 1,1 -1,1 -1,-1 1,-1 1,0 输出量 输出是绕组号的单个整数。这可以指向任何源(返回值,stdout,文件等)。 例子 所有示例都明确定义了端点,并以x,y对的形式给出。顺便说一句,假设隐式定义的端点,您也应该能够将这些示例直接输入任何代码中,并且输出应该相同。 1.基础测试 1,0 1,1 -1,1 -1,-1 1,-1 1,0 输出量 1 2.重复点测试 1,0 1,0 1,1 1,1 -1,1 -1,1 -1,-1 -1,-1 1,-1 1,-1 1,0 输出量 1 3.顺时针测试 …

17
应用基尔霍夫定律
基尔霍夫定律说,当您对所有电流求和时(流向结点的电流为正,而离开结点的电流为负),您将始终得到结果0。 看下图: 使用基尔霍夫定律,您可以看到i1 + i4-i2-i3 = 0,所以i1 + i4 = i2 + i3。 给定两个列表,一个列出所有电流进入结点,另一个列出所有电流离开结点(除了一个),输出最后一个。 测试用例: [1, 2, 3], [1, 2] = 3 [4, 5, 6], [7, 8] = 0 [5, 7, 3, 4, 5, 2], [8, 4, 5, 2, 1] = 6 第二个列表总是比第一个列表少一个项目。输出不能为负。最小的程序获胜。

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.