Questions tagged «code-golf»

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

11
零的权重
给定一个有序的数字列表(可能带有前导零),垂直排列数字,然后让所有零完全下降到底部,所有突出部分都下降到最底部的开放插槽。输出结果整数,除去前导零。 工作实例 假设我们得到以下输入: ['0000312941295', '239124000124581598', '32852353800451258', '10235923505185190', '1491359102149'] 首先,我们将其垂直排列: 0000312941295 239124000124581598 32852353800451258 10235923505185190 1491359102149 然后,逐列地将零“滴过”其他数字,使它们停留在底部并“推”其他数字。这将导致前几个步骤如下: 2000312941295 339124000124581598 12852353800451258 10235923505185190 0491359102149 ^ 2300312941295 329124000124581598 14852353800451258 10235923505185190 0091359102149 ^ 2390312941295 328124000124581598 14252353800451258 10935923505185190 0001359102149 ^ ... 2391312941295 328524538124581598 14232323525451258 10915991001185190 0000350000049 ^ 接下来,放下所有悬垂物,就好像重力将它们像沙子一样拉下来。 2391312941295 3285245381245 1598 14232323525458258 10915991001181190 00003500000495 ^ 2391312941295 3285245381245 …

16
间隔符号
挑战: 输入: 两个整数参数a和b(其中a<b和至少相差2) 输出: 输出或返回此文本,a并b在其中填写: (a,b) = ]a,b[ = {a<x<b} = {a<x&&x<b} = a+1..b-1 [a,b) = [a,b[ = {a<=x<b} = {a<=x&&x<b} = a..b-1 (a,b] = ]a,b] = {a<x<=b} = {a<x&&x<=b} = a+1..b [a,b] = [a,b] = {a<=x<=b} = {a<=x&&x<=b} = a..b 挑战规则: I / O是灵活的。可以打印到STDOUT,以字符串/字符数组等形式返回。可以以两个整数,十进制数和字符串形式输入(不知道为什么,因为您需要计算a+1and b-1,但是请成为我的客人。),等等。 允许任何数量的前导和/或尾随新行,并且允许每行任何数量的尾随和/或前导空格。 等号(包括在同一列中对齐的空格)是必需的,其他字符之间不允许有空格。 a+1b-1在这些计算之后,将其替换为正确的值。 您不得使用≤代替<=。 …

5
5天天气预报
天气预报:错误经常依赖,正确经常忽略。 给定高温和低温以及每天四种天气条件之一,请输出ASCII艺术图形五天天气预报。四个图形指示器的结构如下所示。 \ / -O- Sunny / \ \ / -O(==) Partly Cloudy (====) (==) Cloudy (====) (==) (====) Rainy ///// 预测图表如下:每个图形指标位于其自己的9x5框的中央,整个图表上有5个框。每个框用|字符分隔。在图形指示符的下方是一周中的三字母缩写(MON, TUE, WED, THU, FRI, SAT, SUN),位于其自己的9x1框中。温度低于一周中的某一天,位于自己的9x2框内。一个例子如下所示。 --------------------------------------------------- | | | | | | | (==) | (==) | \ / | \ / | \ / | | …

11
多少个半音
指导方针 任务 给定两个以字符串或列表/数组形式输入的音符,计算它们之间有多少个半音(包括音符本身),并以数字形式输出。 半音说明: 半音是键盘上移或下移的一步。一个例子是C到C#。如您所见,音符C在白色音符上,而C#在其上方是黑色音符。半音是从黑色音符到下一个白色音符(向上或向下)的跳跃,除了: 企业对企业 C到B E到F 从F到E 例子 'A, C' -> 4 'G, G#' -> 2 'F#, B' -> 6 'Bb, Bb' -> 13 规则 两个音符之间的最大距离是13个半音。 第二个输入的注释将始终位于第一个输入的注释上方。 您可以将输入作为字符串或数组/列表。如果将其作为字符串,则注释将以逗号分隔(例如String -> 'A, F',Array -> ['A', 'F'])。 您可以假设您将始终得到两个有效的注释。 锐利将表示为#,单位将表示为b 您的代码必须支持等效谐波(例如,它必须同时支持F#和Gb) 您的代码不需要支持以命名的注释,但是可以不带尖锐或平整的名称来命名(即,您不需要支持E#或Cb)。如果您的代码确实支持它,则可以加分。 您的代码不需要支持双尖或双平。 您可以假设,如果您获得了相同的音符或相同的音高(例如“ Gb,Gb”或“ A#,Bb”),则第二个音符将不比第一个音符高一个八度。 这是代码高尔夫,因此字节数最少的答案会获胜。
21 code-golf  music 

15
键盘移位密码
给出以下输入: 一个整数n,其中n > 0。 字符串s,其中s不能为空且s~=[0-9A-Z]+(仅字母数字大写)。 使用标准的简化QWERTY键盘(如下所示): 1234567890 QWERTYUIOP ASDFGHJKL ZXCVBNM 执行以下操作: 找到每个字符在键盘上的原始行。 根据字母的n原始位置+ n将其替换为正确的等价字母。 EG s="AB"and n=2:A将成为D,B并将成为M。 如果为keyboard_row[position + n] > keyboard_row.length,请重新开始。 EG s="0P"and n=2:0将成为2,P并将成为W。 例子: f("0PLM",1) = 1QAZ f("ZXCVB",2) = CVBNM f("HELLO",3) = LYDDW f("0PLM",11) = 1QSV f("0PLM",2130) = 0PHX 规则 这是代码高尔夫球,最低字节数获胜。 这比乍看之下要困难一些。

20
反向范围后继
给定正整数n,请执行以下操作(并输出每个阶段): 从包含n副本的列表开始n。 执行以下n次数: 在i步骤th,逐渐减少i列表的th条目,直到到达i 因此,举例来说,如果给定的n是4,那么你下手[4,4,4,4],然后在你的第一步[3,4,4,4],[2,4,4,4],[1,4,4,4]。在第二个步骤,你有[1,3,4,4],[1,2,4,4]。第三步[1,2,3,4]。第四步什么都没有做。 所以您的输出是[[4,4,4,4],[3,4,4,4],[2,4,4,4],[1,4,4,4],[1,3,4,4],[1,2,4,4],[1,2,3,4]]。 允许使用任何合理的输入/输出格式。 有标准漏洞。这是代码高尔夫:字节数最小的答案胜出。 用于检查目的的Python实现。

3
解决瞳难题
介绍 用最少的字节数写一本关于Hitori难题的求解器。 挑战 您的任务是为Hitori(日语中的“孤独”一词;游戏名称的含义为“让我一个人呆”)编写解算器。规则如下: 您会看到一个n×n的单元格网格,每个单元格包含1到n(含)之间的整数。 您的目标是通过从给定的网格中删除数字,以确保在该网格的每一行和每一列中都不会出现多次重复的数字,但要遵守以下两个规则中的限制, 您不能从两个相邻的(水平或垂直)单元格中删除两个数字。 其余编号的单元必须全部相互连接。这意味着可以将任意两个剩余编号的单元格与一条曲线连接,该曲线仅由连接相邻剩余编号(水平或垂直)的线段组成。(感谢@ user202729指出这是丢失的) 我希望规则现在已经明确。如果规则有任何不清楚的地方,请查看Wikipedia页面。 测试用例 删除数字的单元格用0表示。 Input -> Output 4 2 2 2 4 0 2 0 4 1 4 2 3 -> 1 4 2 3 2 3 2 1 2 3 0 1 3 4 1 2 3 0 1 2 4 …
21 code-golf  game 

8
创建剪刀动画!
尝试创建一个简单的ASCII美工剪刀动画! 挑战 所有输入将是-31至31的整数。 输出将是动画(要在某处输出,只要替换上一帧即可。允许使用GIF。),动画间隔为(大约)四分之一秒。 如果输入(n)为正: 动画应以开头8<,也就是打开剪刀。 下一个帧是8=。这显示了剪刀的“切割”。 在剪刀后面添加破折号(剪切标记),动画重复进行直到出现n破折号。 如果输入为负: 剪刀开始张开并朝向左侧(例如:),前方>8带有n空格。 剪刀合上并保持面向左(=8)。 随着空间的去除,剪刀重新打开,并且在剪刀后面添加了破折号。 如果输入为零: 仅输出剪刀的开合,为10帧。只要是一致的,它们就可以朝向任何一个方向。 这是代码高尔夫球,因此以字节为单位的最短提交胜出。(即使您的参赛作品显然由于某种新颖的“高尔夫语言”而无法获胜,我们仍然希望看到它。) 只要错误消息本身不干扰动画,就允许出现错误消息。 输入和输出对示例: (为了清楚起见,我将帧分开,但是每帧之间应该大约有0.25秒) Input: 1 Output: 8< 8= -8< Input: 2 Output: 8< 8= -8< -8= --8< Input: 5 Output: 8< 8= -8< -8= --8< --8= ---8< ---8= ----8< ----8= -----8< Input: 0 Output: 8< …

5
我的号码是唯一的吗
在这一挑战中,我们学习了一种使用因子树对每个正整数进行编码的方法。 下面是它的工作原理: 空字符串的值为1。 (S)其中S是具有值的任何表达式小号计算结果为š个素数。 AB其中A和B是与值arbirary表达式甲和乙分别具有值A * B。 例如,如果我们想代表7,我们会做 7 -> (4) -> (2*2) -> ((1)(1)) -> (()()) 事实证明,我们可以使用这种方法表示每个整数。实际上,我们可以用多种方式表示一些数字。因为乘法是可交换的10既是 ((()))() 和 ()((())) 同时,某些数字只能以一种方式表示。以8为例。8只能表示为 ()()() 而且由于我们所有的原子都是相同的,所以我们不能使用可交换性来重组它们。 所以现在的问题是“哪个数字只能用一种方式表示?”。第一个观察是我刚刚开始回到那里的观察。似乎完美的力量具有一些特殊的性质。在进一步研究中,我们可以找到36,即6 2是一个完美的幂,但是具有多种表示形式。 (())()(())() (())()()(()) ()(())()(()) ()(())(())() ()()(())(()) 这是有道理的,因为6已经可以重新排列,因此我们从6中得出的任何数字也必须可以重新排列。 现在我们有了一条规则: 如果数字是具有唯一表示形式的完美幂次,则该数字具有唯一表示形式。 该规则可以帮助我们减少确定一个复合数字是否唯一来确定质数是否唯一。现在我们有了该规则,我们想找出是什么使质数唯一。这实际上是不言而喻的。如果我们采用一个唯一的数字并将其括在括号中,则结果必须是唯一的,并且如果n具有多个表示形式,则结果相反;第n个素数必须具有多个表示形式。这产生了第二条规则: 当且仅当n是唯一的时,第n个素数才是唯一的。 这两个规则都是递归的,因此我们将需要一个基本案例。最小的唯一数字是多少?人们可能会说2,因为它的just (),但1(空字符串)更小并且是唯一的。 1是唯一的。 使用这三个规则,我们可以确定一个数字是否具有唯一的因子树。 任务 您可能已经看到了它的来临,但是您的任务是取一个正整数,并确定它是否唯一。您应该编写执行此计算的程序或函数。您应该输出两个可能的值之一,这些值由您决定,但是一个值应表示“是”,当输入是唯一的时输出,而另一个则表示“否”。 您的答案应以字节计分,较少的字节更好。 测试用例 以下是前几个唯一编号: 1 2 3 4 5 …

5
将HTML页面转换成山峰
任务:将HTML页面转换成山峰! 当HTML页面缩进时,它们看起来像: <div> <div> <div> </div> <div> <div> </div> </div> </div> </div> 但老实说,一座山更能代表这种结构。 因此我们可以将其重写为: /\ /\/ \ / \ / \ 左侧和右侧的最外面的斜线对应于外部div-每对HTML标签都应分别代表/开始标签和\结束标签-内部所有标签都“较高”,并具有相同的结构。 输入: 将没有 <!DOCTYPE> 将没有自动关闭标签,例如<img />或<br /> 标签内可能有属性或内容 可能有空格或制表符-您的程序应忽略这些 <或</与标记名称之间将没有空格。 所有输入均为有效HTML 输出 -代表上述标记的山脉。 更多测试用例: 输入: <div id="123"> HI </div><a><span></span></a> 输出: /\ /\/ \ 输入: <body id="<"></body> 输出: /\

20
我希望我的书远离这张桌子
故事 因此,我有一本书想与桌子分开,只剩下其他书。我想知道我需要多少本书才能达到本书的长度。nnn 这是我在Wolfram的朋友为我绘制的可视化效果: Wolfram和Wikipedia中有关该主题的更多信息。 挑战 给定整数输入,输出顶书要与桌子水平隔开本书长度需要多少本书。或在以下不等式中 找到输入的的最小整数值。 nnnnnn mmmnnn∑i=1m12i≥n∑i=1m12一世≥ñ\sum_{i=1}^{m}\frac{1}{2i} \geq n 编辑:对于分数,至少使用IEEE单精度浮点。抱歉,发布后无法编辑挑战 (OEIS A014537) 测试用例 1 4 2 31 3 227 5 12367 10 272400600

16
递归Collat​​z猜想
在考拉兹猜想假设,如果你把任意正整数,然后重复下面的算法足够的时间: if number is odd, then multiply by three and add one if number is even, then divide by two 您最终将得到1。它似乎总是可以工作,但是从未证明它总是可以工作。 您已经在计算达到1所需的时间了,所以我想我会稍微调整一下。 从给定的正整数开始,计算达到1所需的时间(其“停止时间”)。然后找到该号码的停止时间。 重复直到达到1,或者直到达到100次迭代的完全任意限制。在前一种情况下,打印所需的迭代次数。在后一种情况下,请打印“ Fail”或您选择的其他一致输出,只要它不是integer即可1≤n≤100。您可能不会为此选项输出空字符串。但是,允许输出[1,100]范围之外的整数。 例子: Input: 2 2->1 Output: 1 Input: 5 5->5->5->5->5->... Output: Fail Input: 10 10->6->8->3->7->16->4->2->1 Output: 8 Input: 100 100->25->23->15->17->12->9->19->20->7->16->4->2->1 Output: 13 Input: 10^100 10^100->684->126->108->113->12->9->19->20->7->16->4->2->1 Output: …

10
寻找孤独的素数
孤独素数(我称它们为素数)是素数,在给定的数字网格中,宽度w ≥ 3为的素数是没有正交或对角线相邻的素数。 例如,如果我们将此网格放在w = 12(粗体以粗体突出显示): 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23... ...86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 …

11
Unicode分数
给定格式的分数m/n(其中m和n是互质整数),输出相应的Unicode分数。您的程序/函数不应接受任何与Unicode字符不对应的输入。接受数组(例如[2, 3]与相对)2/3。m / n相对m/n还可以。两个单独的输入m,n并且也有效。 必须处理的Unicode分数如下: ½, ⅓, ⅔, ¼, ¾, ⅕, ⅖, ⅗, ⅘, ⅙, ⅚, ⅐, ⅛, ⅜, ⅝, ⅞, ⅑, ⅒ 因此,可能的输入如下: 1/2, 1/3, 2/3, 1/4, 3/4, 1/5, 2/5, 3/5, 4/5, 1/6, 5/6, 1/7, 1/8, 3/8, 5/8, 7/8, 1/9, 1/10 字符的Unicode代码点如下: 188 ¼ 189 ½ 190 ¾ 8528 …

7
半指数函数
阿半指数函数是一个当它与本身组成给出了一个指数函数。例如,如果为f(f(x)) = 2^x,则将f为半指数函数。在此挑战中,您将计算一个特定的半指数函数。 具体来说,您将使用以下属性计算从非负整数到非负整数的函数: 单调递增:如果x < y,则f(x) < f(y) 至少有一半指数:对于所有的x,f(f(x)) >= 2^x 词典上最小的:在具有以上属性的所有函数中,输出一个使maximums最小的函数f(0),给定选择,minimizes f(1),然后f(2),依此类推。 对于输入,此函数的初始值为0, 1, 2, ...: [1, 2, 3, 4, 8, 9, 10, 11, 16, 32, 64, 128, 129, 130, 131, 132, 256, 257, ...] 您可以通过以下任意一种方法将其输出为函数或完整程序: 以x作为输入,输出f(x)。 采取x作为输入,输出所述第一x值f。 无限输出所有f。 如果要取x并输出f(x),x必须为零索引。 参考实施 这是代码高尔夫-以字节为单位的最短代码获胜。一如既往,禁止出现标准漏洞。

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.