Questions tagged «code-golf»

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

15
多维逆转
给定非负整数的N维正交(无参)数组,并指示要反转的维数,则返回该数组,但沿这些维数反转。该指示可以作为长度为N的布尔列表或从0或1索引的前N个维度的子集的列表给出。 请说明您的输入格式。代码说明深表感谢。 演练示例 我们得到了2层3行4列3D阵列 [[[ 1, 2, 3, 4], [ 5, 6, 7, 8], [ 9,10,11,12]], [[13,14,15,16], [17,18,19,20], [21,22,23,24]]] 和其中之一 [true,false,true](布尔列表) [0,2](0索引列表) [1,3](1索引列表) 我们需要颠倒第一个和最后一个维度的顺序,即颠倒层和行(列)的元素,而不是每一层的行。首先(执行此操作的实际顺序无关紧要),我们颠倒了图层的顺序: [[[13,14,15,16], [17,18,19,20], [21,22,23,24]], [[ 1, 2, 3, 4], [ 5, 6, 7, 8], [ 9,10,11,12]]] 然后我们反转每一行元素的顺序: [[[16,15,14,13], [20,19,18,17], [24,23,22,21]], [[ 4, 3, 2, 1], [ 8, …

11
不断增长的图
考虑固定范围内的一维数字序列,即 [1, 2, 4, 6, 8, 0, 2, 7, 3] in range [0, 10⟩ 不断增长的图形* **是一条线,该线从左到右连接此序列中的所有点,并且始终向上或保持水平。如有必要,该线从上到下环绕,并从那里继续向上到达下一个点。 这项挑战的目标是将序列分成所有不递减的不同子序列,以便与有限的垂直轴一起绘制时,它们将形成一个不断增加的图。这是通过在一个子序列的末尾和下一个子序列的末尾添加一个点来完成的,以便与顶部边界相交的线的角度与与底部边界相交的线的角度对齐,并且两个交叉点具有相同的水平坐标。上面的示例将给出以下输出: [1, 2, 4, 6, 8, 10] [-2, 0, 2, 7, 13] [-3, 3] 相应的图将如下所示: 并延伸轴以获得更好的视图: 所需的输出是构成“不断增加的图”各部分的子序列的列表。进行绘图不是必需的,但是会为您赢得积分;)。输出必须以某种方式清楚地分隔子序列。 笔记 范围的左边界(包括边界)始终为零,右边界为整数N。 该序列将永远不会包含不在范围内的值。 第一个子序列在开始时没有附加点。 最后一个子序列在末尾没有额外的点。 不需要提供绘制子序列所需的起始索引。 测试用例 Input: [0, 2, 4, 6, 1, 3, 5, 0], 7 …

12
醉汉之旅之家
醉汉之旅之家 在这个挑战中,您将要编写一个程序,模拟一个酒鬼从酒吧回家的途中。 输入: 输入将是一个邻接矩阵(表示一个有向图),该矩阵表示酒鬼可以采取的路径。在每个位置,酒鬼都会随机选择一条路径(每个选项的机会大致相等,并且与先前的选择无关)。 假设酒鬼总是从柱子开始(邻接矩阵的第一行)。 如果酒鬼陷入死胡同,可以认为他要么回家了,要么因公共陶醉而被捕,程序应该返回他的路。 可以假设该图将始终包含至少一个死角。 还可以假定酒鬼将始终能够退出酒吧(第一行将不全为零),并且如果酒鬼将卡在某个位置,则该行将用全零表示。 输出: 输出将是酒鬼试图回家的道路。位置的值可以为零或一个索引。 例子: Input [1,0,1,1] [0,0,0,0] [1,0,0,0] [1,1,1,1] Possible Outputs [0,2,0,3,2,0,0,3,1] [0,3,0,3,1] Input [0,1,1,1,0,1] [1,0,1,0,1,1] [0,0,0,0,0,0] [0,0,0,0,0,1] [1,0,0,0,0,0] [0,0,0,0,0,0] Possible outputs [0,1,5] [0,5] [0,1,4,0,2] [0,3,5] [0,3,0,1,4,0,5] Deterministic path: Input [0,0,1,0] [0,0,0,1] [0,1,0,0] [0,0,0,0] Output [0,2,1,3]

19
新密码提示:Word-walker
我想到了一种生成密码的新方法,尽管从长远来看它可能不太聪明,但它仍然可以成为有趣的代码高尔夫。 使用一串字,将生成密码: 在第n个单词中选择第n个字符 如果n大于单词,则继续倒计数 例: This is a fun task! T s a u ! T是第一个字符 s是第二 个字符a是第一个字符,但来回移动它也是第三个字符 u是第二个字符,但由于倒数,它也是第四个字符 “!” 是“任务”中的第五个字符!因此将包含在最终密码中,Tsau! 规则 输入将是一个字符串 用空格分隔字符串,必须包含所有其他字符 大写字母必须保持大写,小写字母相同 您在每个单词中执行n步,其中n是之前的单词数加1 如果n大于单词,则必须向后移动单词,如果按了开始,则再次前进,直到您踩了n次 第一个字符和最后一个字符仅跨过一次,因此在第七个位置上的“ fun”以“ funufun”为例,以n结尾,而不是“ funnuff”,以f结尾 输出必须是字符串 例子: Input Output Once Upon A Time OpAe There was a man Taaa Who made a task Waak …
23 code-golf  string 

15
不完全是罗马三元
给定整数n≥0,请使用数字139ABCDE…和1个字符的分隔符以非位置基3表示法将其输出。每个数字都是3的连续幂,并且分隔符左侧的数字被取反,例如 A931 | B →81-(1 + 3 + 9 + 27)→ 41。一个数字只能出现一次。 严格地,让一个数字的值为: 如果数字是1、3或9,则为它的值 27如果数字是 A B.. 之前的数字值的3倍Z 您的输出应满足sum(右边|的数字值)-sum(左边的数字值|)== input。 例子 input output ---------------- 0 | 1 |1 7 3|91 730 |D1 9999 FEDC|GA9 您可以使用其他非空格字符作为分隔符。还允许您没有分隔符,在这种情况下,最大的数字以正数开头。您不需要处理大于2 32 -1(PMIGDCBA9|RQNLH3)的任何东西。 您可以编写完整的程序或函数,并且可以在任何常用通道上提供输入和输出。 这是代码高尔夫球,因此答案越短越好!

25
按给定顺序对字符串进行排序
您面临的挑战是对字符串进行排序,而不是按照正常的字母顺序(abc..xyz),而是按指定的字母对字符串进行排序。 你必须写一个程序或功能有两个输入端:一个字母一个和串小号。两者都将仅包含小写英文字母,并且都将包含至少一个字符。 您必须在移动字母小号,使得第一次出现在信一出现,再取其信在第二出现一个,等有可能会在某些字母小号没有出现在一,这些都应该在年底左右不能相对移动。 测试用例: A S Result axd haxuizzxaxduxha aaaxxxxdhuizzuh a xyz xyz abc dcba abcd il nmiuplliu iillnmupu asdf qwerty qwerty 最小字节获胜!
23 code-golf  string 

10
一个字母适合另一个吗?
你还记得我的垫子按颜色正确分组吗? 昨天我看着它,发现有些字母适合其他字母。示例:一个字母P适合该字母所在的位置R。因此,这是一个简单的挑战:给定两个字母,如果其中一个字母适合另一个字母(直接或旋转但不翻转),则返回真实值,否则返回假值。也就是说,如果输入为[P,R]或[R,P],则必须返回true,因为在两种情况下一个字母都适合另一个字母。如果得到[L,U],则必须返回false,因为两者都不适合。 规则 输入必须是[0-9A-Z]范围内的两个字母数字字符,因为垫子中还有数字,可以按照您需要的任何形式显示(两个单独的字符作为两个输入,一个列表包含两个字符,一个字符串包含2个字符,无论如何)。 输出必须是一致的(真值和假值必须始终相同)。 以下是配件表(请注意,字母始终适合于其适当位置,以防万一您收到类似[Y,Y]输入的内容): char fits inside chars -------------------------------------------------------- C G,O F B,E,P,R G O I 0,1,7,B,D,E,F,H,K,L,M,N,O,P,R,T,V,W,X,Z L E M W P R S O V A W M 0 O 1 B,E,L 3 O 6 9,O 8 O 9 6,O 我郑重保证我已经测试过孩子垫子上的所有配件。(擦干额头上的汗水。) 这是代码高尔夫球,因此每种语言的最短代码可能会胜出! 一些测试案例 input output ------------- [C,G] …

3
最小矩形盖
矩形盖 假设您有一个位矩阵,例如以下。 1 1 0 0 0 1 1 0 1 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 1 0 1 1 1 1 0 1 1 0 1 1 1 0 1 我们想找到这个矩阵的矩形封面。它是矩阵的一组矩形子集,其中不包含任何0,但一起包含所有1。子集不需要是不相交的。这是上述矩阵的矩形封面示例。 +----+ +----+ |1 1| 0 0 0 …

20
方形三角形
一个正整数x是一个正方形三角形,如果存在两个不同的正整数y和z,则它们小于x,使得所有和 x + y x + z y + z 是完美的正方形。 例如30是一个正方形三角形数字,因为 30 + 6 = 6 2 30 + 19 = 7 2 6 + 19 = 5 2 您的任务是编写一些代码,该代码以正整数作为输入,并确定它是否为正三角形。您应该输出两个不同的值之一,如果输入的是正方形三角形,则输出一个,否则输入另一个。 这是代码高尔夫球,因此答案将以字节计分,而字节数越少越好。 测试用例 这是1000以下的所有正方形三角形数字 30,44,47,48,60,66,69,70,78,86,90,92,94,95,96,98,108,113,116,118,120,122,124,125,126,132,138,142,147,150,152,154,156,157,158,159,160,165,170,176,180,182,185,186,188,190,192,194,195,196,197,198,200,207,212,214,216,218,221,222,224,227,230,232,234,236,237,238,239,240,246,248,253,258,260,264,266,267,268,270,273,274,275,276,278,280,281,282,283,284,285,286,290,296,298,302,303,306,308,310,312,314,317,318,320,322,323,324,326,328,329,330,331,332,333,334,335,336,338,340,344,347,350,351,352,356,357,360,362,364,368,370,371,372,374,376,377,378,380,382,384,385,386,387,388,389,390,392,394,396,402,405,408,410,413,414,415,418,420,422,423,424,426,429,430,432,434,435,436,438,440,442,443,444,445,446,447,448,449,452,456,458,462,464,466,467,468,470,472,476,477,479,480,482,484,485,488,490,491,492,494,496,497,498,500,501,502,503,504,505,506,507,508,509,510,512,515,516,518,522,523,524,527,528,530,533,536,538,540,542,543,546,548,549,550,551,552,554,557,558,560,562,563,564,566,568,569,570,571,572,573,574,575,576,578,579,582,585,588,590,592,593,594,598,600,602,603,604,605,606,608,610,612,613,614,615,616,618,620,621,623,624,626,627,628,630,632,633,634,636,638,639,640,641,642,643,644,645,646,650,652,656,657,658,659,660,662,666,667,668,670,672,674,677,678,680,682,683,686,687,689,690,692,694,695,696,698,700,701,702,704,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,722,723,726,728,730,734,737,739,740,742,744,745,746,750,752,755,756,758,760,762,764,765,767,768,770,772,773,774,776,778,779,780,782,783,784,785,786,788,789,790,791,792,793,794,795,796,797,798,800,802,803,804,805,810,812,814,816,817,818,819,820,822,825,826,827,828,829,830,832,833,834,836,837,838,840,842,846,847,848,849,850,851,852,854,855,856,858,860,861,862,863,864,866,867,868,869,870,871,872,873,874,875,876,877,878,879,880,882,884,888,890,891,893,896,897,898,902,903,904,905,908,912,913,914,915,916,918,920,923,924,926,927,928,929,931,932,933,935,936,938,940,941,942,944,946,947,948,950,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,970,972,974,976,978,980,981,984,986,987,988,992,993,995,996,998 OEIS A242445

6
128年?假想的leap年改革
根据此视频,太阳年是365天,5小时,48分钟,45秒和138毫秒。在当前的公历中,leap年的规则如下: if year is divisible by 400, LEAP YEAR else if year is divisible by 100, COMMON YEAR else if year is divisible by 4, LEAP YEAR else, COMMON YEAR 不幸的是,这种方法每3216年关闭一天。 修改日历的一种可能方法是以下规则: if year is divisible by 128, COMMON YEAR else if year is divisible by 4, LEAP YEAR else, …

26
找出单词的等级
定义 单词的等级定义为当单词的所有可能排列(或排列)按字母顺序排列(例如在字典中)时的位置,无论单词是否有意义。 让我们考虑这两个词-“蓝色”和“可见”。首先,我们将按字母顺序写出这些单词的字母的所有可能排列: "blue": "belu","beul","bleu","blue","buel","bule","eblu","ebul","elub","elbu","eubl", "eulb","lbeu","lbue","lebu","leub","lube","lueb","ubel","uble","uebl","uelb", "ulbe","uleb" "seen": "eens","eesn","enes","ense","esen","esne","nees","nese","nsee","seen", "sene","snee" 现在让我们从左边看,找到所需单词的位置。我们看到单词“ blue”在第4位,“ seen”在第10位。因此,单词“ blue”的等级为4,“ seen”的等级为10。这是计算单词等级的一般方法。确保仅从1开始计数。 任务 您的任务是编写代码,以将任何单词作为输入并显示其排名。排名应该是输出。小心包含重复字母的单词。 例子 "prime" -> 94 "super" -> 93 "bless" -> 4 "speech" -> 354 "earth" -> 28 "a" -> 1 "abcd" -> 1 "baa" -> 3 您可以假定输入完全是小写,并且输入将仅包含字母字符。另外,如果输入空格或无效字符串,则可能返回任何内容。 计分 这是代码高尔夫球,因此最短的代码获胜!

5
确定有多少个轮子
非数学解释 不论您的背景如何,这都是可以理解的解释。不幸的是,它确实涉及一些数学,但是对于大多数具有中学水平的人来说应该是可以理解的。 指针序列是a(n + 1)= a(na(n))的任何序列。 让我们对这个公式进行一点理解,以了解其含义。这只是意味着要找出我们在上一个术语中看到的序列中的下一个术语,往后退许多步并复制找到的术语。例如,如果到目前为止我们有序列 ... 3 4 4 4 3 ? 我们将向后退3步 3 ... 3 4 4 4 3 ? ^ 使我们的结果4。 现在,通常我们可以在两个方向上都无限的磁带上玩游戏,但是我们也可以在轮子上玩游戏,在经过一定数量的步骤后,我们回到序列的开头。 例如,这是序列的可视化 [1,3,1,3,1,3] 现在我们可能会注意到,轮子中的任何数字x超过轮子中的单元数n,也可能是x mod n,因为围绕轮子的每个完整电路都等于无所事事。因此,我们将只考虑所有成员小于轮子尺寸的轮子。 数学解释 指针序列是a(n + 1)= a(na(n))的任何序列。通常,这些定义是从整数到整数,但是您可能会注意到,此定义中唯一需要的是后继函数和逆函数。由于所有循环组都具有这两者,因此我们实际上可以考虑任何循环组上的指针序列。 如果我们开始寻找这些类型的功能,我们会注意到每个功能都有几个相似的功能。例如,在Z 3上,以下3个都符合我们的要求。 f1 : [1,2,2] f2 : [2,1,2] f3 : [2,2,1] (这里的列表用于表示一个函数,该函数仅通过输入对列表进行索引就可以得到结果) 我们可能会注意到这些功能都是彼此“旋转”的。正式什么我通过旋转的意思是,一个函数b是一个旋转一个 IFF …

21
矩阵以“斜杠”顺序
给定两个正数,N >= 2并N <= 100创建一个遵循以下规则的矩阵: 第一个数字从位置开始 [0,0] 第二个数字从位置开始 [0,1] 第三个数字低于第一个数字(位置[1,0]) 以下数字朝“斜线”方向移动 使用的数字范围是[1, N1 * N2]。因此,数字从开始1到两个输入相乘的结果。 输入项 两个数字N >= 2和N <= 100。第一个数字是行数,第二个数字是列数。 输出量 矩阵。(可以输出为多维数组或带换行符的字符串) 例: 给定数字3 and 5输出: 1 2 4 7 10 3 5 8 11 13 6 9 12 14 15 给定数字 2 and 2 1 2 3 4 …
23 code-golf  matrix 

27
广义矩阵迹
灵感。 给出(通过任何方式): 两个参数(或包含两个元素的列表的单个参数)黑盒函数,(输入和输出为1、2、3,…)f: ℤ+ × ℤ+ → ℤ+ 具有至少两行两列的严格正整数矩阵 返回矩阵的函数trace。 什么是功能跟踪? 法线矩阵轨迹是矩阵的主要对角线(左上至右下)的总和: [[1,2,3],[4,5,6],[7,8,9]]→交通[1,5,9]→交通1+5+9→交通15 但是我们不求总和,而是f沿对角线应用: [[1,2,3],[4,5,6],[7,8,9]]→交通[1,5,9]→交通f(f(1,5),9)或f(1,f(5,9)) 请说明您使用的是从左到右还是从右到左。 给定的矩阵和所有中间值将严格为您语言的整数域内的正整数。矩阵可以是非正方形的。 例子 f(x,y) = xy,[[1,2,3],[4,5,6],[7,8,9]]→交通1×5×9→交通45 f(x,y) = xy,[[1,2,3],[4,5,6],[7,8,9]]→交通 →交通1591 f(x,y) = x-y,[[4,5,6],[1,2,3]]→交通4-2→交通2 f(x,y) = (x+y)⁄2,[[2,3,4],[5,6,7],[8,9,10]]→ 5或7 f(x,y) = x+2y,[[1,2,3],[4,5,6],[7,8,9]]→ 47或29 f(x,y) = max(x,y),[[1,2,3],[4,5,6],[7,8,9]]→交通max(1,5,9)→交通9 f(x,y) = 2x,[[1,2,3],[4,5,6],[7,8,9]]→ 2或4 f(x,y) = lcm(x,y),[[2,2,2],[2,2,3],[2,3,3],[4,4,4]]→交通lcm(2,2,3)→交通6 参考实施。

19
重建算术序列
给定一个正整数的有限算术序列,其中一些项从中间删除,请重构整个序列。 任务 考虑一个算术序列:一个正整数列表,其中两个连续元素之间的差是相同的。 2 5 8 11 14 17 现在,假设受以下约束,从序列中删除一个或多个整数: 删除的整数将是该序列的连续项。 序列中的第一个和最后一个整数将不会被删除。 序列中至少保留三个整数。 对于上述顺序,可能的删除包括: 2 5 8 14 17 (removed 11) 2 5 17 (removed 8 11 14) 2 14 17 (removed 5 8 11) 您的任务:给定这些部分序列之一,重建原始的完整序列。 细节 您可能会认为输入有效(有解决方案)并且至少缺少一个术语。序列中的所有数字均为正(> 0)整数。序列在项之间可以具有正或负差(即,可以增加或减少)。它不是一个恒定的序列(例如5 5 5)。 您的解决方案可能是完整程序或功能。任何默认的输入和输出方法都是可以接受的。 您的输入和输出可以是字符串(带有任何合理的定界符),字符串列表或数字列表。您可以使用方便的语言来代表数字。 请在您的提交中提及任何异常的I / O方法/格式,以便其他人能够更轻松地测试您的代码。 测试用例 In: 2 5 …

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.