编程拼图和代码高尔夫

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

2
块分区字符串
灵感。 考虑一个l由数字组成的列表。i在列表的索引处定义一个块操作,l该操作是从iin 开始移动3个连续元素的动作l进行到底。 例: l, i (1-indexing) -> l (after applying block operation at index i) [1,2,3,4,5], 1 -> [4,5,1,2,3] [1,2,3,4,5,6,7], 3 -> [1,2,6,7,3,4,5] 给定一个仅包含0和1的列表,您的难题是仅使用块操作对其进行分区,以使零在前面,而在后面在后面。输出应该是索引在列表中应用的顺序。 因为这是不可能的 [1,0,1,0],所以保证列表长度至少为5。 测试用例(1-索引) (还有其他有效的输出) [1,1,1,0,0] -> [1] [0,1,0,1,0] -> [1,2,1,1] [0,0,0,1,1,1,0,0,0] -> [4] 使用此脚本可以生成更多的测试用例。(仅输入该rplc ' ';','部分用于ř Ë PL一个Ç ê空间与输出逗号) 获奖标准 代码挑战是主要的制胜法宝,而最快的代码是决胜局。尤其是: 以测试用例(n_elem= 500,random_seed= {secret value})的最短输出长度(最少块操作数)的解决方案为准。您应该能够使用测试用例(n_elem= …

14
画一个后裔金字塔(加法)
挑战 给定一系列非负整数,请创建一个输出后代金字塔的函数,其中子代是两个父代数字的总和。 使用tab将结果输出为字符串\t。 注意:不需要每行上的尾随制表符 1\t\t2\t\t3\n\t3\t\t5\t\n\t\t8\t\t results in 1 2 3 3 5 8 可选地,结果可以使用空位置作为空格输出为数组。 [[1,,2,,3], [,3,,5,], [,,8,,]] 例: 给定4,5,7,3,4,2输出: 4 5 7 3 4 2 9 12 10 7 6 21 22 17 13 43 39 30 82 69 151 规则 适用标准代码高尔夫球规则 输入可以是使用任何分隔符或数组的字符串 允许使用前导/尾随换行符和制表符(但只要输出是倒金字塔,则不需要) 测试用例 Input: 1,3,5 1 3 5 …
11 code-golf 

1
不只是一个四肢难题
在该方案中的4个4困扰你应该使用最多x x's(并且没有其他号码),并定义了一组操作的从0达到每号为100。如果x = 4那么你可以使用多达四个4s,这问题就变成经典的4个4拼图(除非您最多可以使用四个4,而不必只使用四个)。我们假设1 < x <= 9。 在此版本中,仅允许以下运算符: 加法(+),减法(-),乘法(*),除法(/)。请注意,这是实数除法,因此5/2 = 2.5。 求幂(例如4 ^ 4),因为如果用手工正常书写,将不涉及任何多余的符号。 您可以通过串联创建新的整数xs。例如,您可以使整数4, 44, 444, 4444。 您也可以仅使用括号将数字分组,以控制运算符的求值顺序。例如,您不能像那样将括号与串联结合在一起(4/4)(4/4) = (1)(1) = 11。 不得使用其他符号,并且适用标准的操作顺序。 如果输入x在定义的范围内且n介于两者之间0(100包括两端),则程序应为该输入生成正确的解决方案(如果存在)。否则,您的代码必须输出某些内容以指示不存在此类解决方案。 您必须能够在允许范围内的任何输入值下x,n在计算机上运行提交以完成操作。这就是代码高尔夫,因此最短的解决方案将获胜。 这个古老的相关问题使用更多的运算符(只有4s),因此从0到100的所有数字都是可解的,因此对于此挑战而言并非如此。 输入输出 您的代码需要两个整数x并n作为输入和输出应该解决(或者指示没有解决)在您方便的任何人类可读的格式。例如,输入4 6将意味着“使用最多四个4,使数字为6”。因此,如果输入为4 6输出,则可能为(4+4)/4+4。

13
得分布里斯科拉
介绍 Briscola是意大利最受欢迎的纸牌游戏之一。这是一个招人喜欢的纸牌游戏,例如Br​​idge。Briscola以其怪异的点系统而闻名。在此挑战中,给定两张牌,您将输出第一张得分高于,低于或等于Briscola积分系统中第二张得分的积分。 挑战 布里斯科拉(Briscola)与一副意大利扑克牌一起玩。一副纸牌中有40张卡片,四种套装中的每套1-10张:杯子,剑,棍棒和硬币。我们将忽略应对这一挑战的方法。卡2-7是数字卡,卡8、9和10是面卡。卡的排名(从最高到最低)是: +------------------------+-------------+ | Cards, by Rank | Point Value | +------------------------+-------------+ | Ace (1) | 11 | | Three (3) | 10 | | King (10) | 4 | | Knight (9) | 3 | | Jack (8) | 2 | | Numeric Cards (2, 4-7) | …

13
第一最后最后最后
挑战 任务很简单。给定一个数组以及第一个和最后一个值:在第一个之后返回最后一个的第一个,在最后一个之前返回第一个的最后一个。 或简单地说:给定数组var1,var2。 示例数组: [var2,,var1,,var2,,var2,var1,var2,] 返回: 数组中出现的第一个var1右侧的第一个var2的索引。 [var2,,第一个var1,第一个var2,第二个var2,var1,第三个var2,] 数组中显示的最后一个var2左侧的第一个var1的索引。 [var2,,second var1,,var2,,var2,first var1,last var2,] 输入值 两个不同的正整数 正整数数组 输出量 答案索引,按顺序 规则 数组将包含每个变量中的至少一个(最小大小为2) 假设输入工作 示例:0, 1 [1, 0]或类似的将失败 IO很灵活 例子 Input First = 2; Last = 4; [0, 2, 4, 2, 3, 1, 4, 0, 1, 2, 4, 9] Output 2, 9 Input …

4
确定季节
介绍: 在北半球(即欧洲,北美等),季节划分如下: - 春季: 3月,4月,5月 - 夏季: 6月,7月,8月 - 秋季: 9月,10月,11月 - 冬季: 12月, 一月二月 但是在南半球(即澳大利亚,南美等),季节划分如下: - 春季: 9月,10月,11月 - 夏季: 12月,1月,2月 - 秋季: 3月,4月,5月 - 冬季:六月七月八月 这种差异是由于太阳相对于赤道的位置,北半球和南半球的季节相反。 输入: 在此挑战中,我们将接受两个输入: 一个月(1 <= m <= 12或0 <= m <= 11)(示例和测试用例全部按1索引编制)。 在地球纬度(-2 <= p <= 2)的五个“位置组”中,-2南极是南极,-1不包括南极的0是南半球,赤道附近的热带1是北极,不包括北极的北半球2是北极。 尽管当然北极,南极和热带仍然有季节,但是为了应对这一挑战,我们将说北极和南极处于恒定状态Winter,而热带则处于恒定状态Summer。 这是这五个组的视觉表示,-2南极圈在哪里?-1在摩ri座和南极圈之间;0在摩ri座和癌症之间;1在北极圈和北回归线之间;和-2北极圈。 资料来源:COSMOS-SAO天文学百科全书 输出: 一Spring,Summer,Autumn,或者Winter,遵循以下规则: 是位置输入2还是-2(北极或南极),总是输出Winter。 …
11 code-golf  number 

12
复制矩阵的总和
给定数字列表[ a 1 a 2 ... a n ],计算所有矩阵A the的总和,其中Aᵢ定义如下(m是所有aᵢ的最大值): 1 2 ⋯ (i-1) i (i+1) ⋯ n +---------------------------- 1 | 0 0 ⋯ 0 aᵢ aᵢ ⋯ aᵢ 2 | 0 0 ⋯ 0 aᵢ aᵢ ⋯ aᵢ . . . . . . . . . . . …

1
自动循环奎
做一个奎因,但要稍加扭曲。 声明 quine打印其代码,但将其第一个字符放在末尾。 (您可以反向执行,但在答案中包括该注释) 然后,输出必须是一个程序,这也是一个解决方案。 示例:假设您的代码为foobar,运行它将返回oobarf,它将是另一个有效程序。 foobar -> oobarf oobarf -> obarfo obarfo -> barfoo barfoo -> arfoob arfoob -> rfooba rfooba -> foobar 规则 您的代码一定不能是其他人明显偷窃的某代代码的输出 您的代码长度必须超过2个字符(因此,短代码没什么意思) 您的代码必须至少包含两个不同的字符(例如:+++无效) 计分 作为代码高尔夫球挑战,最短的代码获胜。
11 code-golf  quine 

2
找出我的邻居
输入由包含邻居信息的i行组成。每个我个行包含4个值,代表的邻居我到北,东,南与西方向,分别。因此,每个值代表在给定方向的邻居我个行,从第1行开始,并且可以达到65,535行。的0值表示没有邻居到该方向。 例如,如果第一行是“ 0 2 3 10”,则表示第i个邻居还有其他三个邻居:北方没有邻居,东方没有邻居2,南方没有邻居3,西方没有邻居10。 您需要从最接近西北的值开始输出邻居数组。每个邻居在相对于其他邻居的位置仅显示一次。让我们看一些例子: 输入: 0 0 0 0 无邻居(空情况),输出: 1 输入: 0 2 0 0 0 0 0 1 1在东边有邻居2。2在西边有邻居1 输出: 1 2 输入: 0 2 0 0 0 0 3 1 2 0 0 0 1在东边有邻居2。2在西边有邻居1,在南边有邻居3。3在北部有邻居2 输出: 1 2 3 输入: 2 0 0 0 …

17
产生一个轮换词列表2
轮名2 “ Rotonym”是ROT13转换为另一个单词(使用相同语言)的单词。 对于这个挑战,我们将使用一个替代定义:“ Rotonym”是一个单词,可以循环移位/旋转为另一个单词(使用相同的语言)。 例如: 'stable' < 'tables' < 'ablest' 'abort' > 'tabor' 'tada' >> 'data' 挑战 编写一个程序或函数,该程序或函数接受词典/单词列表,并打印或返回完整的轮换单词列表。 顺序无关紧要。 比较应该不区分大小写,因此可以假定输入将作为仅小写的字典传递。 结果应表示为单个单词(而不是对),并且不包含重复项,因此您可以假设输入内容不包含重复项。 这是代码高尔夫球。 例 给定 ablest abort green irk stable tables tabor tata terra vex you 返回 ablest abort stable tables tabor 真实的测试 给定 a aa aal aalii aam aani …
11 code-golf 

7
恢复范围参数
描述 您会得到一个范围函数的结果,其中每个元素都已四舍五入到最接近的整数。您的目标是恢复原始列表。 例如,以下函数(在Python3中)将为您的程序产生一个输入: from numpy import arange, floor def floored_range(A, B, C): return list(floor(arange(A, B, C))) 程序的输出应该是原始数据的有效猜测。在这里,有效的猜测意味着它必须在落地时与输入完全匹配,并且必须是范围函数的可能输出(即,在绘制时必须形成一条完美的直线)。 例子 Input: [1,2,3,4] Output: [1,2,3,4] Input: [1,2,3,4] Output: [1.9,2.7,3.5,4.3] Input: [1,2,3,4,5,5] Output: [1.9,2.7,3.5,4.3,5.1,5.9] Input: [1,1,2,2,3,3,4,4] Output: [1,1.5,2,2.5,3,3.5,4,4.5] Input: [1,1,2,3,3,4] Output: [1,1.7,2.4,3.1,3.8,4.5] Input: [56, 54, 52, 50, 48, 45, 43, 41, 39, 37, 35, …
11 code-golf 

4
挖掘采石场游戏中时光倒流
您喜欢在几分钟内观看完建筑或其他大型工作的时光倒流吗?让我们在这里做一个。 我们将看挖掘机的采石场,每天拍摄照片以查看整个进度。您的任务是向我们展示此过程! 采石场由其第一层的宽度定义。 挖掘机的定义是一天之内的挖掘能力。 输入值 采石场的宽度。整数,始终> =1。 挖掘机挖掘速度。整数,始终> = 1。 输出量 每天采石场的进度。从平坦的未接触地面开始,直至完成采石场。 规则 在最后一天,挖掘的单位可能少于挖掘机的能力。过多的工作不会在任何地方使用,因此您应该只输出完全挖掘的采石场。 必须整天都在输出中显示进度。您无法清除或覆盖输出中的前一天进度。 每天输出的尾随换行符和前导换行符的数量均可接受。 这是代码高尔夫,因此请使代码尽可能紧凑。 澄清说明 工作从平坦的地面开始。所显示地面的长度是采石场的宽度+2。因此,在采石场的两侧始终会有一个下划线字符。 __________ 挖掘采石场的宽度看起来像这样: _ _ \ / \ / \ / \/ 像这样的奇数宽度 _ _ \ / \ / \ / V 以下是采石场进度的示例: _ _______ V dug 1 unit _ ______ \/ …

3
多项式->积分
给定一个具有有理系数的变量的多项式,输出仅包含1,变量和定积分的等价表达式。例如, - X 2可表示为∫ X ∫ 1 1 1D 吨 X d ü。 E := 1 | var | ∫EEEdvar 允许使用任何合理的输入/输出方法。 例子: 您的分数将是您的代码长度乘以∫测试用例上使用的符号数。您应该能够为您的课程打分。最低分获胜。 测试用例: 4/381*x^2+49/8*x^3-17/6 311/59*x^2-92/9*x^3-7/15*x 333/29*x^3+475/96*x^8 打高尔夫球将变得很困难,因为我不能只打代码或输出,所以我不知道更改是否会帮助或伤害我的成绩,直到我尝试为止。 不要让分数限制您的创作。我们欢迎您回答问题,主要是对分数的一部分进行了优化,即使另一部分的评分很差。

2
Collat​​z风格的打蛋
受到伟大的API复活节彩蛋狩猎的启发! 摘要 您的任务是使用尽可能少的步骤在“ Collat​​z空间”(稍后说明)中搜索预定整数。 介绍 这项挑战基于著名的Collat​​z猜想,希望这里至少每个人都听说过。这是“ 打印超级Collat​​z编号”的摘要。 将在Collat​​z序列(也称为3X + 1的问题)是你用任意正整数开始,在这个例子中,我们将使用10和应用这一套步骤吧: if n is even: Divide it by 2 if n is odd: Multiply it by 3 and add 1 repeat until n = 1 的在Collat​​z距离C(m,n)的两个数字之间m和n,对于这一挑战的目的,是在两个数字之间的距离在Collat​​z图表(贷记@tsh告诉我关于这个概念),其被定义为如下:(使用21和13作为例子): 写下了在Collat​​z序列m(在这种情况下,21): 21, 64, 32, 16, 8, 4, 2, 1 写下了在Collat​​z序列n(在这种情况下,13): 13, 40, 20, 10, 5, …

4
Base Pi中的整数
背景: Pi(π)是一个超越数,因此具有一个非终止的十进制表示形式。同样,如果以其他整数为基数,表示形式也不会终止。但是,如果我们将它写在基础上π怎么办? 小数位数代表10的幂,因此: π = 3.14… = (3 * 10^0) + (1 * 10^-1) + (4 * 10^-2) + … 因此,以base为底π,数字将代表以下各项的幂π: π = 10 = (1 * π^1) + (0 * π^0) 在这个新的基础上,整数现在具有非终止表示形式。因此,十进制的10现在变为: 10 => 100.01022… = (1 * π^2) + (0 * π^1) + (0 * π^0) + (0 …

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.