编程拼图和代码高尔夫

编程益智爱好者和代码高尔夫球手的问答

2
那是谁的多边形?
表示拓扑表面的一种方便且有用的方法是使用基本多边形。多边形的每一侧都与另一侧匹配,并且可以是平行的或反平行的。例如,这是圆环的基本多边形: 为了弄清楚为什么这是一个圆环,我们可以想象我们的多边形是一张纸。为了制作适当的表面,我们希望弯曲纸张,以使相应的边缘与箭头的方向相同。对于我们的圆环示例,我们可以从将纸卷成圆柱体开始,以便连接两个蓝色边缘(标记为b)。现在,我们将试管弯曲并将其两个红色边缘(标记为a)彼此连接。我们应该有一个甜甜圈形状,也称为圆环形状。 这可能会有点棘手。如果您尝试对以下多边形进行相同处理,则其中一个边沿相反的方向移动: 您可能会遇到麻烦。这是因为此多边形代表的Klein瓶子无法嵌入三个维度。这是维基百科的图表,显示了如何将这个多边形折叠成Klein瓶子: 您可能已经猜到了,这里的任务是获取基本多边形并确定其为哪个表面。对于四个面的多边形(您将需要处理的唯一曲面),有4个不同的曲面。 他们是 圆环面 克莱因瓶 球 投射平面 现在不是 图像处理,因此我不希望您将图像作为输入,而是使用方便的符号来表示基本多边形。您可能已经注意到,在上面的两个示例中,我用相同的字母(a或b)命名了相应的边,并且给扭曲的边附加了一个标记以显示其扭曲。如果我们从上边缘开始并沿顺时针方向写下每个边缘的标签,我们将得到一个表示每个基本多边形的符号。 例如,提供的Torus将变为abab,而Klein瓶将变为ab - ab。对于我们的挑战,我们将使其变得更加简单,而不是用负号标记扭曲的边缘,而改为将那些字母大写。 任务 给定一个字符串,确定它是否代表基本多边形,并输出一个与其正确表面相对应的值。您无需精确命名表面,只需要4个输出不同的值即可,每个值代表4个表面之一,第5个值代表不正确的输入。所有基本案例都包含在“ 简单测试”中部分介绍,每辆车将同构或无效。 规则 侧面将不会总是用a和b标记,但是它们总是会用字母标记。 有效输入将包含4个字母,其中两个是一种类型,而另外两种是两种类型。您必须始终输出正确的表面以进行有效输入。 您应该拒绝(不输出代表曲面的4个值中的任何一个)无效输入。拒绝输入时,您可以执行任何操作,只要它可以与4个表面区分开即可 这是代码高尔夫球,因此目标是最大程度地减少源代码中的字节数。 测验 简单测试 abab Torus abAb Klein Bottle abaB Klein Bottle abAB Projective Plane aabb Klein Bottle aAbb Projective Plane aabB Projective Plane aAbB Sphere abba Klein Bottle …

15
最大互素数分解
定义 如果两个数字的唯一正公约数是,则它们是互质的1。 如果该列表中的每对数字互为互素,则该数字互斥互质。 数字的因式分解n是其乘积为的数字列表n。 任务 给定一个正数n,输出n不包含的最大长度的互互素因式分解1。 例 对于n=60,答案是[3,4,5],因为3*4*5=60没有其他互互素因式分解的1长度大于或等于3分解的长度。 规则与自由 您可以使用任何合理的输入/输出格式。 输出列表中的条目无需排序。 测试用例 n output 1 [] 2 [2] 3 [3] 4 [4] 5 [5] 6 [2, 3] 7 [7] 8 [8] 9 [9] 10 [2, 5] 11 [11] 12 [3, 4] 13 [13] 14 [2, 7] 15 [3, 5] 16 …

19
将我的斐波那契除数相加!
著名的斐波那契数列是F(0) = 0; F(1) = 1; F(N+1) = F(N) + F(N-1)(对于这个挑战,我们从0开始)。 您的挑战:由于ñ,输出所有的总和d个斐波那契数为所有除数Ð的的ñ个Fibonacci数。如果您希望使用更正式的符号, 输入:正整数n 输出:总和 例如,考虑n=4。F(4) = 33的除数是1和3,因此输出应为F(1) + F(3) = 1 + 2 = 3。 对于n=6,F(6) = 8和,8的除数是1,2,4,8,因此输出是F(1) + F(2) + F(4) + F(8) = 1 + 1 + 3 + 21 = 26。 测试用例: 1 => 1 2 => …

8
可达号码
定义 欧拉披(Euler Phi)函数(又称totient函数):该函数接受一个正数,并返回小于给定数的正数,这些正数与给定数互质。表示为φ(n)。 可达数:如果存在一个正整数x,使得φ(x) == n,然后n是可到达的。 任务 编写函数/程序以确定给定的正整数是否可以达到。 输入值 任何合理格式的正数。可以假定数字在该语言的能力范围内。一元输入被接受。 输出量 两个一致的值,一个用于可访问的数字,另一个用于不可访问的数字。两个值可以是任意值,只要它们是一致的即可。 测试用例 以下是可接通的电话号码100: 1,2,4,6,8,10,12,16,18,20,22,24,28,30,32,36,40,42,44,46,48,52,54,56,58,58, 60、64、66、70、72、78、80、82、84、88、92、96 (OEIS上为A002202) 规则 有标准漏洞。 获奖标准 这是代码高尔夫球。提交的字节数最少。 参考文献 欧拉·菲函数 OEIS A002202

25
加分数
编写一个程序或函数,将两个长度相同的非空列表作为输入,并执行以下操作: 使用第一个列表的元素获取分子, 使用第二个列表的元素来获取分母, 简化后显示结果分数(2/4=>1/2),以“ +”号分隔, 在最后一个分数之后显示“ =”和加法结果。 例: 输入值 [1, 2, 3, 3, 6] [2, 9, 3, 2, 4] 输出量 1/2+2/9+1+3/2+3/2=85/18 关于规则 列表的元素将为正整数, 元素可以用空格隔开,例如:1/2 + 2/9 + 1 + 3/2 + 3/2 = 85/18可以, 尾随换行符是允许的, 列表可以采用上述格式以外的其他格式,例如:(1 2 3 3 6)或{1;2;3;3;6},等等。 1可表现为1/1, 您可以返回适当的字符串来代替打印, 您不需要处理错误的输入, 最短的代码胜出。

23
两个六面骰子100卷的总和
假设您有两个六面骰子。将线对滚动100次,计算每对的总和。打印出每个总和发生的次数。如果从未汇总过一笔总和,则必须包括零或某种方式以标识该特定笔从未从未汇总过。 示例输出:[3、3、9、11、15、15、11、15、7、8、3] 总和索引中表示了总和的滚动次数-2 在此示例中,两个总和被滚动3次([2-2]),三个总和被滚动3次[[3-2]),四个总和被滚动9次([4-2]),依此类推上。掷骰子总和并不重要(5和2与6和1相同) 只要您解释应该如何读取数据,“丑陋”的输出就可以了(尾随零,大量额外输出,奇怪的数据表示方式等)。

9
键盘布局挑战
人们通常使用的键盘布局是QWERTY布局,如下所示。 但是,还有其他键盘布局: 德沃克 科勒马克 工人 你的任务 您的代码将接受两个输入:键盘布局的名称和要转录的字符串。您的目标是转换QWERTY输入,就像您使用给定的键盘布局作为第一个参数进行键入一样。 规则 输入格式是免费的,您可以使用字符串,数组等。此外,您可以使用任何三个不同的值来表示布局以减少字节数,但是它们每个都必须以10个字节或更少的字节表示。 您只需要处理带有白色背景的键。具体来说,您必须将可打印的ASCII字符从QWERTY字母转换为其他字母之一: QWERTY: !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ DVORAK: !_#$%&-()*}w[vz0123456789SsW]VZ@AXJE>UIDCHTNMBRL"POYGK<QF:/\=^{`axje.uidchtnmbrl'poygk,qf;?|+~ COLEMAK: !"#$%&'()*+,-./0123456789Oo<=>?@ABCSFTDHUNEIMKY:QPRGLVWXJZ[\]^_`abcsftdhuneimky;qprglvwxjz{|}~ WORKMAN: !"#$%&'()*+,-./0123456789Ii<=>?@AVMHRTGYUNEOLKP:QWSBFCDXJZ[\]^_`avmhrtgyuneolkp;qwsbfcdxjz{|}~ (注意:这是@ETHproductions手动转录的,因此,如果您发现任何错误,请指出来!) 例 DVORAK zZxX 作为输入将作为输出 ;:qQ 这是代码高尔夫球,因此最短答案以字节为单位!

4
查找有限组的子组数
定义 如果您已经知道组,有限组和子组的定义,则可以跳过此部分。 团体 在抽象代数中,一个组是一个元组(G,∗),其中G是一个集合,而∗是一个函数G×G→G,使得下式成立: 封闭:对于所有的x,y在ģ,X * Y也是ģ(由事实暗示*是一个函数G×G ^→G )。 关联:对所有X,Y,Z在ģ,(X * Y)* Z = X *(Y * Z) 。 同一性:存在一个元素ê在ģ使得对于所有X中ģ,X * E = X = E * X。 逆:对于每个X在ģ,存在一个元素ý在ģ使得X * Y = E = Y * X,其中ê是在前面的项目符号点中提到的单位元。 有限群体 甲有限组是一组(G,*) ,其中G ^是有限的,即,具有有限多个元件。 亚组 组(G,∗)的子组 (H,∗)使得H是G的子集(不一定是适当的子集),而(H,∗)也是一个组(即满足上述4个条件)。 例子 考虑二面体组D 3 (G,∗),其中G = {1,A,B,C,D,E},并且∗在下面定义(这样的表称为Cayley表): …

5
生成所有Brain-Flak片段
这个问题是旨在庆祝Brain-Flak的第一个生日的几个Brain-flak Birthday挑战中的第二个!您可以在此处找到有关Brain-Flak诞辰的更多信息 挑战 对于这个挑战,您将从括号列表中生成所有完全匹配的字符串。借用DJMcMayhem对完全匹配的字符串的定义: 出于此挑战的目的,“括号”是以下任意字符:()[]{}<>。 如果左括号和右括号的顺序正确且其中没有字符,则将一对括号视为“匹配” () []{} 或者,如果其中的每个子元素也都匹配。 [()()()()] {<[]>} (()()) 子元素也可以嵌套几层深。 [(){<><>[()]}<>()] <[{((()))}]> 当且仅当每对括号中的正确开/右括号正确且顺序正确时,才将字符串视为“完全匹配”。 输入值 您的程序或函数将采用任何方便且一致的格式列出四个非负数的列表。这包括(但不限于)整数列表,非数字定界字符串或单独的参数。这四个数字代表每种类型的括号的匹配对数。例如,[1,2,3,4]将代表: 1对 () 2对 {} 3对[]和 4对 <> 您可以选择每个输入对应的一对括号,只要它们是一致的即可。 输出量 您应该输出可以从此括号列表中形成的所有完全匹配的字符串,而不重复。输出可以采用任何合理的格式,包括将非括号分隔的字符串打印到STDOUT或将字符串列表作为函数的返回值。 您的算法必须适用于任何任意输入,但是您不必担心内存,时间或整数大小限制(例如,如果答案是C,则不会得到2 33作为输入)。 这是代码高尔夫球,因此最短的答案以字节为单位。 输入和输出示例 对于这些示例,我将使用与上面相同的输入顺序。 对于每个示例,第一行将被输入,随后几行将被输出 Example 0: [0,0,0,0] Example 1: [1,0,0,0] () Example 2: [0,2,0,0] {}{} {{}} Example 3: [0,0,1,1] []<> …

9
没有11的回文素
每个具有偶数位数的回文可以被11整除,因此11是唯一具有偶数位数的[回文素数]。- 大卫·沃瑟曼,OEIS 今天,在进行回文素数计算时,我的程序跳过了偶数位数(11除外)的数字,这是我在进行研究之前以手动方式学习的。您的任务:创建一个程序或函数,当给定整数输入N时,该程序或函数在Stephen's Palindromic Sequence™中输出第N个项。 斯蒂芬的回文序列™ Stephen的Palindromic Sequence™从11开始,再到回文的 半素数可被11整除。基本上,如果11不“计数”,则所有的半素数都是素数。有利的是,此列表包含具有偶数个数字的数字!好极了。并且,由于它们已经是质数,所以将跳过许多具有奇数个数字的数字。 序列的开始: 1 : 11 2 : 22 3 : 33 4 : 55 5 : 77 6 : 121 7 : 737 8 : 979 9 : 1111 10 : 1441 11 : 1661 12 : 1991 13 : 3113 14 …

4
像2048拼图一样更改文字重力
在游戏2048中,您有一个网格,并且可以在四个方向上移动元素。他们都朝着这个方向努力。对于此挑战,将为您提供带填充的方形2D字符串(带有换行符或字符串列表),如下所示: ab cd e f ghij kl mno p q r st u v w x y z 要么 ['ab cd e ', ' f ghij ', ' kl', 'mno p ', ' q r st ', 'u v', ' w x y ', 'z '] 这四个操作是left,right,up,和down。以上输入中每个的结果: 剩下: abcde fghij …
14 code-golf  string 

12
正负多面体!
您的提交必须包含一个数字列表(以您的语言支持的任何列表格式,或使用多个功能/命令行参数),或一串数字,并用一个不是的字符分隔0123456789。用一种语言,它必须将所有语言相加并输出和。用另一种语言,它必须按顺序输出彼此相减的结果。例: 12 5 7 2 在一种语言中,它必须输出26,而在另一种语言中,它必须输出-2。请注意,所有输入的数字都是小于的正整数100。所20提供的数字将永远不会超过,因此您的输出将永远不会大于2000或小于-1899。任何问题?在下面发表评论!

11
A,Buzz,C,D,E,Fizz,G
一个使用字符串的简单FizzBu​​zz。 给定 1个字或词组(字符串) 2个独特的角色 输出量 每个出现的第一个字符的单词或短语都用嘶嘶声代替,而第二个字符的每个单词或短语都以嗡嗡声代替 规则 Fizz和Buzz中的首字母必须保持大写 对于其余的嘶嘶声和嗡嗡声,您必须匹配被替换字符的大小写(如果没有大小写,则保持小写) 如果短语中没有给定的字符,则输出原始短语 测试用例 Given: Hello, h, l Output: FIZZeBuzzBuzzo Given: test, a, b Output: test Given: PCG rocks!, , ! PCGFizzrocksBuzz Given: This Is SPARTA!, , S Output: ThiBuzzFizzIBuzzFizzBUZZPARTA! Given: FizzBuzz, a, b Output: FizzBUZZuzz 这是代码高尔夫球,因此以字节为单位的最短代码胜出! 注意 从技术上讲,处理换行案例(这是SPARTA!)是挑战的一部分。但是,我不会因为没有包含答案而作废,因为在某些语言中这是非常具有挑战性甚至是不可能的。
14 code-golf  string 

1
帮我给鳄梨榨汁
在这个挑战中,我有一个鳄梨领域,我想尽可能快速,完整地榨汁。您可以编写一个程序或函数来帮助我确定如何使所有鳄梨完美地榨汁吗? 作为输入,您将得到鳄梨作为mx m正方形网格,其中m是3到6之间的整数。每个正方形恰好包含一个鳄梨。鳄梨有多汁的阶段: 阶段1:鳄梨根本没有榨汁。 阶段2:鳄梨已部分榨汁。 阶段3:鳄梨已完全榨汁。 阶段4:鳄梨因榨汁过多而爆炸。 当您使用榨汁工具时,该榨汁工具作用范围内的鳄梨将移至下一个阶段。爆炸的鳄梨有很大的力量,会破坏整个鳄梨场,因此请确保没有鳄梨爆炸! 这是鳄梨网格的示例。在这些示例中,我使用了0,0左下角的坐标和右上角的坐标2,2,尽管您可以调整坐标系以适合您的语言。 112 221 231 目的是使所有鳄梨完全榨汁(即阶段3)。为此,您拥有三种不同的榨汁工具。每种榨汁工具都有不同的作用范围,但是它们都会使受影响的鳄梨的多汁程度提高1。 这是您可以使用的所有工具。通过指定工具的第一个字母,然后指定要榨汁的坐标来使用榨汁机。例如,要在正方形上使用切片器5,2,您将输出S 5,2。 切片器:将目标坐标和鳄梨放在两边。 112 112 112 221 --> XXX --> 332 231 231 231 刨丝器:将目标坐标和鳄梨汁上下榨汁。 112 1X2 122 221 --> 2X1 --> 231 --> kaboom! 231 2X1 241 火箭发射器:为目标坐标和所有相邻的鳄梨榨汁。 112 1X2 122 221 --> XXX --> 332 …
14 code-golf 

9
列表和数组,各部分
在此挑战中,您将获得四个不同但有些相关的任务,必须以特定的方式解决它们。首先,我将解释任务,然后解释如何解决它。 您的代码在所有四个任务中都应使用两个正整数作为输入:n,m,其中n<m。所有任务必须以相同的语言解决。矩阵的方向是可选的(n×m可以解释为“ n行,m列”或“ n列,m行”)。 任务1: 创建(并输出/打印)由以下元素组成的矢量/列表:n, n+1 ... m-1, m。因此,对于n=4, m=9,您应该输出:4,5,6,7,8,9。 任务2: 创建(并输出/打印)矩阵/数组/列表列表(或等效列表),如下所示: n, n+1, ... m-1, m n+1, n+2, ... m-1, m+1 ... n+m, n+m+1, ... 2*m-1, 2*m 对于n=4, m=9您应该输出: 4, 5, 6, 7, 8, 9 5, 6, 7, 8, 9, 10 ... 13, 14, 15, 16, 17, 18 …

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.