编程拼图和代码高尔夫

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

4
我们有什么?
受到我们心爱的天才的启发和记忆, RIP 他发明并实施了dfns-他的巨著和挑战主题。 对于感兴趣的人:John的最新完整dfns文档和视频。 任务 给定ASCII源代码,请回答它属于以下四个类别中的哪个类别: 二进位掺杂 一元掺杂 Dfn 其他 您可以返回任何四个一致的值,但是如果不明显,请说明您的映射。 细节 您可以假设源代码始终以大括号开头,以大括号{结尾}。 可能会出现递归嵌套的括号(例如{{{}}}),但是类别1-3永远不能使括号嵌套深度低于1({}{}“ Other”也是),并且所有括号都必须平衡({{}“ Other”也是如此)。 一行中以下上下文中的字符将被忽略: 在#(评论)的右边:significant#ignored 在单引号'... '(即一个字符串): significant'ignored'significant(这适用于#太:'#'significant) 在未配对报价单的右边'(左侧配对报价单):significant'ignored 在花括号级别1中(即,不包括嵌套括号): 二进位掺杂包含不间断的短语 ww 单调掺杂不包含ww,但包含aa Dfns既不包含ww也不包含aa 测试用例 二进位掺杂 {ww} { www } { ''ww' } {aa ww} {'#''#'ww?aa} 单声道掺杂 {aa} {aaaa} {aa{ww}'ww'} {w#w' aa' } {aaw*w} {w'\'aa\''} Dfns {} …

10
二维气泡排序
排序对于二维数组没有意义...还是吗? 您的任务是获取一个输入网格,并对它应用类似于冒泡排序的算法,直到网格中的所有值沿每一行和每一列从左到右,从上到下不递减。 该算法的工作原理如下: 每次遍历都从上到下逐行进行,比较/交换每个单元格及其右侧和下方的邻居。 如果该单元格仅大于其右侧和邻域之一,则与该单元格大于 如果该单元格大于其右侧邻居和下方邻居,请与较小的邻居交换 如果单元格大于其右侧和下方的邻居(均为相同值),则与下方的邻居交换。 如果该单元格不大于其右侧和相邻单元格中的任何一个,则不执行任何操作 继续进行此操作,直到整个过程中没有进行交换为止。这是每行和每列从左到右,从上到下按顺序排列的时间。 例 4 2 1 3 3 5 7 2 1 通过的第一行将交换4和2,然后将4与1交换。 2 1 4 3 3 5 7 2 1 当我们得到中间的3时,它将与下面的2交换 2 1 4 3 2 5 7 3 1 然后将5与下面的1交换 2 1 4 3 2 1 7 3 5 第一遍的最后一行将7一直移到右侧 …
17 code-golf  grid 

1
将方形网格划分为相等面积的部分
此挑战基于以下难题:给您一个nby n网格,其中带有n标记的单元格。您的工作是将网格划分为多个n部分,其中每个部分均由精确的n单元格组成,每个单元格仅包含一个标记的单元格。 例 这是左边的难题,右边是其(唯一)解决方案: 挑战 您会n以任何合理的格式获得一组零索引的坐标。 [(0,0), (0,3), (1,0), (1,1), (2,2)] 您的工作是编写一个返回任何有效分区(同样,以任何合理的格式)的程序。 [ [(0,0), (0,1), (0,2), (1,2), (1,3)], [(0,3), (0,4), (1,4), (2,4), (3,4)], [(1,0), (2,0), (3,0), (4,0), (4,1)], [(1,1), (2,1), (3,1), (3,2), (4,2)], [(2,2), (2,3), (3,3), (4,3), (4,4)] ] 如果难题没有解决方案,程序应通过抛出错误或返回空解决方案来表明这一点。 输入/输出示例 [(0,0)] => [[(0,0)]] [(0,0), (1,1)] => [ [(0,0), (1,0)], …

26
计算总插槽
给定一个必须按顺序完成的作业列表,每个作业都需要一个插槽来完成,如果在完成一项工作之后接下来的两个插槽不能完成相同的工作(冷却插槽),则要花多长时间来完成全部工作)?但是,可以在此冷却槽中分配其他作业。 例如, [9,10,9,8] => output: 5 因为作业将被分配为[9 10 _ 9 8]。 1.首先,9需要两个冷却点_ _。因此,我们从开始9 _ _。 2.下一个作业10与上一个作业9不同,因此我们可以分配_之一。然后我们将拥有9 10 _。 3.第三,现在不能分配9,因为第一个作业9是相同的作业,需要冷却时间。9 10 _ 9。 4.最后,8与其他任何前两个作业都不相同,因此可以在9之后立即分配,并且由于这是最后一个作业,因此不需要冷却时间。最终列表为9 10 _ 9 8,预期输出为5,即点数(或插槽数) 测试用例: [1,2,3,4,5,6,7,8,9,10] => output : 10 ([1 2 3 4 5 6 7 8 9 10]) [1,1,1] => output: 7 ([1 _ _ …

14
找出所有具有重复值的(对角)对角线
挑战: 给定矩阵输入,确定具有重复数字的对角线和反对角线的数量。 因此,如果我们有一个像这样的矩阵: [[aa,ab,ac,ad,ae,af], [ba,bb,bc,bd,be,bf], [ca,cb,cc,cd,ce,cf], [da,db,dc,dd,de,df]] 所有对角线和反对角线将是: [[aa],[ab,ba],[ac,bb,ca],[ad,bc,cb,da],[ae,bd,cc,db],[af,be,cd,dc],[bf,ce,dd],[cf,de],[df], [af],[ae,bf],[ad,be,cf],[ac,bd,ce,df],[ab,bc,cd,de],[aa,bb,cc,dd],[ba,cb,dc],[ca,db],[da]] 例: [[1,2,1,2,1,2], [1,2,3,4,5,6], [6,5,4,3,2,1], [2,1,2,1,2,1]] 所有对角线和反对角线将是: [[1],[2,1],[1,2,6],[2,3,5,2],[1,4,4,1],[2,5,3,2],[6,2,1],[1,2],[1], [2],[1,6],[2,5,1],[1,4,2,1],[2,3,3,2],[1,2,4,1],[1,5,2],[6,1],[2]] 删除仅包含唯一数字的所有对角线和反对角线: [[2,3,5,2],[1,4,4,1],[2,5,3,2],[1,4,2,1],[2,3,3,2],[1,2,4,1]] 因此,输出为包含重复数字的对角线和反对角线的数量: 6 挑战规则: 如果输入矩阵为空,仅包含1个数字或整个矩阵中仅包含唯一数字,则输出始终为0。 确保输入仅包含正数[1,9](除非它完全为空)。 矩阵将始终为矩形(即,所有行的长度均相同)。 I / O是灵活的。输入可以作为整数列表的列表,或者作为整数的2D数组,或者作为矩阵对象,作为字符串等。也可以将矩阵的一个或两个维度作为附加输入。是否以您选择的语言保存字节。 通用规则: 这是代码高尔夫球,因此最短答案以字节为单位。 不要让代码高尔夫球语言阻止您发布使用非代码高尔夫球语言的答案。尝试针对“任何”编程语言提出尽可能短的答案。 标准规则适用于具有默认I / O规则的答案,因此允许您使用STDIN / STDOUT,具有适当参数的函数/方法以及返回类型的完整程序。你的来电。 默认漏洞是禁止的。 如果可能的话,请添加一个带有测试代码的链接(即TIO)。 另外,强烈建议为您的答案添加说明。 测试用例: Input: Output: [[1,2,1,2,1,2], 6 [1,2,3,4,5,6], [6,5,4,3,2,1], [2,1,2,1,2,1]] [[]] 0 …

3
优化我的翅膀顺序
此推文列出了中餐厅1的翅膀的可能订单: 订购披萨时,我通常会计算出什么尺寸能给我带来最佳的披萨价格比,这很简单。但是,要最小化这家餐厅的订单价格并不是一件容易的事,因此我想为在该餐厅的下一份订单做好准备。 挑战 给定一个大于或等于444的整数,您的任务是返回一个可能的订单,以最小化价格(总体上最便宜)和交易数量。 例 如果我要订购100100100 Wings,事实证明最好的讨价还价将花费$111.20$111.20$111.20。但是,有多个订单将花费该金额,即: [50,50],[25,25,50],[25,25,25,25] 由于第一个订单将使用最少的交易(222),结果将是[50,50]。 规则 输入将是某个整数n≥4n≥4n \geq 4 输出将是订单大小的列表/数组/ ...,总计为nnn,并将订单价格最小化 您可以选择退回所有可能的订单 测试用例 4 -> [4] (4.55) 23 -> [23] (26.10) 24 -> [6,18],[9,15],[12,12] (27.20) 31 -> [6,25] (34.60) 32 -> [4,28],[6,26],[7,25] (35.75) 33 -> [4,29],[5,28],[6,27],[7,26],[8,25] (36.90) 34 -> [6,28],[9,25] (38.00) 35 -> [35] (39.15) 125 …

21
编写一个函数/方法,该函数可以使用北约拼音字母输入字符串并拼写出该单词。标题箱可选
编写一个程序,该程序使用北约拼音字母输入字符串并拼写出该单词。 映射如下: 'A' -> 'Alfa' 'B' -> 'Bravo' 'C' -> 'Charlie' 'D' -> 'Delta' 'E' -> 'Echo' 'F' -> 'Foxtrot' 'G' -> 'Golf' 'H' -> 'Hotel' 'I' -> 'India' 'J' -> 'Juliett' 'K' -> 'Kilo' 'L' -> 'Lima' 'M' -> 'Mike' 'N' -> 'November' 'O' -> 'Oscar' 'P' -> 'Papa' …

10
相互模仿
设AAA为由nnn十进制数字d1,d2,...,dnd1,d2,...,dnd_1,d_2,...,d_n组成的正整数。。。,d n。让BBB为另一个正整数。 对于这一挑战的目的,我们称之为AAA一个山寨的BBB如果存在正整数中的至少一个列表p1,p2,...,pnp1,p2,...,pnp_1,p_2,...,p_n使得: ∑i=1ndipi=B∑i=1ndipi=B\sum_{i=1}^{n}{{d_i}^{p_i}}=B AAA和BBB被称为倒数仿冒如果AAA是的模仿BBB和BBB是的模仿AAA。 例 526526526和853853853是互惠的模仿者,因为: 53+29+63=85353+29+63=8535^3 + 2^9 + 6^3 = 853 和: 83+51+32=52683+51+32=5268^3 + 5^1 + 3^2 = 526 挑战 给定两个正整数AAA和BBB,您的任务是打印或返回真实值,如果AAA和BBB是倒数模仿者,否则返回假值。 澄清和规则 您可以采用任何合理,明确的格式(例如整数,字符串,数字列表等)来获取AAA和BBB AAA和BBB可以相等。如果数字是其自身的对等模仿,则它属于A007532。 代替真/假值,您可以返回两个不同的一致值。 对于1≤A&lt;10001≤A&lt;10001\le A<1000和1≤B&lt;10001≤B&lt;10001\le B<1000,代码必须在完成少于一分钟。如果要花费更多的时间来获得较高的值,则必须能够在理论上解决它们。 这是代码高尔夫球。 测试用例 Truthy: 1 1 12 33 22 64 8 512 23 737 89 89 222 592 526 853 …

16
获取给定年份和月份中第n天的日期
介绍 人们通常将日期称为“ 2018年8月的第二个星期五”或“ 2012年3月的第四个星期日”。但是很难说那是什么日期!您的任务是编写一个接收年,月,周,整数的程序,并输出该日期。 挑战 作为输入,您将获得一年,一个月,一周中的一天以及一个数字。 您可以采用任何合理的格式进行输入,例如在星期几中使用字符串或在工作日中使用零索引,甚至可以在单个字符串中使用年和月。不过,请在回答中说明您的输入格式。 告诉您目标月份的星期几的整数将是1-5的整数。该整数将永远不会指向不存在的一周中的某天(例如,2019年2月的第五个星期五,它不存在)。 岁月永远是美好的。 您的输出可以采用任何合理的格式,包括打印最终日期。但是,请解释您的输出格式和答案。 在输出中提供年份和月份是可选的。另外,您可以假定日期是有效的。 输入和输出示例 考虑一下此输入,其格式为:年为4位数字,月为整数,星期几为字符串,序数为整数: 2019,3,Saturday,2 2019,12,Sunday,1 2019,9 Saturday,1 输出: 3月9 日12月1 日9月7日 这是代码高尔夫球,因此最短的答案为准。
17 code-golf  date 

19
这个数字是小山数字吗?
小山号是在第一个和最后一个具有相同数字的数字,但这还不是全部。在山丘数中,前几位数严格增加,而后几位数严格减少。可以重复的最大数字。 这是一个山顶数字的示例: 12377731 | 1237... | ...731 ^ same ^ | strictly increasing | strictly decreasing ---------+---------------------+--------------------- 12377731 ^^^ okay because largest digit can be repeated 这不是: 4588774 | ...8774 | ^^ not the largest digit | so this has to be strictly decreasing | but it's not, so not …

4
系统会为您提供一个要制作的字符串,并以空字符串开头,并使用追加和克隆成本进行制作
您的任务是创建给定的目标字符串。从一个空字符串开始,您必须在其中添加字符,直到您的字符串与我们想要的字符串相同为止。您可以将一个字符添加到带有成本x的字符串的末尾,或者可以克隆具有成本y的字符串。我们想要的是最便宜的方法。 测试用例 targetString , appendcost, clonecost -&gt; totalcost "bb", 1, 2 -&gt; 2 "bbbb", 2, 3 -&gt; 7 "xzxpcxzxpy", 10, 11 -&gt; 71 "abababab", 3, 5 -&gt; 16 "abababab", 3, 11 -&gt; 23
17 code-golf  string 

19
书面数字序列
这是一个合理的琐碎序列,不在在线整数序列百科全书中。 从一个空序列开始,然后将每个术语定义为用英文写出到目前为止序列中所有数字的字符数,这些数字不带空格。* 供参考(英文的所有(十进制)数字的字符数): zero one two three four five six seven eight nine 4 3 3 5 4 4 3 5 5 4 (这是A52360和A5589的开始。) 由于空序列中存在零位,因此这使第一项a(0)=0a(0)=0a(0) = 0。 这使得第二个条目a(1)=4a(1)=4a(1) = 4因为它需要四个字符来写入“零”,这是迄今为止唯一的数字。 这使第三个条目a(2)=8a(2)=8a(2) = 8因为要再花四个字符来写“四个”,总共要八个字符才能写“ zerofour”。 这使第四个条目a(3)=13a(3)=13a(3) = 13因为要再花五个字符才能写“八”,总共要十三个字才能写“ zerofoureight”。 这使第五个条目a(4)=21a(4)=21a(4) = 21,这是因为要花更多的八个字符才能写“ onethree”,总共要花21个字符才能写“ zerofoureightonethree”。 ...等等。以下是前100个条目: 0, 4, 8, 13, 21, 27, …

19
解码7段显示器
大家可能都知道7段显示器,除了其他以外,它还可以显示所有数字:0 … 90…90\dots 9 挑战 我们仅考虑段,您的任务是给定已打开段的位来解码单个数字。A … G一种…G\texttt{A}\dots\texttt{G} 可以将其编码为8位整数,这是每个数字的表格,其中包含二进制表示形式以及相应的little-endian和big-endian值: Digit0123456789.ABCDEFG01111110001100000110110101111001001100110101101101011111011100000111111101111011Little-endian126481091215191951121271230x7E0x300x6D0x790x330x5B0x5F0x700x7F0x7BBig-endian12612182158204218250142542220x7E0x0C0xB60x9E0xCC0xDA0xFA0x0E0xFE0xDE数字.ABCDEFG小端大端0011111101260x7E1260x7E1个00110000480x30120x0C2011011011090x6D1820xB63011110011210x791580x9E400110011510x332040xCC501011011910x5B2180xDA601011111950x5F2500xFA7011100001120x70140x0E8011111111270x7F2540xFE9011110111230x7B2220xDE \begin{array}{c|c|rr|rr} \text{Digit} & \texttt{.ABCDEFG} & \text{Little-endian} && \text{Big-endian} & \\ \hline 0 & \texttt{01111110} & 126 & \texttt{0x7E} & 126 & \texttt{0x7E} \\ 1 & \texttt{00110000} & 48 & \texttt{0x30} & 12 & \texttt{0x0C} \\ 2 & \texttt{01101101} & 109 …
17 code-golf  decode 

28
给定一个字符串,计算它对应的列数
在Excel中,列的范围为A-Z, AA,AB,AZ,BA,..,BZ依此类推。它们实际上每个代表数字,而是编码为字母字符串。 在此挑战中,将为您提供一串字母,并且您必须计算其对应的列。 一些测试: “ A”返回1(表示它是第一列) 'B'返回2 'Z'返回26 'AA'返回27 'AB'返回28 'AZ'返回52 'ZZ'返回702 'AAA'返回703 您可以假设只给出大写字母。 最短的字节获胜。 祝好运!
17 code-golf  math 

7
拆分位!
我们定义作为鲜明的权力清单2那笔X。例如,V (35 )= [ 32 ,2 ,1 ]。V(x)V(x)V(x)222xxxV(35)=[32,2,1]V(35)=[32,2,1]V(35)=[32,2,1] 按照惯例,此处的权力从最高到最低排序。但这不会影响挑战的逻辑,也不会影响预期的解决方案。 任务 给定一个半素数 ,将V (N )中的每个项替换为另一个与该项加和的2的幂的列表,这样所有结果子列表的并集就是矩阵M的精确覆盖,定义为:NNNV(N)V(N)V(N)222MMM Mi,j=V(P)i×V(Q)jMi,j=V(P)i×V(Q)jM_{i,j}=V(P)_i \times V(Q)_j 其中和Q是N的素数。PPPQQQNNN 通过一些示例,这更容易理解。 例子1 对于,我们有:N=21N=21N=21 V(N)=[16,4,1]V(N)=[16,4,1]V(N)=[16,4,1] 和 V (P )= [ 4 ,2 ,1 ]P=7P=7P=7V(P)=[4,2,1]V(P)=[4,2,1]V(P)=[4,2,1] 和 V (Q )= [ 2 ,1 ]Q=3Q=3Q=3V(Q)=[2,1]V(Q)=[2,1]V(Q)=[2,1] M=(844221)M=(842421)M=\pmatrix{8&4&2\\4&2&1} 要将变成M的精确覆盖,我们可以将16分成8 + 4 + 4和4分成2 + 2,而1保持不变。因此,可能的输出是:V(N)V(N)V(N)MMM1616168+4+48+4+48+4+44442+22+22+2111 [[8,4,4],[2,2],[1]][[8,4,4],[2,2],[1]][ [ 8, …

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.