Questions tagged «code-golf»

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

26
使弦波
给定字符串作为输入,使用以下算法输出字符串: 1. Split the String by " " (find the words): "Hello World" -> ["Hello","World"] 2. Find the vowel count of each component: [2,1] ( ["H[e]ll[o]","W[o]rld"] ) 3. For each of the components, output the first n letter where n is the number of vowels it contains: ["He","W"] 4. Join …
19 code-golf  string 

30
与数字根相反!
也称为[模拟根] (与数字根相反!);) 数字的数字根是数字的连续求和,直到成为单个数字为止,例如,计算89456的数字根是这样的: 8 + 9 + 4 + 5 + 6 = 32 3 + 2 = 5 89456的数字根为5。 给定一个数字作为通过STDIN的输入,请打印/返回具有该数字根的所有可能的两个数字。如果需要,它可以包含自身,例如05 这些是所有可能的输入和输出: (您可以选择是否为数字本身包括前导零) 输入输出 0 => 0或00或全无 1 => 01和/或1、10、19、28、37、46、55、64、73、82、91-确保1不返回100 2 => 02和/或2、11、20、29、38、47、56、65、74、83、92 3 => 03和/或3、12、21、30、39、48、57、66、75、84、93 4 => 04和/或4,13,22,31,40,49,58,67,76,85,94 5 => 05和/或5、14、23、32、41、50、59、68、77、86、95 6 => 06和/或6、15、24、33、42、51、60、69、78、87、96 7 => 07和/或7、16、25、34、43、52、61、70、79、88、97 8 => …

20
对角线求和
以正整数矩阵为输入,并通过矩阵输出对角线上的元素的各个和。 您只能计算对角线向下和向右的线。您必须从仅包含左下角元素的对角线开始,然后从其上方的长度为2的对角线开始(如果存在),依此类推,直到仅包含右上角元素的对角线,如下所示。 例: Input: 8 14 5 1 10 5 5 8 6 6 8 10 15 15 4 11 Output: 15, 21, 20, 32, 29, 13, 1 (Diagonals: {{15},{6,15},{10,6,4},{8,5,8,11},{14,5,10},{5,8},{1}}) Input: 1 Output: 1 Input: 1 5 Output: 1, 5 Input: 4 1 Output: 1, 4 Input: 17 4 5 …
19 code-golf  math  matrix 

30
字符串中字符的最长运行时间
您面临的挑战:编写一个函数,该函数需要一个字符串s,一个字符c,并找出cin中最长运行的长度s。运行的长度为l。 规则: 如果s长度为0或c为空,l则应为0。 如果cin 中没有实例s,l则应为0。 适用标准漏洞和标准I / O规则。 无论在s s的运行c位置位于何处,l都应相同。 s和中可以出现任何可打印的ASCII字符c。 测试用例: s,c --> l "Hello, World!",'l' --> 2 "Foobar",'o' --> 2 "abcdef",'e' --> 1 "three spaces",' ' --> 3 "xxx xxxx xx",'x' --> 4 "xxxx xx xxx",'x' --> 4 "",'a' --> 0 "anything",'' --> 0 优胜者: 与代码高尔夫球一样,每种语言中最短的答案将获胜。
19 code-golf  string 

11
七十七七
给定一个数n和上限值l的列表,可以由两个或多个数字组成的相乘来创建的数字仅第七集长度的n是小于或更少l。A161145即将解决此挑战,但是,您将不包括7、77、777、7777、77777等。 例子 n=anything, l<49 会导致: [] n=1, l=49 会导致: 7*7=49 f(1,49)=[49] n=1, l=343 会导致: 7*7 =49 7*7*7 =343 f(1,343)=[49,343] n=2,l=6000 会导致: 7*7 =49 7*7*7 =343 7*7*7*7=2401 7*77 =539 7*7*77 =3773 77*77 =5929 f(2,6000)=[49,343,539,2401,3773,5929] n=3, l=604000 会导致: [49, 343, 539, 2401, 3773, 5439, 5929, 16807, 26411, 38073, 41503, 59829, 117649, 184877, …

9
电话号码乱码
您知道如何收到语音邮件,并且此人的联系不好,并且您正在尝试找出如何回叫他们,但是您不确定他们是“ 5”还是“ 8”说过? 这就是挑战。 好消息是,呼叫者两次读出了他们的电话号码,但两个地方都出现了乱码。 您的程序应采用这样的输入: 5551231234 / 5551231234 前十位数是语音邮件中第一次说出电话号码的地方,而第二组是第二次语音电话中说出来的号码。只有...看起来会更像这样: 555?ABC1_36? / 55?522_1?234 一个数字后跟一个问号意味着该数字是最好的猜测(例如,“ 5?”表示“可能是5,与重复比较”)。 下划线表示一个已知的丢失数字,该数字由于静电而变得模糊不清,根本无法解密。 字母就是:字母。将它们视为各自的数字 ABC-> 2,DEF-> 3,GHI-> 4,JKL-> 5,MNO-> 6,PQRS-> 7,TUV-> 8,WXYZ-> 9 所有示例输入均使用大写字母(您可以安全地忽略ToUpper()调用) 如果您的语言在小写形式下效果更好,则可以自由使用小写形式输入,并忽略ToLower()调用。只需在您的答案中注明即可。 您还可以假设以下判断调用: 5? / _ -> 5 //5 is the best guess we have, use it 5? / 5? -> 5 //uncertain, but …
19 code-golf  cipher 

2
这些列表是否相等?
如您所知,python有列表。您可能不知道这些列表可以包含自己。 a = [] a.append(a) Python 2 Python 3 这些很酷,您可以使用它们做很多有趣的事情,但是您无法将它们进行比较。 a = [] a.append(a) b = [] b.append(b) a == b Python 2 Python 3 任务 您的工作是用Python(或可以直接处理python对象的任何语言)编写一个函数,该函数将包含两个可能包含自身的列表并进行比较。 如果两个列表具有相同的长度,并且不存在数字序列,则两个列表是相等的,因此按此序列对两个列表进行索引会导致在此相等定义下两个对象不相等。为了简单起见,列表中包含的所有非列表对象都是python整数,应将其与python的内置相等性进行比较。 您的程序不应依赖python的递归深度来确定列表是否无限深。那是: def isInfinite(a,b): try: a==b return False except RunTimeError: return True 这不是确定两个列表是否为自引用的有效方法。 测试用例 假设您定义一个函数 equal a = [] a.append(a) b = [] …

20
愿第一个与你同在
编写一个程序,用“ first”替换所有出现的“ force”,并用“ force”替换所有出现的“ first”:保留所有字符位置的原始大小写: "ForcefoRcefOrcE" -> "FirstfiRstfIrsT" "FirstfiRstfIrsT" -> "ForcefoRcefOrcE" 字符串的其余部分必须保持不变,因此运行程序两次将返回原始字符串: "thirst of forces" -> "thirst of firsts" -> "thirst of forces" 您的程序应该可以在任何初始字符串上运行。因此,建议您最好避免使用魔术字符作为中间表示,因为如果尝试三遍替换("force" -> "zzzzz", "first" -> "force", "zzzzz" -> "first"),它将在包含的字符串上失败"zzzzz"。 您应该支持您的编程语言在字符串定义中允许的所有字符(在大多数情况下,它是Unicode)。例如,对不可打印的字符(\ u + 4位数字)使用JSON样式表示形式: "\u0000\u0001\u0002\u0003the Force of the firsT" | V "\u0000\u0001\u0002\u0003the First of the forcE"
19 code-golf  string 

6
矛盾多义
好吧,每个人都喜欢Polyglots。您将获得两个整数,采用任何标准输入形式(无需硬编码)。您的任务是编写一个多语言,该语言可以找到一种语言的最小值和另一种语言的两个数字之间的最大值,并执行以下操作: 找到最大值的代码也必须计算它们的总和。 找到最小值的程序还必须计算其减法(max - min)的结果 这是“棘手的部分”:如果两个数字相等,则两个程序都不得输出/返回任何内容( STDOUT和和STDERR或任何其他return方法) 有关格式的更多详细信息,请参见“ 输出规格”部分 输入项 如上所述,在任何一种标准方法中,两种语言都将两个整数用作输入。 输出规格 对于找到的程序max,格式应为:max_value, addition result 对于找到的程序min,格式应为min_value, subtraction result (max - min) 结果可以打印,与任何明确的分隔符(,\n,,或其他任何你想要的),从功能包含用分隔符或数字列表的两项预期值的字符串返回(如:[max_value,sum]) 例子: Input || Max Language Output || Min Language Output 100, 40 || 100, 140 || 40, 60 63, 67 || 67, 130 || 63, 4 -45, -5 …

2
折叠一些毛巾!
我在某处听说过技术尚无法做到的一件事就是折叠毛巾1。因此,现在要证明该声明为假! 给定一个作为输入的字符串,该字符串由矩形(毛巾)组成,如下所示,将每条毛巾对折两次。例如: +------+ +------+ +--+ | | | | | | | | | | | | | | -> +------+ -> +--+ | | | | | | +------+ 请注意,折叠一条毛巾后,首先将其折叠,然后再从左至右折叠。您的程序也必须模仿这种行为。另请注意,在测试用例中,毛巾停留在同一位置,但折叠了。 规则: 输入/输出的标准方法。 有标准漏洞。 输入和输出应为字符串。 只要毛巾相对彼此在正确的位置,就可以随便拖曳任何东西。 您可以假设毛巾两边的长度始终可以被2整除。 作为输入传递的毛巾将始终为矩形。 毛巾将始终分开-但是,它们可能会以可变的量分开。 代码高尔夫,所以最短的代码获胜! 测试用例: Input: +------+ | | | | | | | …

30
减少错误
任务 给定一个非空数组0和1,将的游程长度减半0。 输入项 的阵列0和1。可接受的格式: 使用您的语言的真实数组 换行分隔的字符串0和1 连续的字符串0和1 任何其他合理的格式 例如,以下三个输入均可接受: [1, 0, 0, 1] "1\n0\n0\n1"(哪里\n有换行U + 000A) "1001" 您可以假设的游程长度0是偶数。 输出量 的阵列0和1,在上述可接受的格式。 测试用例 input ↦ output [1,0,0,1,0,0,1] ↦ [1,0,1,0,1] [1,1,0,0,1,1,0,0,1] ↦ [1,1,0,1,1,0,1] [1,1,0,0,1,1,1,0,0,1,1] ↦ [1,1,0,1,1,1,0,1,1] [1,1,1] ↦ [1,1,1] [0,0,1] ↦ [0,1] [0,0] ↦ [0] [1,1,1,0,0,0,0,1,1,1,1,0,0,1,0,0,1,1,0,0,1,1,1,1,0,0,1,0,0] ↦ [1,1,1,0,0,1,1,1,1,0,1,0,1,1,0,1,1,1,1,0,1,0] 计分 这是代码高尔夫球。以字节为单位的最短答案将获胜。 有标准漏洞。

4
费马的分解助手
我们希望因式分解半素。这项挑战的目标是找到两个小整数和,用Fermat方法将分解为,从而可以轻松的因数。ü v ü v ñ ñNNNuuuvvvuvNuvNuvNNNN 任务 给定一个半素数 和一个正整数,我们将和定义为:ķ X ÿNNNkkkxxxyyy Ŷ=X2-ķÑx=⌈kN−−−√⌉x=⌈kN⌉x=\lceil\sqrt{kN}\rceil y=x2−kNy=x2−kNy=x^2-kN 步骤#1-查找kkk 首先,您需要找到k的最小可能值,以kkk使yyy为平方数(也称为完美平方)。 这允许通过Fermat分解因子方法的单次迭代分解kN。更具体地说,这立即导致:ķ ñķñkN kN=(x+y√)×(x−y√)kN=(x+y)×(x−y)kN=(x+\sqrt{y})\times(x-\sqrt{y}) (更新:此序列现在发布为A316780) 步骤#2-分解ķķk 然后,您必须找到两个正整数üüu和vvv,使得: c u = x + √uv=kuv=ķuv=k dv=X- √cu=x+y√cu=x+ycu=x+\sqrt{y} dv=x−y√dv=x−ydv=x-\sqrt{y} 其中cCc和ddd是N的素因NNN。 摘要 您的任务是编写一个程序或函数,将作为输入,并以任何顺序和任何合理的格式打印或输出和。ü vNNNuuuvvv 例 让我们考虑N=199163N=199163N = 199163 步骤1 的最小可能值是,这给:40kķk404040 ÿ=28232-40×199163=7969329-7966520=2809=532ķÑ=(2823+53)×(2823-53)ķÑ=2876×2770x = ⌈ (40 × 199163----------√)⌉ = 2823X=⌈(40×199163)⌉=2823x = \lceil(\sqrt{40 …

3
大底,小数位
J语言的语法非常笨拙,无法指定常量。我想特别关注一个很酷的功能:以任意基础编写的能力。 如果编写XbY用于X任何数量和Y字母数字的任意字符串,则J将解释Y作为基础X数,其中0通过9具有其通常的含义,a通过z通过35表示10。 当我说X任何数字时,我的意思是任何数字。出于这个问题的目的,我将约束X为正整数,但是在J中,您可以使用任何东西:负数,分数,复数,等等。 奇怪的是,您只能使用0到35之间的数字作为基数,因为所有可用符号的集合都只包含0-9和az。 问题 我想要一个程序来使用这种方法帮助我像2,933,774,030,998这样的魔术数字打高尔夫球。好吧,好吧,也许没那么大,我会很轻松的对待你。所以... 您的任务是编写一个程序或函数,该程序或函数将一个(通常是较大的)十进制数N在1到4,294,967,295(= 2 32 -1)之间作为输入,并输出/返回该形式的最短表示形式XbY,其中X正整数Y是一个字符串,由字母数字组成(0-9和az,不区分大小写),并Y以base Xequals 解释N。 如果每个表示形式XbY表示的长度大于或等于的位数N,则N改为输出。在所有其他关系中,您可以输出最短表示形式的任何非空子集。 这就是代码高尔夫,所以越短越好。 测试用例 Input | Acceptable outputs (case-insensitive) ------------+------------------------------------------------------- 5 | 5 | 10000000 | 79bkmom 82bibhi 85bgo75 99bauua 577buld | 620bq9k 999baka | 10000030 | 85bgo7z | 10000031 | 10000031 | 12345678 | 76bs9va 79bp3cw 82bmw54 86bjzky …

2
岛屿高尔夫2:古怪的隐士
这是Island Golf系列挑战中的第二次挑战。先前的挑战 两个隐士到达了一个荒岛。由于他们寻求孤独,所以他们希望彼此之间住得尽可能远。他们应该在哪里建造小屋,以使他们之间的步行距离最大化? 相关阅读 输入项 您的输入将是一个由两个字符组成的矩形网格,分别代表土地和水。在下面的示例中,土地是#,水是.,但是您可以替换任意两个不同的字符。 ........... ...##...... ..#####.... ..#######.. .#########. ...#######. ...#####.#. ....####... ........... 始终将至少有两个地砖。地砖将是连续的(即只有一个岛)。瓷砖也将是连续的(即没有湖泊)。网格的外边界都是水瓦片。地砖将不会以对角线连接:即,您将永远不会看到类似 .... .#.. ..#. .... 输出量 您的代码必须输出相同的网格,并在网格上标记了两个小屋位置。在下面的示例中,小屋的位置用X标记,但是您可以替换任何字符,只要它与您的水陆字符不同即可。 小屋的位置必须为两个地砖,以选择它们之间的最大步行距离。我们将步行距离定义为两点之间完全在陆地上的最短路径的长度。地砖被视为水平或垂直相邻,但不对角。 上述岛屿的可能解决方案: ........... ...X#...... ..#####.... ..#######.. .#########. ...#######. ...#####.X. ....####... ........... 这两个点之间的步行距离是11,这是该岛上任何两个点之间的最大距离。还有另一个距离11解决方案: ........... ...##...... ..X####.... ..#######.. .#########. ...#######. ...#####.X. ....####... ........... 细节 您的解决方案可能是完整程序或功能。任何默认的输入和输出方法都是可以接受的。 您的输入和输出可以是多行字符串,字符串列表或2D数组/嵌套的字符列表/单字符字符串。您的输出可能(可选)有一个尾随换行符。如上所述,您可以使用任何三个不同的字符来代替#.X(请在提交中指定要使用的字符)。 测试用例 A.具有独特小屋位置的岛屿: .... .##. …

18
创建一个简单的行编辑器
输入:不带换行符的字符串* 允许用户编辑和提交换行符 :修改后的字符串(可选带尾随的换行符) 行编辑器至少必须允许用户: 左右移动可见光标 在光标位置插入和/或覆盖字符 删除光标位置的字符 提交新的字符串,即停止编辑会使修改后的字符串返回/打印/显示/保存(没有其他文本) 赞赏,但不是必需的: 您的代码的解释。 链接到可以演示您的程序/功能的在线测试站点 演示用法的动画图像(例如,TIO不允许交互) 注意: 键绑定仅是建议 不需要GUI或视觉样式 例子 在下面,用表示光标_。 进入: Just some text 允许用户编辑: Just some text_ 用户按下←九次(向左箭头键) Just ̲some text 用户按下Del四次 Just ̲ text 用户按下 用户按下Out:any Just any_text Enter Just any text 入: Remove me 允许用户编辑: Remove me_ 用户按Backspace九次 _ 用户按出:(空字符串)Enter …

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.