Questions tagged «code-golf»

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

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 …

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) 最少的字节数获胜。

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, …

10
使用最少的硬币计算小费
大多数小费计算器应用程序只收取餐费的固定百分比。因此,例如,如果您的餐费为$ 23.45,则可以保留15%的小费= $ 3.52,或更慷慨的20%的小费= $ 4.69。 方便信用卡用户使用。但是,如果您不愿留下现金小费,则情况并非如此,在这种情况下,这些零头钱占了很大一部分。因此,让我们修改一下想法,以使现金用户更加方便。 您的作业 编写尽可能少的字节作为输入的程序或函数: 一顿饭的价格 最小提示百分比 最大小费百分比 并输出在[price * min_percentage / 100,price * max_percentage / 100]范围内的任何小费金额,以使所需的纸币/钞票和硬币数量最小化。 假设美国的货币面额为1¢,5¢,10¢,25¢,$ 1,$ 5,$ 10,$ 20,$ 50和$ 100。 例 这是Python中的非示例程序: import math import sys # Do the math in cents so we can use integer arithmetic DENOMINATIONS = [10000, 5000, …
23 code-golf 

13
黄金时间旅行
不要告诉任何人,但我已经刻痕了我叔叔的时间旅行机器!不过,我的叔叔痴迷于质数,并且在机器上显示出来—他已对其编程,以便只能将其加起来等于质数的日期。 所以不能去,1947-08-15因为1947 + 8 + 15 = 1970,这不是素数。它可以去1947-07-25,因为1947年+ 7 + 25 = 1979年,这是素数。因此,如果我想回去看印度的独立庆祝活动,看来我得提前几周去等待那20天。 我还有其他一些日期想去,同样,我也要去一个到我的目标日期之前(或者如果我很幸运的话,等于)目标日期的日期,该日期必须是一个质数。不过,我很不耐烦,也不想等待太多时间-所以我想找到可以使用的最接近目标日期的日期。 您能给我写一个程序来获取目标日期,并给我我应该输入到时间机器中的日期吗?它是在给定日期之前或等于该日期的最接近的日期,其部分加起来是质数? (对于这个挑战,我们使用的是多功的公历,这意味着我们甚至在人们使用较旧的儒略历时也使用当前的公历。) 输入项 一个约会 理想情况下,当前时代(AD)中的任何日期;实际上,您的语言可以自然处理的任何子集 以任何一种人类可读的格式⁺ 输出量 最接近输入日期的日期,该日期小于或等于输入日期,并且其日期+月份+年的总和为质数。 以任何一种人类可读的格式⁺ ⁺:“可读性”,如日,月,年一样,以任何顺序分别列出 测试用例 1947-08-15 => 1947-07-25 1957-10-04 => 1957-09-27 1776-07-04 => 1776-07-04 999-12-12 => 0999-12-10 2018-06-20 => 2018-06-15 1999-01-02 => 1998-12-29 1319-12-29 => 1319-07-01 (感谢@ Shaggy,@ PeterTaylor和@Arnauld在此问题上的帮助。)
23 code-golf  primes  date 

10
最短的唯一标识子字符串
给定一个字符串列表,请用其非空子字符串之一替换每个字符串,该子字符串不是列表中任何其他字符串的子字符串,并且应尽可能短。 例 给定list ["hello","hallo","hola"],"hello"应替换为,"e"因为该子字符串未包含在其中"hallo","hola"并且它尽可能短。"hallo"可通过任一取代"ha"或"al"并"hola"通过任何"ho","ol"或"la"。 规则 您可以假定字符串将为非空,并且仅包含大小写相同的字母字符。 您可以假定列表中的每个字符串都存在这样的子字符串,即列表中的任何字符串都不是其他任何字符串的子字符串。 输入和输出可以采用任何合理的格式。 这是code-golf,因此请尝试使用您选择的语言使用尽可能少的字节。 测试用例 在大多数情况下,仅给出一种可能的输出。 ["ppcg"] -> ["p"] (or ["c"] or ["g"]) ["hello","hallo","hola"] -> ["e","ha","ho"] ["abc","bca","bac"] -> ["ab","ca","ba"] ["abc","abd","dbc"] -> ["abc","bd","db"] ["lorem","ipsum","dolor","sit","amet"] -> ["re","p","d","si","a"] ["abc","acb","bac","bca","cab","cba"] -> ["abc","acb","bac","bca","cab","cba"] 相关:最短识别子字符串 -类似的想法,但涉及更多规则和繁琐的格式。
23 code-golf  string  code-golf  string  code-golf  array-manipulation  code-golf  quine  code-golf  array-manipulation  integer  matrix  classification  code-golf  quine  code-golf  string  matrix  conversion  code-golf  string  number  code-golf  string  code-golf  number  sequence  integer  code-golf  decision-problem  matrix  code-golf  string  code-golf  math  code-golf  math  array-manipulation  combinatorics  code-golf  random  code-golf  code-golf  alphabet  code-golf  python  c  code-golf  base-conversion  code-golf  string  counting  code-challenge  code-generation  fastest-code  code-golf  kolmogorov-complexity  matrix  code-golf  string  code-golf  array-manipulation  decision-problem  random  sudoku  code-golf  chess  code-golf  card-games  encode  code-golf  decision-problem  code-golf  code-golf  math  array-manipulation  matrix 

25
按最大数字排序
挑战: 给定一个整数列表,请按其最大的一位数字降序排列。具有相同大数字的数字的顺序将按第二大数字排序,依此类推。 我们忽略数字中重复的数字。而且,如果一个数字中的所有数字都相同,则列表中这些数字的顺序可以是您想要的任何方式。 例: Input: [123, 478, -904, 62778, 0, -73, 8491, 3120, 6458, -7738, 373] Possible outputs: [8491, -904, 62778, 478, -7738, 6458, 373, -73, 3120, 123, 0] [8491, -904, 62778, 478, -7738, 6458, -73, 373, 3120, 123, 0] 为什么?以下是对数字进行排序的相关数字: Output: [8491, -904, 62778, 478, -7738, 6458, 373, -73, …

26
逐行打印波浪形字符串
挑战 编写一个将字符串s和整数n作为参数的程序或函数。程序按如下所示转换时应打印(或返回)字符串: 从左上角开始,然后向下和向右移动,以s高度波动的形式书写n。然后,从上到下,将每行合并为一个字符串(无空格)。 例 给定字符串“ WATERMELON”,高度为3: 该波应如下所示: W R O A E M L N T E 然后,合并从上到下的行: WRO AEMLN TE 因此,您的程序应返回字符串“ WROAEMLNTE” 同样,高度为4的“ WATERMELON”应产生以下波动: W E A M L T R O E N 然后,您的程序应返回字符串“ WEAMLTROEN” 规则 输入项 输入可以采用任何合理的格式。在任何情况下,该字符串都可以使用。您可能会认为0 < n <= s.length 输出量 输出应仅包含转换后的字符串(无论是返回还是打印到STDOUT),以及任何结尾的换行符。 计分 这是代码高尔夫球,因此最短答案以字节为单位!不允许出现标准漏洞。 测试用例 Input …
23 code-golf  string 

5
动画Jacob的ASCII梯形图
您可能已经在儿童科学博物馆中看到了雅各的阶梯。如果您不熟悉它们的外观,那么Wikimedia Commons上有一些图像和视频示例。今天的挑战是创建电子设备的动画ASCII版本。最后,它应该看起来像这样: 梯子构造 这是高度(H)为6 的梯子的基本形状: 6 \ / 5 \ / 4 \ / 3 \ / 2 \ / 1 \ / 0 ¯¯ 左侧的数字仅表示此示例的行号,不应包含在输出中。我们将通过数字(R)引用给定的行。第0行是底部¯¯。从1到H的每一行包括四个部分: 空格(U + 0020)重复(H - R)次 反斜线\(U + 005C) 空格(U + 0020)重复(2 * R)次 正斜杠/(U + 002F) 第0行是相同的,除了两个斜杠都用宏¯(U + 00AF)代替。在每行末尾或梯形图下方都可以留有空白。前导空格不是。 电弧构造 构造好梯子后,即可在左侧和右侧之间创建圆弧。一个弧线完全位于一行内,并替换了前导\和尾随之间的空间/。因此,第2行的弧中将包含4个字符,第3行的弧中将包含6个字符,依此类推。每个弧均使用以下规则组成: 唯一允许的字符是_/¯\(U + 005F,U …

30
扩大一些
此挑战基于此Stackoverflow问题。 输入一个正数,将其输出为每个数字的总和乘以10的幂。 输入项 一个数字,作为整数,字符串或数字/字符列表。 该数字将严格为正。 如果您接受数字作为字符串或列表,则它不会以开头0。 输出量 一个字符串,表示每个相关的以10为底的数字的总和,每个数字均乘以其各自的以10为底的幂。总和表示为a + b。如果需要,您可以在+标志的两边最多使用一个空格。操作数以降序列出。 0 永远不能是有效的操作数。 该+符号(是否用空格包围)可能不是开头或结尾部分。 例子 Input Output 12 10 + 2 or 10+2 or 10 +2 or 10+ 2 9 9 123 100 + 20 + 3 10 10 101 100 + 1 无效的输出 2 1 + 1 10 10 + …
23 code-golf  number 

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.