编程拼图和代码高尔夫

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

10
以前的复合数字
序列定义 构造正整数序列,a(n)如下所示: a(0) = 4 a(n)除第一项外,每个项都是满足以下条件的最小数: a)a(n)是一个复合数, b)a(n) > a(n-1), c)a(n) + a(k) + 1是每个复合数0 <= k < n。 因此,我们从开始a(0) = 4。下一个条目a(1)必须为9。它不能为5或7因为它们不是复合的,所以不能为6或8因为6+4+1=11不是复合8+4+1=13的也不是复合的。最后9+4+1=14是,因此是a(1) = 9。 下一个条目a(2)必须为10,因为它是9与10+9+1=20和10+4+1=15一起大于两者的最小数字。 对于下一个条目,11并且13都是,因为他们没有复合。12之所以出来是因为12+4+1=17这不是复合的。14之所以出来是因为14+4+1=19这不是复合的。因此,15是所述序列的下一个术语,因为15是复合材料和15+4+1=20,15+9+1=25以及15+10+1=26是所有各复合,所以a(3) = 15。 以下是此顺序中的前30个术语: 4, 9, 10, 15, 16, 22, 28, 34, 35, 39, 40, 46, 52, 58, 64, 70, 75, 76, 82, 88, 94, …

8
模拟模型神经元
一个Izhikevich神经元是一个简单但非常有效的生物神经元,专为在离散时步仿真使用的模型。在这个高尔夫挑战赛中,您将实现此模型。 参量 与生理上精确的模型的数十个参数相比,该模型仅涉及组织为2个微分方程的7个变量。 v和u是神经元的两个状态变量。在此,v“快速”变量代表随着时间的细胞电势,并且u“缓慢”变量代表某些膜的性质。v变量是最重要的变量,因为这是模拟的输出。 a,b,c,和d被固定描述该神经元的特性的常数。根据所需的行为,不同类型的神经元具有不同的常数。值得注意的c是,复位电位是细胞在加标后返回的膜电位。 I代表输入到神经元的电流。在网络仿真中,这会随着时间而变化,但是出于我们的目的,我们将其I视为固定常数。 该模型 该模型具有非常简单的伪代码。首先,我们采用的常量值abcd并使用它们来初始化v和u: v = c u = b * c 接下来,我们将根据需要遍历仿真代码多次。每次迭代代表1毫秒的时间。 for 1..t: if v >= 30: # reset after a spike v = c u = u + d v += 0.04*v^2 + 5*v + 140 - u + I u += a …

6
Panfix到括号中的括号
Quylthulg是Chris Pressey 编写的一种语言,它试图通过使用panfix来解决中缀表示法的问题: 像postfix一样,panfix不需要部署神秘的设计(例如括号)来覆盖默认的运算符优先级。同时,panfix允许以与infix相同的顺序和方式来指定术语,这对于已经习惯infix的人来说无疑是一种自然而直观的表示法。 如何获得前缀表示法的便利性以及前缀或后缀的明确性?当然,全部使用这三个! =y=+*3*x*+1+= 更正式,更+是运营商,并a和b是表达式。然后(a+b)是一个有效的(带括号)中缀表达式,该表达式的panfix表示为+a+b+,其中并置表示串联。 您的目标是获取一个panfix字符串并将其转换为带括号的后缀: (y=((3*x)+1)) 为简单起见,我们将进行以下更改: 运算符只能由两个唯一的字符组成(您可以选择任何一个,但是在这里我将使用*和+)。 只有一个文字,它由另一个不同的字符组成(您可以选择任何一个,但在这里我将使用_)。 输入将是格式正确的panfix表达式。 对于复杂性,我们将进行以下更改: 运算符可以包含任意数量的正字符,而不仅仅是一个。 这使挑战变得更加棘手,因为您无需确定字符串的其余部分就不必确定给定的操作符子字符串的分区方式。 这是挑战的参考实现,由@ user202729提供。 测试用例 format: input -> output +*+_*+_*+++_+*+_*+_*+++ -> ((_*+_)+(_+(_*+_))) **++*+***++_+_++_+*++*+***_*++*+*****_**_*_*** -> ((((_+_)+_)*++*+***_)*(_*(_*_))) ***_**_***_* -> ((_**_)*_) +_+_+ -> (_+_) *+*+++**+***+++++_*+*+++**+***+++++_*+*+++**+***+++++ -> (_*+*+++**+***+++++_) *++++*+*_*_*+*+++****+_++****+_++****++*+*+++_*+++ -> (((_*_)+*+(_++****+_))*+++_) +**+_*+_*+*_*+*_*+*_+*_+**+ -> (((_*+_)*_)+(_*(_+*_))) +**+++++_+++++_+++++*_*+*+_++++++_+++++_+++++++* -> (((_+++++_)*_)+*(_+(_+++++_))) +*+*+_+*+_+*+*_*+*_*+*+_+*+_+*+*+ -> (((_+*+_)*_)+(_*(_+*+_))) …

2
逻辑门的格里曼德
多数函数是一个布尔函数,它接受三个布尔输入并返回最常用的。例如,如果maj(x,y,z)是多数功能并T表示true和Ffalse,则: maj(T,T,T) = T maj(T,T,F) = T maj(T,F,F) = F maj(F,F,F) = F 这个问题涉及将布尔函数编写为多数函数的组合。多数函数的5元组成的示例是(x1,x2,x3,x4,x5) => maj(x1,x2,maj(x3,x4,x5))。此函数在这些样本输入向量上返回以下输出: (T,T,F,F,F) => maj(T,T,maj(F,F,F)) = maj(T,T,F) = T (T,F,T,T,F) => maj(T,F,maj(T,T,F)) = maj(T,F,T) = T (T,F,T,F,F) => maj(T,F,maj(T,F,F)) = maj(T,F,F) = F (F,F,F,T,T) => maj(F,F,maj(F,T,T)) = maj(F,F,T) = F 任务 编写一个程序,该程序输入一个正整数n和一个长度为n的布尔向量列表,并输出一个多数门树,如果可能,则在所有给定向量上返回true。该函数可能会在约束列表之外的向量上返回true或false。 向量列表可以按您喜欢的任何格式输入。如果愿意,可以输入向量中真实位置的列表,而不输入向量。因此,例如[TTF,TFT,FTT]or [[T,T,F],[T,F,T],[F,T,T]]或[[1,2],[1,3],[2,3]](真实职位列表)都很好。 输出可以是任何有效的树格式。例如,maj(maj(x1,x2,x3),x4,x5)作品。您可能想要使用单个数字作为变量的替代品,如中所述[[1,2,3],4,5]。例如,反向抛光123m45m也可以。 如果没有起作用的函数,则您的程序应生成错误或输出错误值。 …

7
排队我们的分解
在这个挑战中,我将要求您找到方矩阵的QR分解。矩阵A的QR分解是两个矩阵Q和R,因此A = QR。特别地,我们正在寻找Q为正交矩阵(即Q T Q = QQ T = I,其中I为乘法恒等式,T为转置),R为上三角矩阵(每个值小于其对角线必须为零)。 您将编写通过任何合理方法采用方矩阵并通过任何方法输出QR分解的代码。许多矩阵都有多个QR分解,但是您只需要输出一个即可。 对于矩阵中的每个条目,所得矩阵的元素应在实际答案的小数点后两位内。 这是一场代码高尔夫比赛,因此答案将以字节计分,而字节数越少越好。 测试用例 这些只是可能的输出,只要它们是有效的,您的输出就不必全部匹配。 0 0 0 1 0 0 0 0 0 0 0 0 -> 0 1 0 0 0 0 0 0 0 0 0 1 , 0 0 0 1 0 0 1 0 0 …

4
无点的元组添加
表达功能的最短方法是什么 f(a,b)(c,d)=(a+c,b+d) 用无点表示法? pointfree.io给了我们 uncurry (flip flip snd . (ap .) . flip flip fst . ((.) .) . (. (+)) . flip . (((.) . (,)) .) . (+)) 只需一点点工作就可以缩短到 uncurry$(`flip`snd).((<*>).).(`flip`fst).((.).).(.(+)).flip.(((.).(,)).).(+) 为76个字节。但这似乎还是真的对于如此简单的任务来说漫长而复杂。有什么方法可以将成对加法表示为较短的无点函数? 为了清楚理解我所说的无点,函数的无点声明涉及获取现有函数和运算符,并以创建所需函数的方式将它们相互应用。反引号,括号内文字值([],0,[1..3]等)允许的,但像关键字where和let不是。这表示: 您不得分配任何变量/功能 您不得使用lambda 您可能无法导入 这是CMC时的相同问题

5
析因阶乘
今天在我的统计课上,我发现将某些阶乘相乘时可以简化!例如:5! * 3! = 5! *3*2 = 5! *6 = 6! 你的工作: 给定仅包含阿拉伯数字和感叹号的字符串,请将我的阶乘简化为最短的字符串,以最少的字节数表示您的语言,即高尔夫风格。 输入值 仅包含阿拉伯数字和感叹号的字符串。输入的阶乘不大于200!。每个数字的阶乘不得超过一个。输入可以视为整数列表。 输出量 可能是缩短的字符串,其输入值相等。顺序不重要。阶乘符号是必须的,但是您不需要每个数字使用一个以上的阶乘符号。 测试用例 In: 3!2!2! Out: 4! In 2!3!2!0! Out: 4! In: 7!2!2!7!2!2!2!2! Out: 8!8! In: 23!3!2!2! Out: 24! Also: 4!! In: 23!3!2!2!2! Out: 24!2! In: 127!2!2!2!2!2!2!2! Out: 128! In: 32!56!29!128! Out: 29!32!56!128! 祝你好运

8
尽可能邪恶
介绍 这是此挑战的后续活动,在此过程中,您将扮演那个人的邪恶双胞胎角色。邪恶时,您不想最大化自己的份额,而希望尽可能地不公平,并且不会太明显,这就是为什么您提出以下方案的原因: 您将告诉其他人,您希望自己像兄弟姐妹一样公平,因此您将把整数分成相等长度的片段。因此,对于每个整数,您都会想出合适的人数,以使最大和最小的部分之间的差异最大。 例如,如果给定整数6567,则可以将其保留为原样,将其分为两部分65,67或四部分6,5,6,7。这为您带来以下最大差异: 6567 -> max() = 0 65,67 -> max(|65-67|) = 2 6,5,6,7 -> max(|6-5|,|6-5|,|6-6|,|6-7|,|5-6|,|5-7|,|6-7|) = 2 由于您只想做恶人,所以您不喜欢67它7,因此您将输出2或4。 另一个(不太特殊的情况);给定整数,121131您可以像这样拆分它: 121131 -> max() = 0 121,131 -> max(|121-131|) = 10 12,11,31 -> max(|12-11|,|12-31|,|11-31|) = 20 1,2,1,1,3,1 -> max(…) = 2 这次只有一个解决方案-即3-由于三个人的差异最大。 挑战 给定一个整数,确定最大程度地邪恶的任何可能方式,并报告实现此目标所需的人数。 规则 输入将始终≥1 输入可以是整数,数字列表或字符串 您不必处理无效的输入 测试用例 您只需要报告所需的结果人数,可能的分区仅用于说明: …

30
完美无国界广场
给定后n=m^2,返回一个整数列表,该列表与的整数m x m网格没有边界1 to n。 例子 n = 1(m = 1) 网格: [1] 返回: [] n = 4(m = 2) 网格: [1,2] [3,4] 返回: [] n = 9(m = 3) 网格: [1,2,3] [4,5,6] [7,8,9] 返回: [5] n = 16(m = 4) 网格: [ 1, 2, 3, 4] [ 5, 6, …
16 code-golf  matrix 

1
Google的跳兔
2017年12月4日,Google Doodle是一款具有兔子功能的图形编程游戏。后来的级别相当重要,它们似乎是原子高尔夫球挑战的绝佳候选人。 细节 游戏 有四种可用的动作:向前跳,向左转,向右转和循环。这些动作中的每一个都是一个令牌,对应于它们在游戏中都是一个图块这一事实。 兔子可以面对四个正交方向(即北,南,东,西)。 兔子可以向前跳(在其面对的方向上移动一个正方形)并向左或向右转。 循环内部可能有任意数量的其他移动,包括其他循环,并且它们的迭代计数是任何正整数(尽管从技术上讲,游戏允许迭代计数为0)。 棋盘是一组网格对齐的正方形,并且兔子可以在相邻的正方形之间跳跃。 兔子无法跳入虚空。意味着企图跳板没有任何作用。(这显然使某些人感到惊讶,而另一些人则感到失望。) 正方形已标记或未标记。当兔子在正方形上时,它会被标记。 标记所有正方形后,该级别完成。 您可能会认为存在解决方案。 您的密码 目标:给定董事会,找到一个或多个最短的解决方案。 输入是构成木板的正方形位置的列表(区分标记的正方形和未标记的正方形),输出是移动的列表。输入和输出格式完全无关紧要,只要它们是人类可读和可理解的即可。 获胜标准:每块板在一分钟内找到的最短解决方案的移动总数。如果您的程序找不到任何特定板的解决方案,则该板的分数为(5 *平方数)。 请不要以任何方式对解决方案进行硬编码。您的代码应该能够将任何面板作为输入,而不仅仅是下面示例中给出的面板。 例子 解决方案隐藏在剧透中,使您有机会先玩游戏,然后自己尝试其中的一些。另外,下面仅针对每个提供一种解决方案。 S是兔子的起始正方形(朝东),#是未标记的正方形,并且O是标记的正方形。对于移动,我的表示法是F=向前跳,L=向左转,R=向右转,并LOOP(<num>){<moves>}表示一个循环,每次循环<num>执行<moves>。如果循环可以运行超过最小次数的任何次数,<num>则可以忽略(即无限工作)。 1级: S## FF 第2级: S## # # LOOP(2){FFR} 3级: S## # # ### 循环{FFR} 第4级: ### # # ##S## # # ### LOOP {F LOOP(7){FL}}(由DJMcMayhem找到) 5级: ##### # …

23
范围取整数的序列
考虑一个三角形,其中Ñ个行(1-索引)是第一阵列Ñ的正整数幂Ñ。这是前几行: N | 三角形 1 | 1个 2 | 2 4 3 | 3 9 27 4 | 4 16 64 256 5 | 5 25 125 625 3125 ... 现在,如果将这些能力合并为一个序列,我们将获得OEIS A075363: 1, 2, 4, 3, 9, 27, 4, 16, 64, 256, 5, 25, 125, 625, 3125, 6, 36, 216, …

15
解析带符号的一元数列表
一元数通常只表示非负整数,但是我们可以如下扩展它们以表示所有整数: 正整数N表示为N 1:5 -> 11111 负整数-N表示为0N,后跟N 1:-5 -> 011111 零表示为 0 如果使用0分隔符,则可以明确表示这些数字的列表: 3,-2,0,1 111,011,0,1 111 0 011 0 0 0 1 11100110001 您的任务:获取一个表示这样的带符号的一进制数字列表的字符串,并将其转换为十进制数字列表。 细节 您可以假定输入是带符号的一进制数字的完整列表。特别是,您的程序将不必处理1)空输入或2)以分隔符结尾的输入。 您可以假设每个数字的大小不超过127。对于具有最大字符串或列表大小的语言,可以假设输入和输出将适合您语言的数据结构,但是从理论上讲,算法应适用于以下列表任何大小。 你的程序或功能可以执行的I / O任何标准的方法。输入可以是字符串或字符列表,单字符字符串,整数或布尔值。您可以使用任何两个字符来表示1和0; 如果您不使用1和0,请指定您正在使用的字符。 输出必须是任何合理列表格式的十进制数字(尤其是数字之间必须有某种分隔符)。负数应以减号表示,尽管如果您的语言对负整数使用不同的格式,我也会接受。零可以在输出中表示为0或-0。 测试用例 1 -> 1 0 -> 0 (or -0, and similarly for the other test cases) 011 -> -2 …

10
三角数
(不,不是那些) 挑战 您将获得两个输入。第一个是正整数n > 0,用于输出n x n数字的直角三角形1, 2, 3, ... n。这个三角形从一个角开始,然后在水平和垂直方向上增加一个,在对角线上增加两个。请参阅以下示例以进行澄清。在各列之间保持一个空格,并使所有数字在其特定的列中正确对齐。(毕竟这是ascii艺术)。 第二个输入,x是您选择的四个不同的单个ASCII字符之一,它确定三角形的起始角(并因此确定方向)。例如,您可以使用1,2,3,4或a,b,c,d或#,*,!,)等。请在答案中指定方向的工作方式。 为了澄清该挑战,我将使用1,2,3,4对应于1左上角,2右上角,依此类推。 例子 例如,对于n = 5,x = 1输出以下内容: 1 2 3 4 5 2 3 4 5 3 4 5 4 5 5 对于input n = 11,x = 1输出以下内容(请注意多余的空格,以便使单个数字右对齐): 1 2 3 4 5 6 7 8 9 10 …

17
绘制Lambda blazon
为庆祝希腊在公元前480年在萨拉米斯的胜利2497周年。绘制lambda blazon。 Lambda blazon是涂在希腊盾牌上的lambda,如下所示: 难题:给定正整数奇数n,生成上述屏蔽的ascii艺术图像。 规格: n = 1: ( /\ ) n = 3: ( /\ ) | / \ | ( / \ ) n = 5 ( /\ ) | / \ | | / \ | | / \ | ( / \ ) 图表: n …

15
Levenshtein距离和OEIS(警察)
这是警察的帖子。该强盗后在这里。 您的任务是采用整数输入N并按顺序OEIS A002942输出第N个数字。 该序列由向后写的平方数组成: 1, 4, 9, 61, 52, 63, 94, 46, 18, 1, 121, 441, ... 请注意,前导零被修剪掉了(100变为1,而不是001)。将其连接成一个字符串(或一个长数字给出): 1496152639446181121441 您应在此字符串/数字中输出第N个数字。您可以选择将N设为0索引或1索引(请说明您选择了哪一个)。 测试用例(1索引): N = 1, ==> 1 N = 5, ==> 1 N = 17, ==> 1 <- Important test case! It's not zero. N = 20, ==> 4 N = …

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.