编程拼图和代码高尔夫

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

21
这个清单可以平衡吗?
要检查一列非负整数是否平衡,可以想象一下将各个权重放在板上,然后尝试将板平衡在枢轴上,以使枢轴左右的汇总相对权重相同。相对重量是通过将其重量乘以其到枢轴的距离得出的(请参见杠杆定律)。 (来源:维基百科) 该图像对应于一个列表[100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5]。该列表是平衡的,因为5到枢轴的距离为20,而到枢轴100的距离为1和5*20 = 100 = 100*1。 例子 3 1 5 7 ######### ^ 在这种情况下,枢轴位于的正下方5,3具有距离2和1且7具有距离1。因此,枢轴的左侧和右侧的两边总计为7(3*2 + 1*1在左侧和7*1右侧),因此列表[3, 1, 5, 7]是平衡的。 但是请注意,枢轴不必放在列表元素之一的下面,而也可以放在两个列表元素之间: 6 3 1 ####### ^ 在这种情况下,距离变为0.5, 1.5, 2.5, …

25
计算宽限期的编辑次数
当您在SE上编辑帖子时,在5分钟宽限期内的所有进一步编辑都会合并到其中。给定您编辑帖子的次数列表,请在宽限期内不算编辑次数。 假设您在几分钟内进行编辑[0,3,4,7,9,10,11,12]。有时会导致3次修改,[0,7,12]其余的会在其宽限期内发生。 0: [3,4] 7: [9,10,11] 12: [] 第一次编辑是在第0分钟。第3和第4分钟的编辑在其5分钟宽限期内,因此不计算在内。 第二个编辑在第7分钟进行。第9、10、11分钟的编辑处于其宽限期内。 第12分钟的第三个编辑正好从第7分钟开始经过5分钟宽限期的边缘。 因此,输出为3。 以分钟为单位的时间列表将是一个递增的整数列表。对于首次发布,第一个数字将始终为0,我们将其视为编辑。 测试用例: [0] [0,3,5,7] [0,3,4,7,9,10,11,12] [0,30,120] [0,4,8,12,16] [0,4,8,12,16,20] [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19] [0,5,10,15,20] [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20] [0,1,4,5,9,11,12,14,16,18,23,24,26,28,29,30] 输出: 1 2 3 3 3 3 4 5 5 6 为了便于复制,以下是输入,输出和输入/输出对: [[0], [0, 3, 5, 7], [0, 3, 4, 7, 9, 10, 11, 12], [0, …

14
你知道你的“ KVZ”吗?
概念 您可以通过哪些方式加扰英文字母,以便仍可以在不破坏音调的情况下将其演唱到Twinkle Twinkle Little Star音乐中? 规则 交换 让我们假设默认情况下可以自由交换以下每个集合中包含的字母而不会破坏音调: {A,J,K} {B,C,D,E,G,P,T,V,Z} {I,Y} {Q,U} {S,X,F} {M,N} 因此,H,L,O,R和W锁定在适当的位置 输出量 程序需要以任何顺序输出包含完整英文字母的单个RANDOM字符串(或字符列表),前提是该顺序满足上述条件。您应该没有办法预测程序将输出哪个字符串(如果忽略种子),这意味着您不能仅仅对其进行硬编码。 您的程序必须有一定的概率(不一定是统一的)生成9!⋅3!⋅3!⋅2!⋅2!⋅2!=1045094409!⋅3!⋅3!⋅2!⋅2!⋅2!=104509440 9! \cdot 3! \cdot 3! \cdot 2! \cdot 2! \cdot 2! = 104509440 输出。 关于间距,定界符或大小写没有特定的格式限制,只是保持一致。 目标 最小字节获胜! 例子: KCDBPSVHIAJLMNOZQRXGUEWFYT A,G,Z,V,P,X,C,H,Y,K,J,L,N,M,O,T,U,R,S,D,Q,B,W,F,I, Ë KVTDCFBHIJALNMOPURSZQGWXYE jcdebxthikalnmogursvq pwfyz ABCDEFGHIJKLMNOPQRSTUVWXYZ 非示例: HLWROABCDEFZXYGIJKMNPQTSVU 概念验证:(Python3,529字节) import random g1 = …

22
反转配电板上的某些开关
受此挑战启发。 目标: 给定一个预先配置的总机和一个索引列表,将给定索引处的交换机反转。 配电盘由包裹在中的一定数量的开关(v或^)组成,-并排列成不同长度的行。这是总机示例: -v-^-v- -^-v- -v-^-v- 反转/翻转开关装置从它改变v到^,或从^到v。 开关从左到右,从上到下索引。例如,在上面的示例v中,第一行中的最后一个将位于位置3,^中间行中的将位于4(使用1索引)。 输入: 代表配电盘的字符串(或字符串列表)。保证匹配正则表达式((-[v^])+-)(\n(-[v^])+-)*。 可能为空的表示索引的数字列表,可能是0或1(或者,如果需要,可以是任意数字)被索引。这些是需要翻转的开关。 输出: 与输入形状相同的配电盘,其中指定的开关反转。任何未指定的开关应保持其初始状态。 规则: 输入将始终正确格式化,并且任何给定的索引都不会超出范围。 索引列表将被排序,并且没有重复项。 在您的答案中说明您使用的索引是0、1或任意索引。 只要输出看起来像输入,尾随空格就可以了。 这是代码高尔夫球,因此最短的代码获胜。 例子: #Using 1-indexing input: #Empty Case [], -v-^-v- output: -v-^-v- input: #Single switch [1], -v- output: -^- input: #Skip a line [3,5], -^-v-v- -v- -^-^- output: -^-v-^- -v- -v-^- input: …

23
查找最接近的三位数十六进制颜色
在CSS中,颜色可以由“十六进制三元组”指定-一个三字节(六位数)的十六进制数字,其中每个字节代表颜色的红色,绿色或蓝色分量。例如,#FF0000完全为红色,等效于rgb(255, 0, 0)。 颜色也可以由使用三个十六进制数字的速记符号表示。通过将每个数字重复,速记扩展为六位数字形式。例如,#ABC变为#AABBCC。 由于十六进制速记中的位数较少,因此可以表示较少的颜色。 挑战 编写一个采用六位数十六进制颜色代码并输出最接近的三位数颜色代码的程序或函数。 这是一个例子: 输入十六进制代码:#28a086 红色成分 0x28 = 40(十进制) 0x22 = 34 0x33 = 51 0x22更近,因此缩短的颜色代码的第一位是2 绿色成分 0xa0 = 160 0x99 = 153 0xaa = 170 0x99更近,所以第二个数字是9 蓝色成分 0x86 = 134 0x77 = 119 0x88 = 136 0x88更近,所以第三位是8 缩短的颜色代码为#298(扩展为#229988) 您的程序或函数必须接受以开头的六位十六进制颜色代码作为输入,#并输出以前面的三位数颜色代码作为输入#。 例子 #FF0000→#F00 #00FF00→#0F0 #D913C4→#D1C #C0DD39→#BD3 #28A086→#298 …

24
做紫菜刀
紫菜包饭(Korean)是韩国料理,有点像寿司卷。 这是代表朝鲜拌饭的韩国图释: @)))))))))) 您的任务是制造ASCII Gimbap切割机。 规则 输入是仅由@和组成的字符串)。 输出使用剪切每个有效的Gimbap ),然后 @在它们之间添加。因此,例如@))到@) @)。 有效紫菜饭以开头,@后跟任意数量的)。 如果没有有效的拌饭,则输出为空白。 输入输出 Input | Output @))))) | @) @) @) @) @) @))))))) | @) @) @) @) @) @) @) @))@))) | @) @) @) @) @) @) | @) )) | @ | @@)@@@))) | @) …

3
牛羚的路径
打高尔夫球的程序或功能,使角马的第nthnthn^{\text{th}}位置在无限的棋盘上从第1平方开始,该棋盘以逆时针方向的正方形螺旋编号,在该位置,角马总是访问她能到达的,编号最小的正方形。尚未访问。111 灵感:被困骑士和OEIS A316667。 编辑:此序列现在在OEIS上为A323763。 该代码可以产生第nthnthn^{\text{th}}位置,前nnn位置,或生成不带输入的序列。 可以在nnn跳跃之后(或最多)随意提供其位置,但是如果是这样,请在您的答案中清楚说明,并确保输入n=0n=0n=0产生1(或[1]适当的话)。 这是code-golf,因此目标是以您选择的语言生成尽可能少的字节的工作代码。 注:角马被截留(很像骑士确实在他的2016th2016th2016^{\text{th}}位置,方208420842084,和骆驼确实在他的3723rd3723rd3723^{\text{rd}},方708170817081)在她12899744968th12899744968th12899744968^{\text{th}}在广场的位置128518502581285185025812851850258。大于nnn可能未定义代码的行为。(感谢Deadcode提供了找到该代码的C ++代码!) 详情 该板看起来像下面,并且可以无限期地继续: 101 100 99 98 97 96 95 94 93 92 91 102 65 64 63 62 61 60 59 58 57 90 103 66 37 36 35 34 33 32 31 56 89 104 67 38 17 16 15 …

24
强盗:隐藏的OEIS子字符串
这是警察和强盗的挑战。这是强盗的线索。在警察的线程是在这里。 警察将从OEIS中选择任何序列,并编写一个程序p,该程序打印出该序列中的第一个整数。他们还将找到一些字符串s。如果将s插入p,则此程序必须打印序列中的第二个整数。如果将s + s插入p的相同位置,此程序必须打印序列中的第三个整数。s + s + s在相同位置将打印第四个,依此类推。这是一个例子: Python 3,序列A000027 print(1) 隐藏的字符串是两个字节。 字符串为+1,因为程序print(1+1)将打印A000027中的第二个整数,程序print(1+1+1)将打印第三个整数,依此类推。 警察必须揭示序列,原始程序p和隐藏字符串s的长度。强盗通过找到任何字符串裂纹提交到该长度并插入它来创建序列的位置。该字符串不需要匹配预期的解决方案即可成为有效裂纹,插入字符串的位置也不需要。 如果您破解了其中一个警察的答案,请发布解决方案(显示隐藏的字符串和位置)以及答案的链接。然后评论警察的答案,并在此处提供您的破解链接。 规则 您的解决方案必须能按顺序使用任意数量的数字,或者至少要解决由于内存限制,整数/堆栈溢出等原因导致失败的合理限制。 胜出的强盗是破解最多提交内容的用户,而决胜局是首先达到该破解数量的用户。 获胜的警察是最短的s未被破解的警察。决胜局是最短的p。如果没有完整的意见书,那么拥有解决方案的警察将获得最长的胜利。 为了声明安全,您的解决方案必须保持完整状态1周,然后显示隐藏的字符串(及其插入位置)。 s可能不是嵌套的,它必须首尾相连。例如,如果s为10,则每次迭代都会进行,10, 1010, 101010, 10101010...而不是10, 1100, 111000, 11110000... 禁止使用所有加密解决方案(例如,检查子字符串的哈希)。 如果s包含任何非ASCII字符,则还必须指定使用的编码。

18
折叠数
让我们在自然数上定义一个a函数,以10个,如下所示:ñnndķdk − 1…d1个d0dkdk−1…d1d0d_k\; d_{k-1}\; \dotsc\; d_1\; d_0 只要相邻数字相等,就用它们的总和从左到右替换它们。如果有任何这样的数字,请重复相同的步骤。d一世di − 1didi−1d_i\;d_{i-1}d一世+ di − 1di+di−1d_i+d_{i-1} 换句话说,在每次迭代中,我们贪婪地获取所有相等的相邻相邻数字对,并同时用它们的和替换它们(如果它们重叠,则使用最左边的一对)。 例 让我们以为例:99889988\texttt{9988} 相等的第一相邻数字是两个99\texttt{9} 因此,我们将其替换为,从而得到9 + 9 = 189 + 9=18\texttt{9 + 9} = \texttt{18}1888年1888\texttt{1888} 由于我们仍在第一个左右遍历中,并且仍然有两个我们需要首先替换它们88\texttt{8} 这样我们得到1816年1816\texttt{1816} 发生了一些变化,因此我们需要进行另一次迭代 但是没有这样的数字,所以我们停止 因此,该序列中的号为。9988日9988th9988^\text{th}1816年18161816 挑战 前200个术语是: 0,1,2,3,4,5,6,7,8,9,10,2,12,13,14,15,16,17,18,19,20,21,4,23,24,25,26,27,28,29,30,31,32,6,34,35,36,37,38,39,40,41,42,43,8,45,46,47,48,49,50,51,52,53,54,10,56,57,58,59,60,61,62,63,64,65,12,67,68,69,70,71,72,73,74,75,76,14,78,79,80,81,82,83,84,85,86,87,16,89,90,91,92,93,94,95,96,97,98,18,10,101,102,103,104,105,106,107,108,109,20,21,4,23,24,25,26,27,28,29,120,121,14,123,124,125,126,127,128,129,130,131,132,16,134,135,136,137,138,139,140,141,142,143,18,145,146,147,148,149,150,151,152,153,154,20,156,157,158,159,160,161,162,163,164,165,4,167,168,169,170,171,172,173,174,175,176,24,178,179,180,181,182,183,184,185,186,187,26,189,190,191,192,193,194,195,196,197,198,28 您的任务是生成该序列,或者 给定,返回该序列中的数字,ñnnñ日nthn^\text{th} 给定,返回该序列中的前数字ñnnñnn 或无限期地生成序列。 您可以选择使用或索引编制,但是请指定使用哪一个。0001个11 测试用例 您可以使用上述给定的术语,但是这里有一些较大的术语: 222 -> 42 1633 -> 4 4488 …

19
模拟是钝的!
模拟时钟有两只指针*:小时和分钟。 随着时间的流逝,这些指针绕着时钟的脸盘旋。分针每旋转一圈,时针就会旋转1/12。时针旋转2圈表示整整一天。 由于这些指针固定在同一中心点上并围绕该点旋转,因此您始终可以计算指针之间​​的角度。实际上,在任何给定时间都有2个角度。较大的一个和较小的一个(有时它们都等于180,但这并不重要) *我们假设的时钟没有秒针 任务 给定时间为24小时格式,请以度为单位输出双手之间的较小角度。如果手是直接相对海誓山盟(如在6:00,18:00等)输出180 规则 输入可以视为:-用定界符分隔的字符串:6:32,14.26 -2个独立的值,字符串或整数:6, 32,14, 26 -由2个值,字符串或整数组成的数组:[6, 32],[14, 26] 您也可以选择指定你的答案需要输入要填充到2个位数(假设你把字符串),即:06:32,06, 32,[06, 32] 你还可以任选地反转的输入的顺序,同时分钟然后小时,即:32:6,32, 6,[26, 14] 小时将是介于(0和23)之间的整数值(分钟)将是介于(0和59)之间的整数值 您可以假设分针沿着脸部以6度为增量(每个分钟值一个均匀间隔的位置) 您可以假定时针沿着脸部以0.5度为增量进行增量(一个分钟的位置均匀间隔)。每分钟值/小时值) 输出必须以度为单位,而不是以弧度为单位。您可以包括尾随.0在整数 计分 这是代码高尔夫,因此每种语言中的字节数最少获胜! 测试用例 Input: 06:32 Output: 4 Input: 06:30 Output: 15 Input: 18:32 Output: 4 Input: 06:01 Output: 174.5 Input: 00:00 Output: 0 Input: 00:01 Output: …
23 code-golf  math  number  date 

11
最小的整数磁盘
挑战在于找到包含某些给定点的最小磁盘。但是,由于在这一挑战中磁盘的坐标和半径都必须都是整数,这一点变得有些棘手。 您的输入将是具有整数坐标x和的点的列表y。您可以将其作为元组列表,列表列表或任何其他表示对集合的方式。x并且y都是(可能是负数)整数。每个点都保证是唯一的,并且至少会有一个点。 你的输出将在3号,形式的磁盘X,Y和R。X,Y和R都是整数,X并且Y代表了磁盘的中心,R代表它的半径。每个给定点与中心之间的距离必须小于或等于R,并且必须不存在这样的较小的磁盘,该磁盘R也要满足此条件。 对于给定的输入,可能会有多种解决方案,在这种情况下,您的代码必须至少输出其中一种。 您可以使用语言支持的任何种类的几何内置函数(如果有),并且输入/输出可以通过内置的点/磁盘对象而不是数字来实现。 测试用例 Input (Possible) Output(s) (x,y) (X,Y,R) ------------------------- (0,0) (0,0,0) ------------------------- (0,1) (0,0,1) (1,0) (1,1,1) ------------------------- (1,4) (4,4,3) (3,2) (4,1) (4,5) (5,2) (7,4) ------------------------- (-1,0) (0,0,2) (2,0) (1,0,2) ------------------------- (-1,0) (1,0,2) (2,1) (0,1,2) ------------------------- (0,0) (1,0,1) (1,1) (0,1,1) 最少的字节数获胜。

17
真正的宝藏是我们一路走来的数字
您的任务是编写仅输出整数的程序,函数或代码段(是的,允许代码段)。但是,您必须能够将提交分隔成多个前缀,这些前缀也可以产生不同的整数。您不能使用以前的前缀中出现的任何字节。例如,我们可以有前缀: 1 # 1 (Now we can't use 1) 1-6 # -5 (Now we can't use - or 6) 1-6/3 # -1 (Now we can't use / or 3) 1-6/3+0xA # 9 Final submission 规则 您的目标是创建尝试创建最独特的整数,同时使它们接近零。 得分系统是((number of unique integers)**3)/(sum of absolute values),您的得分越高,就越好。上面的示例得分。(43)/(1+|−5|+|−1|+9)=64/16=4(43)/(1+|−5|+|−1|+9)=64/16=4(4^3)/(1+\lvert-5\rvert+\lvert-1\rvert+9) = 64/16 = 4 至少应有两个唯一的整数(不能除以零!) 请格式化您的答案,类似于: # …

15
半回文之谜
回文是一个本身相反的词。 现在有些单词看起来像回文,但看起来却不然。例如,考虑单词 sheesh, sheesh不是回文,因为它的反向是hseehs不同的,但是如果我们认为sh是单个字母,那么它的反向是sheesh。我们将这种词称为半回文。 具体来说,如果我们可以将单词拆分成一定数量的块,则该单词为半回文,这样当块的顺序颠倒时,便形成了原始单词。(因为sheesh这些块是sh e e sh),我们也将不要求任何块包含两个单词的字母(否则每个单词都是半回文)。例如rear,不是半回文,因为它r ea r具有一个块(ea),其中包含来自原始单词两边的字母。我们认为奇数长度的单词的中心字符不在单词的两侧,因此对于奇数长度的单词,中心字符必须始终位于其自己的块中。 您的任务是获取正整数列表,并确定它们是否为半回文。您的代码应输出两个一致的不相等值,如果输入是半回文,则应输出一个,否则将输出另一个。但是,代码的字节序列本身必须是半回文。 答案将以字节计分,而字节数越少越好。 测试用例 [] -> True [1] -> True [2,1,2] -> True [3,4,2,2,3,4] -> True [3,5,1,3,5] -> True [1,2,3,1] -> False [1,2,3,3,4,1] -> False [11,44,1,1] -> False [1,3,2,4,1,2,3] -> False 程序生成更多的测试用例。 borrible指出,这些与广义Smarandache回文相似。因此,如果您想做进一步的阅读,那是一个开始的地方。

16
给我烤一块蛋糕
我的生日是一个月,这是一块美味的蛋糕。 .-""-. .-" "-. |""--.. "-. | ""--.. "-. |""--.. ""--..\ | ""--.. | | ""--..| ""--.. | ""--.. | ""--..| 用最少的字节数,为我构造这块蛋糕。您可以将其打印到STDOUT或将其作为功能结果返回。 只要字符正确排列,任何数量的外部空格都是可以接受的。 规则和I / O 无输入 输出可以通过任何方便的方法给出。 完整的程序或功能都是可以接受的。 禁止出现标准漏洞。 这是代码高尔夫球,因此所有常见的高​​尔夫规则都适用,并且最短的代码(以字节为单位)获胜。

20
不相邻项目的最大合计子序列
介绍: 由这两个问题SO(没有来自同一类怀疑)的启发:打印不相邻的元件的java在最大总和的子阵列的元件和阵列的非相邻元件的最大总和,将被打印。 挑战: 给定一个整数列表,输出由具有最高和的不相邻元素组成的子序列。这里有一些例子: [1,2,3,-1,-3,2,5]将导致基于0的索引处[1,3,5](总和为9)[0,2,6]。 [4,5,4,3]会在基于0的索引处产生[4,4](总和8),[0,2]或者在基于0的索引处产生[5,3](总和8)[1,3]。 [5,5,10,100,10,5]会导致基于0的索引或产生[5,100,5](总和110)。[0,3,5][1,3,5] 上面这些示例中最重要的是,包含元素的索引彼此之间至少相距2。如果我们[5,5,10,100,10,5]更深入地看这个例子:我们有以下包含不相邻项的潜在子序列;索引低于它;其总和如下: [[5],[10],[100],[10],[5],[5],[100,5],[10,5],[10,10],[5,5],[5,10],[5,100],[5,5],[5,10],[5,100],[5,10],[5,100,5],[5,100,5],[5,10,5],[5,10,10]] // non-adjacent subsequences [[5],[ 4],[ 3],[ 2],[1],[0],[ 3,5],[ 2,5],[ 2, 4],[1,5],[1, 4],[1, 3],[0,5],[0, 4],[0, 3],[0, 2],[1, 3,5],[0, 3,5],[0, 2,5],[0, 2, 4]] // at these 0-based indices [ 5, 10, 100, 10, 5, 5, 105, 15, 20, 10, 15, 105, 10, 15, …

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.