Questions tagged «code-golf»

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

29
围绕枢轴反转字符串的两个部分
背景 我目前正在参加AP Comp Sci A:Java课程,并且想结识一些打高尔夫球的朋友。我在课程中遇到了挑战,我想看看社区可以在其中挑战多少字节。 挑战详情: 给定两个输入字符串,即主字符串和枢轴字符串,请执行以下操作: 如果枢轴字符串恰好是主字符串的子字符串一次,则主字符串中位于枢轴字符串之前的部分应与之后的部分交换,同时保留要交换的子字符串中的顺序。 例如: 如果转角字符串为空或枢轴字符串不是主字符串中发现,该方案不必有定义的行为。 如果枢轴字符串的实例不止一个,则拆分应在枢轴的第一个实例和仅第一个实例处进行。 示例:给定主字符串OneTwoThreeTwoOne和数据透视字符串Two,输出应为ThreeTwoOneTwoOne。 给定主字符串1Two2Two3Two4和枢轴Two,输出应为2Two3Two4Two1。 给定主字符串OneTwoThree和枢轴字符串“ Two”,输出应为ThreeTwoOne。给定主弦the rabbit is faster than the turtle和枢轴弦 is faster than (请注意尾随空格),输出应为the turtle is faster than the rabbit。 给定主字符串1-2-3-4-5-6和枢轴-,输出应为2-3-4-5-6-1。 后记: 这是我对代码高尔夫的第一个问题,因此,如果您有任何建议或建设性的批评,请随意发表。 另外,可以在下面找到我用于该项目的代码(使用Java编写,因为本课程着重于此)。如果您有任何提示,我很乐意看到它们。它目前的363字节,但我敢打赌,你们可以提出更好,更小的解决方案。 import java.util.Scanner;interface Main{static<T>void D(T f){System.out.println(f);}static void main(String[]A){Scanner s=new Scanner(System.in);D("Enter the first String:");String a=s.nextLine();D("Enter the pivot …
17 code-golf  string 

11
神奇的电子邮件转换!或者:帮助NSA从您的电子邮件地址中提取您的元数据
给定一个电子邮件地址,应用于该电子邮件地址的转换结果以及第二个电子邮件地址,将返回应用于第二个电子邮件地址的相同转换的输出。 电子邮件地址都将具有以下结构: 一串正长度的字符串,包含字母数字字符和最多一个.(局部部分),后跟一个@符号,然后是一串正长度的字符串,其中包含字母数字sumbols(域),后跟一个.符号,最后是一串正长度的字符串包含字母数字字符(TLD)。 有四个允许的转换: 身份(不变)。(a.b@c.d -> a.b@c.d) 仅返回本地部分(之前的所有内容) @未修改(a.b@c.d -> a.b))。 返回本地部分拆分 .如果存在),并用大写的每半个符号表示。(a.b@c.d -> A B)。 仅返回域(介于@和最终之间的所有内容.未修改)。(a.b@c.d -> c)。 如果可能进行多个转换,则可以给出任何可能性的输出。输出开头和结尾的空格无关紧要,但是中间的空格就无关紧要(即,如果拆分a.b为A B中间,则中间应该只有一个空格[并且输出的开头和结尾应该是空格),但是如果拆分a.,那么A在任何一侧都可以有任意数量的空格)。 范例(input | output): john.doe@gmail.com, John Doe, phillip.maini@gmail.com | Phillip Maini John.Doe@gmail.com, John Doe, Phillip.Maini@gmail.com | Phillip Maini foo.bar@hotmail.com, foo.bar, gee.whizz@outlook.com | gee.whizz foo.bar@hotmail.com, foo.bar, gEe.Whizz@outlook.com | gEe.Whizz rodney.dangerfield@comedy.net, comedy, …
17 code-golf  string 

9
整数平方根的序列
让我们定义一个整数平方根的序列。首先,a(1)=1。然后,a(n)是之前从未见过的最小正整数,因此 sqrt(a(n) + sqrt(a(n-1) + sqrt(... + sqrt(a(1))))) 是一个整数。一些例子: a(2)是3,因为它是最小的整数,因此 sqrt(a(2) + sqrt(a(1))) = sqrt(a(2) + 1)整数,并且之前的序列中未出现3。 a(3)是2,因为它是最小的整数,即sqrt(a(3) + sqrt(a(2) + sqrt(a(1)))) = sqrt(a(3) + 2)整数,并且之前的序列中未出现2。 a(4)是7,因为它sqrt(a(4) + 2)是整数。我们不可能有a(4)= 2,因为在我们的序列中已经出现了2个。 编写一个给定参数n的程序或函数,其返回数字序列a(1)至a(n)。 该序列以1,3,2,7,6,13,5,...开始。 该序列的来源来自此Math.SE问题。 序列中前1000个元素的图:

3
求幂乘以加法
可以将2个整数之间的乘法简化为一系列加法运算,如下所示 3 * 5 = 3 + 3 + 3 + 3 + 3 = 5 + 5 + 5 求幂(将a增大到b)也可以简化为一系列乘法: 5 ^ 3 = 5 * 5 * 5 因此,可以通过创建乘法表达式将乘幂减少为一系列加法,然后减少为一系列加法。例如,5 ^ 3(5立方)可以重写为 5 ^ 3 = 5 * 5 * 5 = (5 + 5 + 5 + 5 …

14
蒙我的密码
仍应避免将常用词用作密码。这种挑战是关于编码一个非常简单的程序,munges一个给定的密码(中号 odify û NTIL Ñ OT ģ uessed ë asily)。 输入项 一个单词,它是用字母写的字符串abcdefghijklmnopqrstuvwxyz。字母是小写还是大写都没有关系。 ging 将同一字母的任何重复序列更改为其自身,LLLL再加上该字母重复的次数(4L) 更改第一个a与@ 更改第一个b与8 更改第一个c与( 更改第一个d与6 更改第一个e与3 更改第一个f与# 更改第一个g与9 更改第一个h与# 更改第一个i与1 更改第二i与! 更改第一个k与< 更改第一个l与1 更改第二l与i 更改第一个o与0 更改第一个q与9 更改第一个s与5 更改第二s与$ 更改第一个t与+ 更改第一个v与> 更改第二v与< 更改第一个w与uu 更改第二w与2u 更改第一个x与% 更改第一个y与? 必须将规则1应用所需的次数,直到无法再应用它为止。之后,将应用其余规则。 输出绿字 例子 codegolf -> (0639o1# programming -> pr09r@2m1ng puzzles -> pu2z135 …
17 code-golf 

10
具有相似功效的数字
给定一个整数P> 1,找出最小的整数Q> p,使得的因式分解指数列表中q是同类的的p,无论顺序或素因子值。 例子 p = 20的素数分解为2 2 x 5 1。在素数分解中具有相同指数的大于p的最小整数为q = 28 = 2 2 x 7 1。 p = 2500的素数分解为2 2 x 5 4。在素数分解中具有相同指数的,大于p的最小整数为q = 2704 = 2 4 x 13 2。 规则 输入保证为大于1的整数。 这是代码高尔夫球,因此最短的答案以字节为单位。 测试用例 Input | Output ------+------- 2 | 3 20 | 28 103 | …

14
最小整数作为给定因子的乘积
最近有很多与质数/素数分解相关的挑战,所以我认为走另一条路可能很有趣。 鉴于: 一个正整数n,和 正整数的非空列表 f 编写一个完整的程序或函数以找到最小的整数i,使得i >= n和i是f。中元素的非负整数幂的乘积。 例子: 假设n = 11, f = [2, 3, 5]。 前几个产品是: 1 = 2^0 * 3^0 * 5^0 2 = 2^1 * 3^0 * 5^0 3 = 2^0 * 3^1 * 5^0 5 = 2^0 * 3^0 * 5^1 4 = 2^2 * …

11
环原子多项式
背景(跳至定义) 欧拉证明了关于复数的美丽定理:e ix = cos(x)+ i sin(x)。 这使得de Moivre定理易于证明: (e ix)n = e i(nx) (cos(x)+ i sin(x))n = cos(nx)+ i sin(nx) 我们可以使用二维欧几里得平面绘制复数,其中水平轴代表实部,垂直轴代表虚部。这样,(3,4)将对应于复数3 + 4i。 如果您熟悉极坐标,则极坐标中的(3,4)将为(5,arctan(4/3))。第一个数字r是点到原点的距离;第二个数字θ是从x轴正方向到该点逆时针测量的角度。结果,3 = rcosθ和4 = rsinθ。因此,我们可以写成3 + 4i为rcosθ + risinθ = r(cosθ+ isinθ)= reiθ。 让我们求解复数方程z n = 1,其中n是一个正整数。 我们令z = reiθ。然后,Z Ñ = R Ñ Ë inθ。z …

5
墙上的91瓶ASCII啤酒
给定一个整数x,其中0 <= x <= 91输出一堆啤酒瓶,其中缺少许多瓶(和架子)。为简单起见,我将仅显示前6个瓶子,以及每个第一个输入的瓶子。 这是一堆瓶子,每个数字都是您应该为该输入(1索引)移除的瓶子: https://pastebin.com/wSpZRMV6 请注意,我们使用91而不是99,因为99会导致不稳定的瓶子堆叠。 例 缺少0瓶(x=0): |=| | | | | / \ . . |-----| | | |-----| |_____| ============= |=| |=| | | | | | | | | / \ / \ . . . . |-----| |-----| | | | | |-----| …

2
丢掉RNG
迷失是一种二维编程语言,其中ip的起始位置和方向完全是随机的。 这使得制作确定性的丢失程序非常困难。但是,今天我们不是在编写确定性程序,而是在编写RNG。 编写一个不输入任何内容并输出一个数字(0、1、2、3、4、5、6、7、8或9)的丢失程序,所有数字的输出概率相等。由于Lost的起始位置和方向是唯一的随机性来源,因此,唯一的方法是让您源中的每个位置输出一个从0到9的不同数字,并输出相等的数字。 您可以通过使用-Q标志并将其输送到此python脚本中来计算每个数字的概率 import sys a=sys.stdin.read().split()[:-1] for x in range(10):print x,':',a.count(`x`) print[x for x in a if x not in list("1234567890")] 在线尝试! 这是代码高尔夫球,因此答案将以字节计分,而字节数越少越好。 失落概述 迷失是一种包装式隐式IO 2D语言,它取材于克莱因的模范。这是丢失命令功能的快速摘要 \,/,|镜子的IP <,^,>,v点IP的方向 [反映ip是否向东移动;变成]如果ip在水平移动 ]反映ip是否向西移动;变成[如果ip在水平移动 ! 跳过下一个操作 ? 从堆栈顶部弹出,如果不为零,则跳转 : 复制堆栈的顶部 $ 交换堆栈的前两个项目 ( 从堆栈弹出并推送到示波器 ) 从示波器弹出并推入堆栈 0- 9将n推入栈顶 "开始和结束字符串文字。在字符串期间,不运行文字命令,而是将其字符值压入堆栈。 + 将前两个数字相加 * 将前两个数字相乘 …
17 code-golf  random  lost 

21
对我矩阵的增量求和
背景 整数数组的增量是通过获取连续元素的差形成的数组。例如,[1, 2, 4, 7, 3, 9, 6]具有以下增量:[1, 2, 3, -4, 6, -3]。 现在,我们将整数矩阵的增量定义为每一行及其包含的每一列的增量。 举个例子: Row deltas: 1 2 3 4 │ => [1, 1, 1] 4 5 6 7 │ => [1, 1, 1] 7 1 8 2 │ => [-6, 7, -6] Column deltas (the matrix' columns have …

11
埃塞俄比亚乘法
这个问题的灵感来自这个答案。碰巧的是,我小时候曾经使用埃塞俄比亚乘法,但直到最近才知道该方法的名称。 埃塞俄比亚乘法是仅使用加法,加倍和减半对整数进行乘法的方法。 方法: 取两个数字相乘,然后将其写下两列的顶部。 在左列中,将最后一个数字重复减半,舍弃所有余数,然后将结果写在同一列中的最后一个下面,直到写入值1。 在右侧栏中,重复将最后一个数字加倍,然后将结果写在下面。将结果添加到与左列显示1相同的行时停止。 检查生成的表,并丢弃左列中的值是偶数的任何行。将右侧列中的值相加,得出将原始两个数字相乘得到的结果。 例如:17 x 34 17 34 将第一列减半: 17 34 8 4 2 1 将第二列加倍: 17 34 8 68 4 136 2 272 1 544 删除第一个单元格为偶数的行,我们将这些数字放在方括号中的右边,以实现此目的: 17 34 8 [68] 4 [136] 2 [272] 1 544 将右侧栏中的剩余数字相加: 17 34 8 [68] 4 [136] 2 [272] …

23
简单复杂
输出量 ########## ### ## #### ########### #### ## ###### ####### ######### ##### ##### ##### ######## ####### ########## #### ################ ### ##### ######## ########### ### ## ######## ####### #### ###### ############# ####### ###### #### ####### ##### ## ########### #### ####### ####### #### ########### ## ###### ####### #### ###### ####### ############# ###### …

2
解决火柴拼图
在令人困惑的SE上,存在所谓的“火柴问题”,其中数学是用火柴写的,并且允许您移动一定数量的火柴以获得某种属性。 在这个问题中,我们将只考虑以7段显示格式表示的整数。这是该格式的所有10位数字: __ __ __ __ __ __ __ __ | | | __| __| |__| |__ |__ | |__| |__| |__| | |__ __| | __| |__| | |__| __| 显示屏的每个部分都是一个“火柴棍”,可以独立于其余数字移动。火柴是不可分割和坚不可摧的,不能以任何方式将其破坏或移走。 一个常见的难题是采用以10为底的给定数字,并尝试在给定的移动次数中使最大数字成为可能。一次移动被认为是火柴棍从任何占用的插槽到任何其他未占用的插槽的移动。完全可以在数字的两边输入新数字,例如0可以变成77给出3个移动 __ __ __ __ __ __ __ | | | | | | | | | |__| …

16
查找最长的代表数字
您的任务是将正数用作输入n,并输出任何基数中n的最长表示位表示形式的长度。例如,7可以表示为以下任何一种 111_2 21_3 13_4 12_5 11_6 10_7 7_8 代表数字是111_2和11_6,111_2更长,因此我们的答案是3。 这是一个代码问题,因此答案将以字节计分,而字节越少越好。 测试用例 1 -> 1 2 -> 1 3 -> 2 4 -> 2 5 -> 2 6 -> 2 7 -> 3 8 -> 2 9 -> 2 10 -> 2 11 -> 2 26 -> 3 63 -> 6 …

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.