Questions tagged «code-golf»

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

8
找出多项式
我们知道f是具有非负整数系数的多项式。 给定f(1)和f(1 + f(1))返回f。您可以将f输出为系数列表,ASCII格式的多项式或类似形式。 例子: f(1) f(1+f(1)) f 0 0 0 1 1 1 5 75 2x^2 + 3 30 3904800 4x^4 + 7x^3 + 2x^2 + 8x + 9 1 1073741824 x^30

30
读取密码
您的挑战是从键盘/标准输入中读取“密码”。 挑战: s看不见字符串。 对于其中的每个字符s,请打印一个字符c。 实时。 规则: 您必须c实时打印。用户输入字符后,您必须立即显示c。 c 必须为常数,即必须为相同字符。 c可以是任何可见字符(即不能是换行符,空格,制表符或不可打印的字符)。 c不能基于s,即c必须在s读取之前定义/常量。 c 每次运行程序时都必须相同。 cs只要遵守其他所有规则,就可以是其中的字符之一。 除了之外,所有字符都不会s出现在屏幕上c(请参阅上一条规则)。 您可以使用任何合理的输入和输出方法,只要遵循所有其他规则即可。 您可以假设的长度s永远不会超过终端/图形窗口的宽度。 如果使用终端,则应在输入换行符或EOF后终止程序。 范例: 如果swas password01和cwas *,输出将类似于: 优胜者: 每种语言中提交时间最短的作品将获胜。
20 code-golf  string 

30
确定数组是否包含2以外的值
取一个由数字或数组组成的数组,如果只包含2s 则输出。 输出应为真或假值(很抱歉,如果这样会破坏答案) 真实的测试案例 [2] [2,2] [[2],[2,2],2] [] [[],[]] 虚假测试用例 [1] [22] [2,2,2,1] [[1,2],2] 禁止使用标准漏洞。 默认IO规则适用。 代码高尔夫球,最少字节获胜!

10
连接四个验证器
介绍 Connect Four是一款您尝试连续获得四个的游戏:水平,垂直或对角线。在此代码高尔夫球中,我们将尝试确定给定游戏板的人。永远只有一名获胜者,而只有一名获胜者。 任务 给定一个四连板,确定谁是赢家:X或Y。永远只有一名获胜者,而只有一名获胜者。面板尺寸将始终为6 x 7,就像游戏板上的图片一样。 给定一个板,以下板在这种情况下X为红色和Y蓝色: 您的输入将是: OOOOOOO OOOOOOO OOOOOOO OOOOXOO OOOXXOO OOXYYYY 您可以按换行符(如上)分隔游戏的行,不使用分隔符,可以将行划分为数组或列表,也可以输入字符矩阵。 此示例的正确输出: Y Y连续四个;因此,Y是赢家。因此,我们输出Y。 测试用例 输入: OOOOOOO OOOOOOO OOOOOOO OOOOOOO OOYYOOO OYXXXXO 输出: X 输入: OOOOOOO OOOOOOO OOOOOOO XXXXOOO YXYYOOO YXYYXYX 输出: X 输入: YXYYXOO XYXXYOO XXXYYOO YYYXXOO XXYYYYO XXYYXXO 输出: Y 输入: OOOOOOO OOOOOOO …

5
> <>没水了
通过&gt; &lt;&gt;(一种深奥的编程语言)的代码游泳的心爱的鱼已被带出自然环境。这种变化使它无法像过去那样四处移动:过去的环形运动仅限于简单的从左到右运动。但是仍然编写程序,好像鱼能够通过它们。亲爱的程序员,您的任务是编写程序来线性化&gt; &lt;&gt;程序。并尽可能减少字节数;鱼没有很大的记忆。 在&gt; &lt;&gt;中移动 在&gt; &lt;&gt;中,移动是环形的,一次只能移动一个字符。这意味着鱼(指针)可以从一行的结尾“回到”开头。在&gt; &lt;&gt;中,与大多数指针移动的方式相比,鱼还能够从上到下,从下到上和从右到左移动。因此,此移动方式将是有效的: &gt;&gt;&gt;^ &gt;&gt;&gt;v &gt;&gt;&gt;^ v 并以无限循环结束(一旦它越过底部无限循环回到顶部)。 鱼在长度等于max(行长)且高度等于行数的网格中移动。 您如何找出鱼移动的方式?这些命令改变了运动的方向向量(例如,(-1,0)从右到左的意思): Command | Direction Change --------------------------- &gt; | (1,0) (default) &lt; | (-1,0) ^ | (0,1) v | (0,-1) / | (x,y) -&gt; (y,x) \ | (x,y) -&gt; (-y,-x) | | (x,y) -&gt; (-x,y) _ | …
20 code-golf  grid 

18
画我(怪异)的单位圈!
介绍 您可能知道并喜欢您的普通单位圈子。但是数学家疯了,因此他们把这个概念抽象到可以满足的任何程度x*x+y*y=1。因为密码学家1也很奇怪,所以他们喜欢有限的场,有时还喜欢有限的环(虽然他们没有太多选择),所以让我们结合一下吧! 挑战 输入值 您喜欢的编码中大于1的正整数。我们称这个数字为n。 输出量 您将使用“ X”(大写拉丁字母X)和“”(空格)将单位圆的“图片”(由n个n个字符组成)以ASCII-Art模输入整数。允许使用尾随空格和换行符。 更多细节 您必须从左下到右上跨一个坐标系。只要一个点满足圆方程,就在该位置放置一个X,否则放置一个空格。 将点视为圆形边界一部分的条件是: mod(x*x+y*y,n)==1。 这里是坐标系的快速说明: (0,4)(1,4)(2,4)(3,4)(4,4) (0,3)(1,3)(2,3)(3,3)(4,3) (0,2)(1,2)(2,2)(3,2)(4,2) (0,1)(1,1)(2,1)(3,1)(4,1) (0,0)(1,0)(2,0)(3,0)(4,0) 如果有帮助,您也可以反转任意轴的方向,但是示例均采用这种方向。 谁赢? 这是代码高尔夫球,因此以字节为单位的最短代码获胜!仅允许使用默认的I / O方法,并且禁止所有标准漏洞。 例子 输入2 X X 输入3 X X XX 输入5 X X X X 输入7 X X X X X X X X 输入:11 X XX X X …

3
[Br]追求Code Golf [Ba] d
考虑以下字符串: Tin Snips 该字符串在元素周期表中包含几个原子符号。我们可以重写此字符串以标识其中几个: [Ti][N] [Sn][I][P][S] 当然,我们也可以这样写: T[In] [S][Ni][P][S] 重写输入的规则如下: 输入的大小写与匹配原子符号无关紧要。 如果在原子符号中使用元素,则其大小写必须更改,以便该符号正确。例如:h将变为[H]。 所有元素符号都用ASCII方括号[和括起来]。 保留空白:Big ego无法将“ g”和“ e”合并为[Ge]。 并非所有输入字符都需要组合成一个原子符号:如果没有将输入字符放入符号中,则会按原样传递(大小写无关紧要)。 如果可以制作符号,则必须制作。换句话说,Tin在上面的示例中不允许输出,因为可以在该单词中创建至少一个符号。字符只能通过未使用的唯一时间是无法用于构造原子符号。 出于此挑战的目的,从氢(1)到Oganesson(118)的所有元素都是有效的。没有更高的元素有效。 某些高级元素的名称和符号含糊不清:出于挑战的目的,应使用Wikipedia的版本。为方便起见,此处允许的原子符号为:H,He,Li,Be,B,C,N,O,F,Ne,Na,Mg,Al,Si,P,S,Cl,Ar,K,Ca, Sc,Ti,V,Cr,Mn,Fe,Co,Ni,Cu,Zn,Ga,Ge,As,Se,Br,Kr,Rb,Sr,Y,Zr,Nb,Mo,Tc,Ru,Rh, Pd,Ag,Cd,In,Sn,Sb,Te,I,Xe,Cs,Ba,La,Ce,Pr,Nd,Pm,Sm,Eu,Gd,Tb,Dy,Ho,Er,Tm,Yb, Lu,Hf,Ta,W,Re,Os,Ir,Pt,Au,Hg,Tl,Pb,Bi,Po,At,Rn,Fr,Ra,Ac,Th,Pa,U,Np,Pu,Am, Cm,Bk,Cf,Es,Fm,Md,No,Lr,Rf,Db,Sg,Bh,Hs,Mt,Ds,Rg,Cn,Nh,Fl,Mc,Lv,Ts,Og。 编写一个程序或函数,以从单个提供的输入生成所有可能的输出。输入和输出都可以采用您选择的任何形式。它可以是字符串,字符数组或其他某种数据结构:无论是方便还是清楚地表示输入和输出。输入和输出都可以传入/传出代码,但是您可以选择:标准输入/出,函数参数/返回或其他。 输入应为正长度的字符串(请参见上一段),仅包含任意大小写的ASCII字符和空格(0x20)字符。 您的代码必须生成可以使用上述输入规则创建的所有输出字符串。 输出的顺序是实现定义的。唯一的要求是所有输出字符串都存在。 如果提供的有效输入字符串不包含任何原子符号,则只需输出输入字符串即可。 如果显示的输入字符串不符合上述规则(空,零字符,包含非法字符等),则您的程序可能会执行任何操作(崩溃,空白输出等) 输出是不区分大小写的,除了原子符号需要匹配元素周期表。 不允许出现标准漏洞。 测试用例: Tin Snips [Ti][N] [Sn][I][P][S] [Ti][N] [S][Ni][P][S] [Ti][N] [S][N][I][P][S] T[In] [Sn][I][P][S] T[In] [S][Ni][P][S] T[In] [S][N][I][P][S] T[I][N] ... …

1
将λ表达式转换为SK表达式
所述λ演算,或演算,是根据匿名功能的逻辑系统。例如,这是一个λ表达式: λf.(λx.xx)(λx.f(xx)) 但是,出于此挑战的目的,我们将简化表示法: 更改λ为\(以便于键入):\f.(\x.xx)(\x.f(xx)) 该.拉姆达头是不必要的,所以我们可以删除它:\f(\xxx)(\xf(xx)) 在应用程序中使用Unlambda样式的前缀表示法,`而不是将两个函数一起编写(有关如何执行此操作的完整说明,请参见在Lambda微积分表示法之间转换):\f`\x`xx\x`f`xx 这是最复杂的替换。根据变量相对于其所属的lambda标头的嵌套深度(即,使用基于0的De Bruijn索引),用括号中的数字替换每个变量。例如,在\xx(身份函数)中,x主体中的in将替换为[0],因为它属于在将表达式从变量遍历到末尾时遇到的第一个(从0开始)头。\x\y``\x`xxxy将被转换为\x\y``\x`[0][0][1][0]。现在,我们可以将变量放在标头中,离开\\``\`[0][0][1][0]。 组合逻辑基本上是由λ微积分构成的Turing Tarpit(嗯,实际上,它是第一位的,但是在这里无关紧要。) “组合逻辑可以看作是lambda演算的一种变体,其中lambda表达式(代表功能抽象)被有限的组合器集合所取代,这些组合器不存在绑定变量。1个 组合逻辑最常见的类型是SK组合器演算,它使用以下原语: K = λx.λy.x S = λx.λy.λz.xz(yz) 有时I = λx.x会添加一个组合器,但它是多余的,因为SKK(或实际上SKx对任何而言x)都等同于I。 您只需要K,S和应用程序即可编码λ微积分中的任何表达式。例如,这是从函数λf.(λx.xx)(λx.f(xx))到组合逻辑的转换: λf.(λx.xx)(λx.f(xx)) = S(K(λx.xx))(λf.λx.f(xx)) λx.f(xx) = S(Kf)(S(SKK)(SKK)) λf.λx.f(xx) = λf.S(Kf)(S(SKK)(SKK)) λf.S(Sf)(S(SKK)(SKK)) = S(λf.S(Sf))(K(S(SKK)(SKK))) λf.S(Sf) = S(KS)S λf.λx.f(xx) = S(S(KS)S)(K(S(SKK)(SKK))) λx.xx = S(SKK)(SKK) λf.(λx.xx)(λx.f(xx)) = S(K(S(SKK)(SKK)))(S(S(KS)S)(K(S(SKK)(SKK)))) 由于我们使用的是前缀表示法,因此为```S`K``S``SKK``SKK``S``S`KSS`K``SKK`。 1资料来源:维基百科 挑战 到目前为止,您可能已经猜到了什么:编写一个程序,该程序将有效的λ表达式(以上述符号表示)作为输入和输出(或返回)相同的函数,并用SK组合器演算重写。注意,有无数种方法可以重写它。您只需要输出无限方式之一。 …

9
枚举二叉树
二叉树 二叉树是具有三种类型的节点的树: 没有子节点的终端节点 一元节点,每个节点有一个孩子 二进制节点,每个都有两个子节点 我们可以用BNF(巴克斯-纳尔形式)中给出的以下语法来表示它们: &lt;e&gt; ::= &lt;terminal&gt; | &lt;unary&gt; | &lt;binary&gt; &lt;terminal&gt; ::= "0" &lt;unary&gt; ::= "(1" &lt;e&gt; ")" &lt;binary&gt; ::= "(2" &lt;e&gt; " " &lt;e&gt; ")" 在此语法中,节点是按顺序排列的,每个节点都由一个数字表示,该数字表示其拥有的子代数。 莫兹金数 Motzkin数(OEIS)(Wikipedia)有多种解释,但一种解释是,nMotzkin数是具有n节点的不同二叉树的数目。莫兹金数表开始 N Motzkin number M(N) 1 1 2 1 3 2 4 4 5 9 6 21 7 51 …

6
量子纠缠第一集:识别有限量子纠缠
编写一个程序,确定给定的矩阵是否表示一个量子点。甲quandle是配备有单个(非可交换的,非结合)操作◃其遵循以下公理一组: 该操作已关闭,这意味着a◃b = c如果a和b是的元素。 该操作是自行分配的: (a◃b)◃c = (a◃c)◃(b◃c)。 操作是右整除:对于任何选择的对a和b,有单个唯一的c,使得c◃a = b 该操作是幂等的: a◃a = a 有限量子可以表示为方矩阵。以下是5阶夸德(source)的示例。 0 0 1 1 1 1 1 0 0 0 3 4 2 4 3 4 2 4 3 2 2 3 3 2 4 位于第n行第m列(索引为0)的值是n◃m的值。例如,在这个难题中,4◃1 = 3。从这个矩阵很容易看出一些量子特性: 由于只有值0-4出现在此5x5矩阵中,因此它是封闭的。 这是幂等的,因为矩阵对角线是0 1 2 3 4 …

16
我给你第N个排列,你给我N
输入:一个大写字母序列(ASCII [65; 90]),是其字符多组的第N *个字典编排 *排列从0或1向上编号 输出:以10为底的整数N 鲁兹 有可能是重复的 (这就是如何从这一挑战不同 这一个) 字符按其ASCII值排序 如果输入的长度小于或等于1,则输入是第一个排列,结果分别是0或1 第一个置换是最左边的字符具有最低的值,最右边的字符具有最高的值,并且第一个字符与最后一个字符之间的字符序列是其字符多集的第一个置换(递归定义!) 进入时间最短的获胜者 例 输入AAB产生输出0 输入ABA产生输出1 输入BAA产生输出2 输入ZZZ产生输出0 输入DCBA产生输出23 编辑 那些想出一个不会产生所有排列并随后寻找输入的解决方案的人特别感谢。那是一个挑战。

19
蒸汽用户有多少声誉?[关闭]
已关闭。这个问题需要细节或说明。它当前不接受答案。 想改善这个问题吗?添加详细信息并通过编辑此帖子来澄清问题。 2年前关闭。 介绍 对于不熟悉蒸汽的人-或至少不熟悉此特定方面的人: 人们经常在人们的个人资料上留下评论,说“ + rep _____”或“ -rep _____”。这些是一种非官方的方法,可以出于多种原因显示您认为社区中某人的声誉良好或不良。这样的注释看起来像: +代表一个好球员 + rep有帮助 -rep黑客 -rep骗子 任务 该程序必须通过任何协商一致的方式获取输入。输入由带有可选换行符(\n)的字符串组成。在每行的开始处,'+rep '或者'-rep '可能存在。该行的其余部分可以丢弃。如果该行不是以'+rep '或开头'-rep '(请注意尾随空格),则应忽略该行。 然后,该程序必须保持总信誉得分。0从此开始,此分数应在以开头的每一行上递增,'+rep '并在以开头的每一行上递减'-rep '。 该结果应以任何商定的方式输出。 测试用例 Input: +rep fast trade +rep nice person -rep too good Output: 1 Input: -rep hacker -rep scammer -rep was mean Output: -3 Input: …

4
局部反转多项式
挑战 给定一个p具有阶1和度的实系数的n多项式,求另一个q度数的多项式最多n使得(p∘q)(X) = p(q(X)) ≡ X mod X^(n+1),或者换句话说,使得p(q(X)) = X + h(X)其中h是一个任意多项式ord(h) ≥ n+1。多项式q由唯一确定p。 对于一个多项式p(X) = a(n)*X^n + a(n+1)*X^(n+1) + ... + a(m)*X^m,其中n &lt;= m和a(n) ≠ 0,a(m) ≠ 0我们说n是为了中p和m是度的p。 简化:您可以假设它p具有整数系数,并且a(1)=1(so p(X) = X + [some integral polynomial of order 2])。在这种情况下,q也具有积分系数。 简化的目的是避免浮点数的问题。但是,出于说明目的,有一个非整体示例。 例子 考虑泰勒级数的exp(x)-1 = x + x^2/2 + x^3/6 + …

3
漂流问题(背包变体)
我的第一个难题是,很高兴收到改进建议! 场景是;您是一家激流漂流公司的经理。每天早晨,您都会收到一份预订清单,您必须将它们分类为木筏装载。用您选择的语言编写适合您的程序或函数。 每个木筏最多可容纳一个n客户,并且每个预订的n人数是1至2 (含)之间的一组。必须遵守以下规则; 不得拆分任何组。如果他们一起订票,他们必须都在同一排。 筏子的数量必须最小化。 在符合前两个规则的前提下,组必须在木筏之间尽可能平均地分布。 输入。 数字n(您可能会认为这是一个正整数),以及所有预订的大小。如果您的语言支持,则可以是数组,列表或类似的数据结构。所有这些都是介于1和之间的正整数n。预订的顺序没有定义,也不重要。 输出。 预订编号列表,分为筏负载。必须明确指出分组,例如; 列表或数组数组。 每个筏的逗号分隔列表。每个筏之间的换行符。 如何实施第三条规则由您决定,但这可能涉及找到平均木筏占用率,并尽可能减少其偏离。这是一些测试用例。 n Bookings Output 6 [2,5] [5],[2] 4 [1,1,1,1,1] [1,1,1],[1,1] 6 [2,3,2] [2,2],[3] 6 [2,3,2,3] [2,3],[2,3] 6 [2,3,2,3,2] [2,2,2],[3,3] 12 [10,8,6,4,2] [10],[8,2],[6,4] 6 [4,4,4] [4],[4],[4] 12 [12,7,6,6] [12],[7],[6,6] 适用标准规则,以最短的代码为准。玩得开心! 编辑; 建议为第三条规则尽可能平等地定义的方法。 一旦r确定了木筏的数量(服从第二条规则),则a可以通过对预订进行求和并除以来计算平均占用率r。对于每个筏,可以使用找出与平均占用率的偏差d(x) = abs(n(x)-a),其中n(x)每个筏中的人数是和1 &lt;= x &lt;= …

8
引导字母
引导字母 给定方向数组,其中方向定义如下: NW N NE W . E SW S SE 或作为索引(您可以将这些索引而不是上面的字符串用作方向): 0 1 2 3 . 4 5 6 7 您可以选择任何一种格式,挑战不需要两者都支持。生成代表绘制路径的相应字母字符串,以A开头。方向数量永远不会超过25,这意味着它永远不会超过Z,因此您不必处理这种情况。除非您可以解释为什么由于语言限制这些格式不起作用,否则将不接受其他任何输入格式。使用详细说明的示例更容易解释。 因此,让我们看一个简单的例子: [E,SE,N,S,S,S,NW,W,N] or [4,7,1,6,6,6,0,3,1] 始终以A开头。 A 向东走到B。 A-B 往东南走到C。 A-B \ C 往北走到D。 A-B D \| C 向南返回E,覆盖C。 A-B D \| E 继续向南行驶2个周期,到达F和G。 A-B D \| E | …

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.