Questions tagged «code-golf»

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

15
它是OVSF代码吗?
给定1s和-1s 的列表,请确定它是否是有效的OVSF代码(通过输出真值或假值)。 OVSF代码定义如下: [1] 是OVSF代码。 如果X是OVSF代码,则X ++ X和X ++ -X均为OVSF代码。 这++是列表串联,并-取反列表中的每个元素。 没有其他列表是有效的OVSF代码。 您可以假设输入列表仅包含-1和1,但是您必须正确处理空列表以及长度不是2的幂的列表。 最短的代码(以字节为单位)获胜。 测试用例 [] -> False [1] -> True [-1] -> False [1, 1] -> True [1, -1] -> True [1, 1, 1, 1] -> True [1, 1, 1, 1, 1] -> False [1, -1, -1, 1, -1, …

1
那是谁PRNG?
给定一个由625个32位无符号整数组成的序列(即在范围内[0, 2**32)),输出以下哪个伪随机数生成器生成了该序列: 线性同余生成器 Xorshift 梅森·扭转者 具体来说,用于此挑战的这三个生成器的C实现如下: #include <stdint.h> /* all code adapted from the sample implementations on the following Wikipedia pages: https://en.wikipedia.org/wiki/Linear_congruential_generator https://en.wikipedia.org/wiki/Xorshift https://en.wikipedia.org/wiki/Mersenne_Twister */ uint32_t lcg_seed; uint32_t xor_x, xor_y, xor_z, xor_w; void lcg_srand(uint32_t seed) { lcg_seed = seed; } uint32_t lcg(void) { lcg_seed = ((uint64_t) lcg_seed * 1103515245 + …

24
是圣诞节的哪一天?
前言 在著名的颂歌《圣诞节的十二天》中,叙述者每天都会收到几份礼物。这首歌是累积性的 -在每节经文中,都会添加新的礼物,其数量要比之前的礼物多一个。一只Part,两只海龟鸽子,三只法国母鸡,等等。 在任何给定的诗句N处,我们都可以通过找到第N个四面体数来计算歌曲中当前礼物的累积总和,从而得出结果: Verse 1: 1 Verse 2: 4 Verse 3: 10 Verse 4: 20 Verse 5: 35 Verse 6: 56 Verse 7: 84 Verse 8: 120 Verse 9: 165 Verse 10: 220 Verse 11: 286 Verse 12: 364 例如,在第4节之后,我们有4 *(1 part),3 *(2斑鸠),2 *(3只法国母鸡)和1 *(4只叫鸟)。通过总结这些,我们得到4(1) + 3(2) + 2(3) …

2
马修飓风和闪电
挑战 受此挑战和令人讨厌的马修飓风的启发,我们将动态生成一些闪电。 n = 15: \ /\ / \ / / /\ /\ / \ \ / / /\ /\ \ / / \ /\ \ /\ / \ \ /\ / \ \ /\ 输入项 正整数n确定闪电轮的深度。 规则与约束 /并且\应该使用 指导闪电方向的概率如下: 25%分成2条路径 25%的路径到达死角 剩下25% 25%正确 以下是有关重叠和死角的一些例外情况: 代码不应是确定性的,每次应随机生成一个新的闪电 螺栓不应重叠:例如,如果当前螺栓的左侧已经有一个螺栓,则当前螺栓应末端或向右移动,但不应向左或分裂(概率仍然适用,在这种情况下,变为50%末端/ 50%正确) 如果不存在另一个可用的拆分路径,则该路径不应结束:例如,在只有1条路径的开始处,该路径应在拆分之前不结束,在有多条路径但除一条路径之外的所有路径均已失效的情况下也适用,(概率变为33%分裂/ 33%向左/ …

30
计算主要因素
不久前,我们遇到了一个主要的因式分解挑战,但是这个挑战已经存在了将近六年,并且几乎不能满足我们当前的要求,因此我认为现在是时候提出一个新的挑战了。 挑战 编写一个程序或函数,将大于1的整数作为输入,并输出或返回其主要因子的列表。 规则 输入和输出可以通过任何标准方法和任何标准格式给出。 输出中必须包含重复因素。 输出可以是任何顺序。 输入将不小于2或大于2 31-1。 允许内置,但鼓励包括非内置解决方案。 测试用例 2 -> 2 3 -> 3 4 -> 2, 2 6 -> 2, 3 8 -> 2, 2, 2 12 -> 2, 2, 3 255 -> 3, 5, 17 256 -> 2, 2, 2, 2, 2, 2, 2, 2 …

30
打印2017年的所有星期日
在下面的格式打印所有周日的日期在2017年:dd.mm.yyyy。 预期产量: 01.01.2017 08.01.2017 15.01.2017 22.01.2017 29.01.2017 05.02.2017 12.02.2017 19.02.2017 26.02.2017 05.03.2017 12.03.2017 19.03.2017 26.03.2017 02.04.2017 09.04.2017 16.04.2017 23.04.2017 30.04.2017 07.05.2017 14.05.2017 21.05.2017 28.05.2017 04.06.2017 11.06.2017 18.06.2017 25.06.2017 02.07.2017 09.07.2017 16.07.2017 23.07.2017 30.07.2017 06.08.2017 13.08.2017 20.08.2017 27.08.2017 03.09.2017 10.09.2017 17.09.2017 24.09.2017 01.10.2017 08.10.2017 15.10.2017 22.10.2017 29.10.2017 05.11.2017 12.11.2017 19.11.2017 26.11.2017 …

29
数字链接谓词
问题: 您的任务是确定一个数字序列中的每个数字是否至少包含其前一个数字。 例如,以下应返回真实: [1, 12, 203, 0, 30] ^ ^ Contains a 0 ^ Contains a 2 ^ Contains a 1 以下应返回false: [1, 32, 23, 34] ^ Doesn't contain a 1, therefore false 您的提交可以是功能或完整程序。 输入: 输入可以是任何合理的序列类型。数字数组,字符串数组,定界数字字符串等。 但是,顺序很重要,因此,无论您选择接受什么结构作为输入,显然都必须具有确定的顺序。 输入可以通过stdin或作为参数。 您可以假设: 所有数字都是非负整数 输入将始终包含至少2个数字 输入数字将不会以0开头 输出: 输出将是一个真值或假值(由您的语言定义),表示是否满足上述规范。 测试之间的真实/虚假值不需要保持一致。 它可以输出到标准输出或返回。 测试用例: True cases: [1, …
27 code-golf 

30
12小时至24小时时间转换器
令人惊讶的是,这个简单的任务似乎还不存在,所以... 您的任务是编写一个程序,该程序将12小时时间作为输入,并将其转换为“军事时间”或24小时时间格式。 输入将采用以下形式: HH:MM am/pm 尽管可以有一些细微的变化: 上午/下午与其余时间之间的间隔是可选的。 最后一部分可以是“ am” /“ pm”或“ a” /“ p”。 任何大写字母都可以。 输出将是输入的时间,转换为24小时格式。它可以是数字或字符串。 对于输入和输出: 首先的0是可选的。最后3个位必须为0。 分隔小时和分钟的定界符可以是“:”,“”(空格)或什么都不是。 其他说明: 午夜可以表示为0000或2400。 午夜将被视为“上午”,而中午将被视为“下午”。 您的程序可以是函数,也可以是完整程序,应返回结果或将其输出到标准输出。尾随空格可以。 示例(不需要支持每种格式): 12:00am -> 0000 1200 pm -> 1200 1234Am -> 00:34 134a -> 134 01:34PM -> 13 34 1234pm -> 1234 这是代码高尔夫,因此最少的字节数获胜。由于使用内置程序解决此问题非常简单,因此很高兴看到一些手动解决此问题的代码(但使用内置程序很好)。 只是为了澄清,你是不是需要支持每一个可能的格式。仅支持单个输入和单个输出格式(您选择)就可以了。但是,我想限制上面概述的格式(它已经相当免费了)。{1134,'pm'}例如,这将是不可接受的。

24
英国脱欧何时发生?
好吧,英国退欧发生了。天才新闻(Sky News)是他们的天才,他们决定在公交车旁创建倒计时。 您的工作是做类似的事情。英国于2019年3月31日离开欧盟,您必须为此创建一个数字倒计时,该倒计时每秒更改一次(允许0.05秒偏差)。 输入项 您的程序绝对不应输入。它被禁止! 输出量 它应以格式输出英国脱欧之前的时间ddd:hh:mm:ss。允许使用换行符开头和结尾,但每次显示都应留在同一位置。看起来好像它实际上已经到位了。正如@AnthonyPham所指出的,这并不意味着要打印足够的换行符来“清除”屏幕,这意味着您实际上必须清除屏幕。 不允许这样的输出: 100:20:10:05 100:20:10:04 这也不是 100:20:10:05 *A thousand newlines* 100:20:10:04 因为他们不在一条线上。 英国退欧后,您不必担心。您的程序最多只能运行31/3/2019 规则 不允许出现标准漏洞 这是代码高尔夫球,因此以字节为单位的最短代码获胜。 错误消息(尽管我不认为如何)是不允许的 该代码应能够在2年内运行(英国退出欧盟时),并且应该显示实际时间,而不是再次从730开始(请参见下文) 倒数规则 倒计时不应硬编码,并且应该能够在英国退欧结束之前的任何时间运行,并且仍会产生正确的结果。新的一天开始时,小时应遵循以下格式 712:00:00:01 712:00:00:00 711:23:59:59 我再说一遍,为方便起见,英国退欧的结束日期是午夜31/3/2019(31:3:19 00:00:00或31:3:2019 00:00:00或您想要的任何其他格式) NB:我想我拥有所有东西,但是我没有在沙盒中发布,否则可能已经不合时宜了。随意发布任何改进建议,因为它并不完美。
27 code-golf  date 

12
两个的两个幂的和或差
如果您选择接受它,那么您面临的挑战是,给定整数K >= 1,找到非负整数,A并且B 使以下两个条件中的至少一个成立: K = 2^A + 2^B K = 2^A - 2^B 如果不存在A和B,则您的程序可能会以任何方式运行。(为了澄清,A并且B可以相等。) 测试用例 一个数字通常有多种解决方案,但是这里有一些: K => A, B 1 => 1, 0 15 => 4, 0 ; 16 - 1 = 15 16 => 5, 4 ; 32 - 16 = 16; also 3, 3: 8 + …
27 code-golf  math 

16
输出一个颠倒的帐篷
给定一个整数,输出一个颠倒的帐篷。 输入确定帐篷的大小(绝对值)以及入口是在左侧(负数)还是在右侧(正数)。 If input = -1: ____ \/_/ If input = -2: ________ \ / / \/___/ If input = -3: ____________ \ / / \ / / \/_____/ If input = 1: ____ \_\/ If input = 2: ________ \ \ / \___\/ If input = 3: ____________ \ …

29
按字母顺序排列字符串
任务 您的目标(应该选择接受)是编写一个程序,给定输入字符串(或字符数组),输出该字符串中字母的所有可能排列。我对自己的输出不满意,因此应按字母顺序排序,没有重复。 例: 输入: buzz 输出: buzz bzuz bzzu ubzz uzbz uzzb zbuz zbzu zubz zuzb zzbu zzub 规则 这是代码高尔夫球,因此最短的代码获胜。 每行上的尾随空格都可以 最后一行之后可以有一个换行符(但不能再有其他换行符)

19
ASCII书架
您知道那些可堆叠的架子,它们基本上只是可以堆叠在一起的木箱?我们将模拟从具有某些ASCII艺术的书架中构建一些书架。 我们所有的书都大小统一方便,如下所示: |X| |X| |X| 书架是单独的盒子,里面总是高三个字符(足以容纳直立的书),由|左右的-字符,顶部和底部的字符组成,并且足够容纳X书本(X输入是输入)整数)。例如,这是一个大小的书架3: |---------| | | | | | | |---------| 因为你可以3像这样把书装进去 |---------| ||X||X||X|| ||X||X||X|| ||X||X||X|| |---------| 输入将是两个严格的正整数,X并且Y,其中X是我们拥有的书架宽度(以书籍为单位),Y是我们必须堆叠的书籍数量。如果我们在一个书架上放不下更多的书,则需要在顶部增加更多的书架。例如,这里输入4 wide / 6 books: |------------| ||X||X| | ||X||X| | ||X||X| | |------------| |------------| ||X||X||X||X|| ||X||X||X||X|| ||X||X||X||X|| |------------| 如果Y % X > 0表示书的数量不是书架大小的整数倍,则其余的书应放在最左端的最上面的位置(如4 6上面的所示),而书架的其余部分则用空格。 输入项 两个严格的正整数 中的任何方便的格式,每个>0。 您可以按任何顺序输入(例如,首先是架子的大小,然后是书籍的数量,反之亦然)。请在您的提交中说明输入顺序。 您可以放心地假设两个输入都不会大于您的语言的默认[int]大小(或同等大小)。 输出量 …

11
纯度数
今天,我们来看一个与Collat​​z函数f有关的序列a: 我们称形式为z,f(z),f(f(z)),...的序列为Collat​​z序列。 我们序列中的第一个数字a(1)是0。在反复施加f的情况下,它落入一个循环0→0→… 我们尚未看到的最小数字是1,使a(2)= 1。在重复使用f的情况下,它会进入一个循环1→4→2→1→… 现在我们已经在上面的循环中看到了数字2,所以下一个最小的数字是a(3)= 3,属于循环3→10→5→16→8→4→2→1→4→2→1 →… 在以上所有循环中,我们已经看到了4和5,因此下一个数字是a(4)= 6。 现在,您应该明白了。一(N)是不是为所有任何在Collat​​z序列的一部分的最小数目一(1),...,A(N - 1) 。 编写一个给定正整数n返回a(n)的程序或函数。以字节为单位的最短代码获胜。 测试用例: 1 -> 0 2 -> 1 3 -> 3 4 -> 6 5 -> 7 6 -> 9 7 -> 12 8 -> 15 9 -> 18 10 -> 19 50 -> 114 (这是OEIS序列A061641。)

21
原始字符串
Primenary(binary-prime)字符串是这样的字符串,当以二进制网格形式编写时,每一行和每一列都有一个素数总计。 这是一个模糊的解释,所以让我们用一个可行的例子来分解它。 在此示例中,我们将使用字符串bunny: 首先,找到每个字符的ASCII码点及其二进制表示形式: Char | ASCII | Binary b 98 1100010 u 117 1110101 n 110 1101110 n 110 1101110 y 121 1111001 从上到下取这些二进制值,并将它们排列到网格中(如有必要,添加前导零): 1 1 0 0 0 1 0 1 1 1 0 1 0 1 1 1 0 1 1 1 0 1 1 0 1 …

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.