Questions tagged «code-golf»

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

6
吃鱼,长大
您是池塘中的鱼,需要吃其他鱼才能生存。您只能吃比自己大或小的鱼。您必须创建一个程序,将鱼群作为已排序的输入。由此,您必须算出可以吃多少鱼,最终算出鱼的大小。 尺寸表 +--------------+--------------+--------------+--------------+ | | Amount extra | Total size 1 | Increase to | | Current size | needed for | fish | size | | | next size | | | +--------------+--------------+--------------+--------------+ | 1 | 4 | 4 | 2 | +--------------+--------------+--------------+--------------+ | 2 | 8 | 12 …

4
通过折叠重复字形来弯曲此字符串
给定一个字符串,您的任务是将其折叠成如下所述的锯齿状结构。 折成锯齿形 我们将以字符串"Mississippi"为例: 首先,输出仅包含唯一字符的最长前缀: Mis 当您到达第一个重复的字符C时,请忽略它,并issippi在第一次出现的C之下垂直输出由剩余字符串()的唯一字符组成的最长前缀: Mis i s 重复此过程,在水平和垂直连续之间交替。但是现在要小心(在步骤1),从最近出现的重复字符(不一定是最后一个字符)继续水平输出,在这种情况下: Mis i sip ----- Mis i sip i 规则 该字符串将仅包含可打印的ASCII字符,但不包含任何类型的空格。 您可以使用任何编程语言进行竞争,并且可以通过任何标准方法并以任何合理的格式1进行输入和提供输出,同时请注意,默认情况下,这些漏洞是禁止的。这是代码高尔夫球,因此每种语言的最短提交(以字节为单位)将获胜。 1输入:字符串/字符列表/您的语言用来表示字符串的其他任何字符。输出:多行字符串,代表行的字符串列表或字符/长度为1的字符串列表,但是如果可能的话,请在答案中包含漂亮的代码版本。 关于其他空格,输出可能包含: 前导/尾随换行符 每行末尾的空格 一个一致的前导空格每行号 您必须开始水平输出,而不能垂直开始。 测试用例 输入: “完善” 密西西比州 “奇数” “特权” “克苏鲁” “ PPCG” “ pOpOpOpOpOpOpOp” “ ABCCCE” “ ABCCCECCEEEEC” “ abcdcebffg” “阿布卡” “ AAAAAAAA” 相应的输出: 性能 C …

5
从一个数字到另一个数字的最小操作
让我们定义一种操作单个8位值的简单语言。它定义了三个按位运算(代码说明假定为8位value变量): !取反最低有效位(value ^= 1) <包装左移(value = value << 1 | value >> 7) >包装右移(value = value >> 1 | value << 7) 输入: 两个8位数字a和b。由于它们是8位的,因此您可以选择将它们作为字符。 输出: 通过上面定义的三个操作,从a到b的最短方法。您可以返回一个字符串或字符数组,或者为每个操作定义一个常数,不同的值,然后返回这些数组(是的,您也可以说<mean >和>mean <),但是请在回答中说明您的输出格式。 如果有多种同样长的方法,则可以输出其中的任何一个或全部。 规则: 您可以提交程序或功能 适用标准漏洞 每种语言中字节数最少的提交将获胜(不接受任何答案) 没有暴力破解的解决方案(或者至少不仅是暴力破解)可能会让我大吃一惊。 测试用例: 12, 13 => '!' 1, 2 => '<' 254, 253 => '<' 5, 5 => …

17
交替模式
在一个已删除的stackoverflow问题中,有人发布了以下内容: 编写程序或函数以在给定的整数内*并#基于给定的整数打印交替的图案n。一些例子: 输入:n=1 输出: * 输入n=5 输出: *#### ###** ***## ###** *#### 输入:n=8 输出: *####### ######** ***##### ####**** ****#### #####*** **###### #######* 由于这看起来像是一个很酷的代码挑战,所以就在这里。 这些模式是如何建立的? 第一行以单行开头*,后跟n-1大量#。 然后,第二行包含两个*,n-2前导量很大#。 第三行以3开头*,后跟n-3数量#。 等等 到达中间(n/2)后,我们再次以*,可以在上面的示例中看到。 注意,对于奇数输入数字,相反的线对(因此,第一和最后;第二和最后一个等;等等)完全相同。在n=5示例中,第一行和最后一行是*####;第二行和最后一行是###**。 然而,对于偶数输入数字,相反的一对线是相反的。在n=8示例中,第一行和最后一行是*#######和#######*; 第二行######**和倒数第二行是和**######; 等等 挑战规则: 您可以使用任意两个不同的可打印字符来代替*和#。您可以使用A和B; 3和7; <和>; 等等。请在回答中说明您使用过的内容。 您可以假设n将为正整数(>= 1) 您可以为每行或2D字符矩阵输出字符串列表/数组,而不是将其打印到STDOUT。 通用规则: 这是代码高尔夫球,因此最短答案以字节为单位。 不要让代码高尔夫球语言阻止您使用非代码高尔夫球语言发布答案。尝试针对“任何”编程语言提出尽可能简短的答案。 标准规则适用于您的答案,因此您可以使用STDIN / STDOUT,具有正确参数的函数/方法和返回类型的完整程序。你的来电。 默认漏洞是禁止的。 如果可能的话,请添加一个带有测试代码的链接。 另外,强烈建议为您的答案添加说明。 …

4
生成Portmantout!
背景 三年前,这个家伙汤姆·墨菲(Tom Murphy)想到了将Portmanteau的概念扩展到语言中的所有单词,并称其为portmantout(portmanteau加上tout [French for all ])。他将英语定义为108,709个单词的列表,设法找到了具有以下两个属性的611,820个字母序列: 字符串中包含每个英语单词。 字符串中包含任意两个相邻字母的邻域是一个英语单词。 这是指向该portmantout的页面的链接(以及视频说明)。 搬运工 portmantout的两个属性中的第一个很容易理解。第二个可能需要一些解释。 基本上,单词必须重叠。“ golfcode”将永远不会出现在英语的portmantout中,因为那里没有包含“ fc”的词。但是,您可能会在portmantout中找到“ codegolf”,因为“ ego”弥合了差距(所有其他字母对都在“ code”或“ golf”中)。 你的任务: 编写一个程序或函数,该程序或函数需要一个字符串列表并返回该列表的所有portmantout。 此Python 3代码将验证portmantout。 测试用例 所有列表都是无序的;那是, {"code", "ego", "golf"} -> "codegolf" {"more", "elm", "maniac"} -> "morelmaniac" or "morelmorelmaniac" or "morelmorelmorelmaniac" or... Would a morelmaniac be some sort of mycologist? {"ab", "bc", …

30
从原动力中恢复动力
似乎很多人都想拥有此功能,因此现在是此挑战的续集! 定义:素数幂是自然数,可以以p n的形式表示,其中p是素数,n是自然数。 任务:给定素数幂p n > 1,返回幂n。 测试用例: input output 9 2 16 4 343 3 2687 1 59049 10 计分:这是代码高尔夫球。以字节为单位的最短答案将获胜。

27
独特的挂锁PIN列表!
介绍 在一次私人聊天中,我的一个朋友显然是最近偶然发现了一个安全系统,该系统的有效密码有以下两个限制: 每个数字必须唯一(即“ 1”只能出现一次) 数字的顺序无关紧要(“ 1234” =“ 4321”) 因此,为了说明该挂锁系统的严重程度,让我们实际枚举所有有效的PIN! 输入值 您的输入将包含一个正整数,表示PIN的长度。 输出量 您的输出包含一个非负整数或字符串*的列表,这些列表会枚举给定长度的所有有效PIN。 *更精确地说,如果您要为它们打印,则人类可以尝试使用所有组合。这意味着一组数字集和一组数字数组都可以。 谁赢? 这是代码高尔夫球,因此最短的答案以字节为单位!适用标准规则和漏洞。 角落案例 如果输入大于10的整数,则输出行为不确定。 每个输出条目中数字的顺序是不确定的,因为带有零的条目实际上包含所说的零,也就是说,您可能不会去除“ 0123”到“ 123”,但是“ 1230”,“ 1203”和“ 1023”都是有效的就像“ 0123”一样。 测试用例 1 [0,1,2,3,4,5,6,7,8,9] 2 [10,20,30,40,50,60,70,80,90,21,31,41,51,61,71,81,91,32,42,52,62,72,82,92,43,53,63,73,83,93,54,64,74,84,94,65,75,85,95,76,86,96,87,97,98] 3 [210,310,410,510,610,710,810,910,320,420,520,620,720,820,920,430,530,630,730,830,930,540,640,740,840,940,650,750,850,950,760,860,960,870,970,980,321,421,521,621,721,821,921,431,531,631,731,831,931,541,641,741,841,941,651,751,851,951,761,861,961,871,971,981,432,532,632,732,832,932,542,642,742,842,942,652,752,852,952,762,862,962,872,972,982,543,643,743,843,943,653,753,853,953,763,863,963,873,973,983,654,754,854,954,764,864,964,874,974,984,765,865,965,875,975,985,876,976,986,987] 4 [3210,4210,5210,6210,7210,8210,9210,4310,5310,6310,7310,8310,9310,5410,6410,7410,8410,9410,6510,7510,8510,9510,7610,8610,9610,8710,9710,9810,4320,5320,6320,7320,8320,9320,5420,6420,7420,8420,9420,6520,7520,8520,9520,7620,8620,9620,8720,9720,9820,5430,6430,7430,8430,9430,6530,7530,8530,9530,7630,8630,9630,8730,9730,9830,6540,7540,8540,9540,7640,8640,9640,8740,9740,9840,7650,8650,9650,8750,9750,9850,8760,9760,9860,9870,4321,5321,6321,7321,8321,9321,5421,6421,7421,8421,9421,6521,7521,8521,9521,7621,8621,9621,8721,9721,9821,5431,6431,7431,8431,9431,6531,7531,8531,9531,7631,8631,9631,8731,9731,9831,6541,7541,8541,9541,7641,8641,9641,8741,9741,9841,7651,8651,9651,8751,9751,9851,8761,9761,9861,9871,5432,6432,7432,8432,9432,6532,7532,8532,9532,7632,8632,9632,8732,9732,9832,6542,7542,8542,9542,7642,8642,9642,8742,9742,9842,7652,8652,9652,8752,9752,9852,8762,9762,9862,9872,6543,7543,8543,9543,7643,8643,9643,8743,9743,9843,7653,8653,9653,8753,9753,9853,8763,9763,9863,9873,7654,8654,9654,8754,9754,9854,8764,9764,9864,9874,8765,9765,9865,9875,9876]

7
二叉树旋转
平衡的二进制搜索树对于保证O(log n)查找(或类似操作)至关重要。在动态环境中,随机地插入和/或删除了许多密钥,树可能会退化为链接列表,这对于查找来说是可怕的。因此,存在多种抵消这种效果的自平衡二叉树(例如AVL树或八叉树)。这些树是基于不同种类的旋转来重新平衡树的。 轮换 在此挑战中,我们将仅关注单个右旋,这样的旋转(左旋将是对称的)如下所示: 5 3 / \ / \ 3 6 => 1 5 / \ / \ 1 4 4 6 如果有任何叶子1,4或者6有左子树或右子树,则旋转只需将它们保留在那里。如果这是较大树的子树,则只需在节点处“将其切除”,5然后将旋转后的树(现在为node 3)“重新连接” 到该节点。 挑战 给定二分搜索树1和关键字,如上所述,该树在该节点上向右旋转。上例中提供的密钥为5。 规则和I / O 您可以使用任何类型的键,只要您选择的键与测试用例的键之间存在双射 您可以选择二叉树的任何表示形式,只要没有歧义(例如,[3,[]]除非另有说明,否则是模棱两可的),这对于您选择的语言是很自然的 由于输入将始终是二叉搜索树,因此没有重复的键 您可以假设密钥包含在树中 您可以假定包含密钥的节点有一个左子节点 您可能无法在提供的键下假设正确的子树 您可能不认为旋转之前树是不平衡的 您可能不认为旋转后树是平衡的 您可以使用任何默认的I / O方法 您提交的内容可能是返回树的功能或打印解决方案的完整程序 测试用例 这些示例表示一棵树,如下所示 如果是一片叶子: [] 如果它是带有键的树x并且两个子树都是叶子:[x] 如果它是带有键x和子树的树left right:[x,left,right] …

8
按坡度对区域进行分类
定义 的ķ 个的大小的正方形矩阵的环Ñ,其中1≤ķ≤天花板(N / 2)是通过的元件形成的列表ķ 个和(N-K + 1)个行和列,但没有第一个和最后一个k-1个元素。 例: 矩阵: 1 2 3 4 5 6 7 8 9 1 8 7 6 5 4 3 2 1 9 8 7 6 5 4 3 以圆环分隔: + ------------------- + | 1 2 3 4 5 | | + ----------- + …

12
这是练习集吗?
我们都知道,很多运动只影响身体的一半,因此您必须做两次,每一侧一次。这种练习有两个对应项,一个对应左侧,一个对应右侧。但是,只要双方的练习顺序相同,就不必连续执行两个对应的任务。您也可以在锻炼程序中在两边之间进行切换,但是从一侧开始进行一些练习而从另一侧开始进行一些练习则没有意义。 挑战 一个运动部分是非零整数,其中其第二部分包含否定了上半年的整数,并以相同的顺序列表,并在每个半整数的迹象是相等的。练习部分上半部分的标志是其领先的一面。 一个锻炼组是连接在一起的同一侧领先零个或多个运动部件。 给定一个非零整数列表作为输入,请确定它是否为练习集。整数不一定是唯一的。列表的长度不一定是偶数。 您的解决方案可能不使用任何标准漏洞。您可以使用任何两个不同的一致值进行输出。这是代码高尔夫球,因此最短的解决方案是成功的。 例子 [-5, -1, -7, -6, -5, 5, 1, 7, 6, 5]是运动部分的一个例子。前半部分是[-5, -1, -7, -6, -5],后半部分是[5, 1, 7, 6, 5],这是上半部分取反的每个整数。此外,前半部分的整数都是相同的符号。本练习部分的主要内容是-1。 [3, 6, 5, -3, -6, -5, 1, 6, 4, 3, -1, -6, -4, -3]是练习集的一个例子。它的各个运动部分分别是[3, 6, 5, -3, -6, -5]和[1, 6, 4, 3, -1, -6, -4, …

26
子数组中的数字相等
给定一个带有length >=3和的数字数组length % 3 == 0 [1, 2, 3, 4, ...] 您将其拆分为长度为3的子数组 [[1, 2, 3], [4, 5, ...], [... 并返回一个数组 [0] =>子数组中所有数字均相等的个案数 [1] =>如果子数组中的所有数字都不相等,则子数组中只有两个数字相等的情况数 示例和测试用例: 输入:[2, 4, 2, 5, 5, 5, 4, 2, 1, 3, 3, 1]输出[1, 2] 这是因为 [[2, 4, 2], [5, 5, 5], [4, 2, 1], [3, 3, …

12
找到斐波那契模式
您可能熟悉斐波那契数列,其中前两个项是0, 1(或有时是1, 1),其后的每个项都是前两个项的总和。它是这样开始的: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ... 有时,序列包含具有特殊图案的数字,我发现这很有趣:相邻数字对之间的差异与其他任何对相同。例如,在以开头的序列中0, 1,第18个项是987。9-8=1和8-7=1。我很满意。 挑战 给定两个初始值F(0)和F(1),输出由生成的序列F(n) = F(n-1) + F(n-2)中满足以下条件的每个数字: 任何一对相邻数字之间的差异与任何其他一对相同 至少三位数字长(此模式对1位和2位数字不感兴趣) 输入值 小于10 ** 10(100亿)的两个非负整数 输出量 所有小于10 ** 10且符合“挑战”部分中的条件的整数 输出大于10 ** 10的数字是可以接受的,但这不是必需的 假设重复的数字符合模式(例如777),则可能有无数个符合条件的数字,但您的程序不需要永远输出 如果不存在这样的整数,则输出任何您想要的东西,只要它不是数字即可(无,空,空数组,错误消息,悲伤的面孔等)。 如果与模式匹配的数字在序列中出现多次,则可以将其输出一次或多次 如果任何输入符合条件,则应将其包含在输出中 规则 输入和输出可以是任何标准格式 禁止出现标准漏洞 这是代码高尔夫球,因此以字节为单位的最短代码获胜 示例/测试用例 Input , Output [1,10] …

8
Code 39条码编码器
编写一个将字符串编码为Code 39格式条形码的函数或程序,其中每个字符被编码为由四个空格分隔的五个小节。两个条中的一个和一个间隙较宽,而另一个间隙较窄(10 * 4码),或者三个间隙较宽,而一个间隙都不是(4码)。这给出了44个不同的代码,其中一个是保留代码,用于表示编码字符串的开始和结束。 挑战 输入是仅包含集合中字符的字符串 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ-. +/$% 输出是编码为条形码字符串的字符串。窄间隙和字符间间隙是单个空间,而宽间隙是三个空间。窄条是Unicode字符“ Full block”(█)的UTF-8字节序列,即0xE2 0x96 0x88宽条是三个这样的字节序列/字符(███)。代码的完整列表是: Spaces 0100 0010 0001 1000 1011 1101 1110 0111 Bars 00000 + / $ % 10001 1 A K U 01001 2 B L V 11000 3 C M W 00101 4 D N X 10100 5 …
16 code-golf 

9
中级字符串数组反射
让我们从在二维字符数组中重新定义字符的反射开始: 给定一个方形的二维数组,其中的字符带有不同的小写字母字母,则定义一个字母在矩阵中的反射,即将其与通过正方形中心直接从其对面的字符交换。 因此,c在 abcde fghij klmno pqrst uvwxy 会导致配置 abwde fghij klmno pqrst uvcxy 因为c和w已被切换。 其他一些示例(具有与上述相同的原始配置): 反映人物e会形成 abcdu fghij klmno pqrst evwxy 反映角色m将使 abcde fghij klmno pqrst uvwxy 反映人物b会形成 axcde fghij klmno pqrst uvwby 挑战 给定二维数组的字符,这些字符具有不同的小写字母,请遍历给定字符串中的每个字符,然后将其“反射”到矩阵中。 说明:字符串中a-z的字母是from ,字母是唯一的,并且数组至少为1x1,最大为5x5(显然,英文字母中只有26个字符。)字符串中的字符必须保证为在二维数组中 该字符串最长为100个字符。 输入值 一个字符串s,一个整数N,然后是一个NxN字符数组。 例 输入: ac 2 ab cd 输出: dc ba …
16 code-golf  string 

16
世界末日的21种发型
世界末日的21种发型 给定一个介于1到21(或0到20)之间的数字列表,将输出以下面的“缝合在一起”图(请参见缝合信息规则): ___ ,,, ooo === +++ ### -*~*- (o o) (o o) (o o) (o o) (o o) (o o) (o o) ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo- *** ||| _/7 ))) ((( xxx @__ (o o) (o o) (o o) (o o) (o o) (o o) (o o) ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo- ((_ >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.