Questions tagged «code-golf»

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

6
二进制自转
给定一个二进制3D数组,对于每一层,按其上一层的各列的二进制编码所示,将其每一列循环向上旋转许多步,然后按如下所示将其每一行循环左旋转许多步下方图层的行的二进制编码。 总会有至少三层。顶层的列和底层的行不应旋转。 演练 让我们从小的4层2行3列数组开始: [[[1,0,1], [1,0,0]], [[1,0,1], [0,1,1]], [[0,1,1], [1,1,1]], [[1,1,0], [1,1,1]]] 第一步是评估每一层的列和行以二进制编码的数字: 3 0 2 5 [[[1,0,1], 4 [1,0,0]], 2 1 3 5 [[1,0,1], 3 [0,1,1]], 1 3 3 3 [[0,1,1], 7 [1,1,1]], 3 3 1 6 [[1,1,0], 7 [1,1,1]]] 第一层[[1,0,1],[1,0,0]]不会旋转其列,但其行将分别向左循环5步和3步,从而变为[[1,1,0],[1,0,0]]。 第二层[[1,0,1],[0,1,1]]的列将分别循环向上旋转3、0和2步,给出[[0,0,1],[1,1,1]],然后将行分别向左循环旋转3和7步,没有可见变化。向上旋转2、1、3步 的第三层[[0,1,1],[1,1,1]]保持不变,向左旋转6、7步也没有任何作用。 最后,[[1,1,0],[1,1,1]]向上旋转了1、3和3步的第四层是[[1,1,1],[1,1,0]],但是之后的行不再旋转,因为它是最后一层。 再次将所有图层放在一起,便得到了二进制自旋转3D数组: [[[1,1,0], [1,0,0]], [[0,0,1], [1,1,1]], …

9
绘制Peano曲线
介绍 在几何学中,Peano曲线是Giuseppe Peano在1890年发现的第一个空间填充曲线示例。Peano曲线是从单位间隔到单位平方的连续的连续函数,但不是内射的。Peano受到Georg Cantor的早期结果的启发,认为这两个集合具有相同的基数。由于此示例,一些作者使用短语“ Peano曲线”更笼统地指代任何空间填充曲线。 挑战 该程序采用一个整数输入n,并输出代表nPeano曲线第th次迭代的图形,该图形从该图像最左侧所示的侧面2开始: 输入值 n给出Peano曲线迭代次数的整数。可选,其他输入在“奖金”部分中描述。 输出量 nPeano曲线的第三次迭代的图形。工程图可以是ASCII艺术图,也可以是“真实”工程图,以最简单或最短的时间为准。 规则 输入和输出可以任何方便的格式给出(为您的语言/解决方案选择最合适的格式)。 无需处理负值或无效输入 完整的程序或功能都是可以接受的。 如果可能,请提供一个在线测试环境的链接,以便其他人可以尝试您的代码! 禁止出现标准漏洞。 这是代码高尔夫球,因此所有常用的高尔夫规则都适用,并且最短的代码(以字节为单位)获胜。 奖金 由于这不应该是在公园散步(至少使用我能想到的大多数语言),因此可为以下各项奖励积分: -100字节,如果您的代码生成的Peano曲线构造的gif达到n。 -100字节,如果您的代码为任何矩形绘制了空间填充曲线(显然,Peano曲线仅适用于正方形)。您可以假设输入采用以下形式:n l wwhere n具有与之前相同的含义(迭代次数),但是where l和w成为绘制曲线的矩形的长度和宽度。如果为l == w,这将成为规则的Peano曲线。 负分数是允许的(但有可能...)。 编辑 请在的解决方案中包含程序的输出n == 3 (l == w == 1)。

20
数字平方
考虑一个自然数序列,其中N在N ^ 2中作为子串出现。A018834 输出n此序列的第th个元素。 规则 程序仅n作为输入,仅输出一个数字- N。 序列可以是0索引或1索引。 Sequence: 1 5 6 10 25 50 60 76 100 250 376 500 600 625 760 ... Squares: 1 25 36 100 625 2500 3600 5776 10000 62500 141376 250000 360000 390625 577600 ... 这是代码高尔夫球,因此最短的代码获胜。

3
取消缩音
Pyth也许是最成功的通用高尔夫球语言。尽管由于更新的语言而有所下降,但从2014年到2016年,Pyth简洁的语法,不断的更新,重载以及(对于其时代而言)许多内置函数使它成为大多数问题的最爱。 Pyth代码通常很难阅读。甚至调试模式(已编译的Python)的输出通常也由一长行组成,有时会在括号内嵌套十个深处。但是,正确格式化的Pyth可读性强。 这是一段由@isaacg在Play the Word Chain中编写的Pyth代码。 .MlZfqhMtTeMPT+Lzs.pMyQ 这样更具可读性。 .M Filter by gives-maximal-value of l Z lambda Z:length(Z) over f filter by (lambda T: q equal hM t T head-map tail T eM P T end-map Pop T) +L Append z to each element in z s .pM y Q flattened …

26
自给自足的权力
给定integer n,输出e大于1 的最小指数,n^e其中包含n作为子字符串。 例如,对于25,答案应为2,作为25 ^ 2 = 625,包含25为子字符串,但是对的答案13应为10,作为13 ^ 10 = 137858491849,因此10结果的最低指数为包含13为子字符串。 规则 标准I / O规则 适用标准漏洞 以字节为单位的最短代码获胜 n 总是大于的整数 0 测试用例 1 => 2 (1 ^ 2 = 1) 2 => 5 (2 ^ 5 = 32) 3 => 5 (3 ^ 5 = 243) 4 => 3 (4 …
13 code-golf  number 

11
心电图序列的条款
介绍 EKG序列以1和2开头,因此规则是下一项是序列中尚未存在的最小正整数,并且其与最后一项的公因数大于1(它们不是互质数)。 第一项是: 1,2,4,6,3,9,12,12,8,10,5,15,... 之所以称为EKG,是因为其术语图与EKG非常相似。 它是OEIS中的序列A064413。 挑战 您必须编写一个函数,将整数n作为输入并输出序列中n个第一项中有多少个大于n。 由于序列的规则以第三项开头,因此输入整数必须大于或等于3。例如,给定输入10的输出是1因为第七项为12,而其他前十项都不超过10。 测试用例 3-> 1 10-> 1 100-> 9 1000-> 70 规则 对于小于3的整数,该函数可能输出0或错误代码。 没有其他特定规则,只有:编码高尔夫球,越短越好!

4
将ASCII美工表转换为UTF-8表
当我编写文档,注释等时,我喜欢制作ASCII表。它们通常最终看起来还不错,但是我始终觉得它们看起来会更好-特别是因为UTF-8 / Unicode包括了箱形图字符。但是,这些字符的使用非常繁琐,需要多次按键才能插入。你的任务?编写一个程序或函数,可以将ASCII表自动转换为等效的UTF-8 / Unicode。 这个挑战被沙盒化了。 挑战 编写一个程序,该程序将ASCII表作为输入字符串,然后输出用Unicode / UTF-8框绘图字符重绘的表。具体地说,表中的字符应按以下方式翻译: (Unicode, 3 bytes each in UTF-8) - to ─ (\u2500) | to │ (\u2502) = to ═ (\u2550) and + to one of: ┌ (\u250C), ┐ (\u2510), └ (\u2514), ┘ (\u2518), ├ (\u251C), ┤ (\u2524), ┬ (\u252C), ┴ (\u2534), ┼ …

16
修剪那些分散注意力的背景!
拍照时会很烦人,但背景会损害图像的实际内容吗?我会说是的。我需要知道应该种植多少,这样我才能摆脱这个问题!但是-像往常一样-我很懒,所以我需要有人替我做... 任务与规则 给定一个表示图像的二进制矩阵,输出包含原始矩阵中所有111 s 的最小子矩阵的尺寸(宽度和高度)。甲子矩阵是从原始的矩阵相邻条目的块。等效地,它是通过重叠原始行的相邻行的子集和相邻列的子集而形成的新矩阵。 也可以将矩阵的宽度和高度作为输入。 该输入保证至少包含一个111。 您可以通过任何标准方法进行输入并提供输出,同时请注意,默认情况下,这些漏洞是禁止的。这是代码高尔夫,因此请尝试以您选择的语言可以管理的最少字节来完成任务。 例 ⎡⎣⎢⎢⎢⎢⎢⎢000000110000110010000011000100⎤⎦⎥⎥⎥⎥⎥⎥⟶⎡⎣⎢110011100011010⎤⎦⎥⟶(5,3)[000000010100011011001010000000]⟶[101001101101010]⟶(5,3)\left[\begin{matrix} \color{red}0&\color{red}0&\color{red}0&\color{red}0&\color{red}0&\color{red}0\\ \color{red}0&\color{blue}1&\color{blue}0&\color{blue}1&\color{blue}0&\color{blue}0\\ \color{red}0&\color{blue}1&\color{blue}1&\color{blue}0&\color{blue}1&\color{blue}1\\ \color{red}0&\color{blue}0&\color{blue}1&\color{blue}0&\color{blue}1&\color{blue}0\\ \color{red}0&\color{red}0&\color{red}0&\color{red}0&\color{red}0&\color{red}0\end{matrix}\right] \longrightarrow \left[\begin{matrix}1&0&1&0&0\\1&1&0&1&1\\0&1&0&1&0\end{matrix}\right]\longrightarrow(5,3) 测试用例 输入| 输出量 [[0,1,0,0,0,1,0]] ->(5,1)或(1,5) [[0,0,0,0,0],[0,1,0,1,0],[0,0,1,0,0]] ->(3,2)或(2,3) [[1,1,1,1],[0,0,0,0],[0,0,0,0],[1,0,0,0]] ->(4,4) [[0,0,0,0,0,0],[0,1,0,1,0,1],[0,0,0,0,0,0]] ->(5,1)或(1,5) [[0,0,0,0,0],[0,1,0,1,0],[0,0,1,0,0],[0,1,0,1,0],[ 0,0,0,0,0]] ->(3,3) [[0,0,0,0,0,0],[0,1,0,1,0,0],[0,1,1,0,1,1],[0,0,1, 0,1,0],[0,0,0,0,0,0]] ->(5,3)或(3,5)

27
逆Collat​​z猜想
我认为Collat​​z猜想已经众所周知。但是如果我们颠倒规则怎么办? 从整数n> = 1开始。 重复以下步骤: 如果n为偶数,则将其乘以3并加1。 如果n为奇数,则减去1并除以2。 达到0时停止 打印重复的数字。 测试用例: 1 => 1, 0 2 => 2, 7, 3, 1, 0 3 => 3, 1, 0 10 => 10, 31, 15, 7, 3... 14 => 14, 43, 21, 10, ... 规则: 该序列不适用于许多数字,因为它进入了无限循环。您无需处理这些情况。仅打印上述测试用例就足够了。 我建议减去1并除以2以得到一个有效的整数以继续,但是并不需要以这种方式进行计算。您可以将其除以2并转换为整数或将提供预期输出的任何其他方法。 您还需要打印初始输入。 输出不需要格式化为测试用例。这只是一个建议。但是,必须遵守迭代顺序。 最小的代码获胜。

15
手动逻辑门
编写一个模拟基本逻辑门的程序。 输入:一个全大写单词,后跟2个1位二进制数字,以空格分隔,例如OR 1 0。门OR,AND,NOR,NAND,XOR,和XNOR需要。 输出:输入的逻辑门的输出将被赋予两个数字:1或0。 例子: AND 1 0成为0 XOR 0 1变得1 OR 1 1成为1 NAND 1 1成为0 这是codegolf,所以最短的代码获胜。
13 code-golf  logic-gates  hashing  code-golf  code-golf  number  array-manipulation  integer  code-golf  string  unicode  text-processing  cops-and-robbers  boggle  cops-and-robbers  boggle  code-golf  ascii-art  code-golf  word-puzzle  king-of-the-hill  python  code-golf  sequence  kolmogorov-complexity  code-golf  source-layout  code-golf  string  kolmogorov-complexity  math  number  code-golf  date  code-golf  combinatorics  recursion  game  king-of-the-hill  javascript  code-golf  array-manipulation  code-golf  radiation-hardening  self-referential  code-golf  integer  code-golf  number  code-golf  set-theory  code-golf  sequence  code-golf  string  sorting  natural-language  code-golf  decision-problem  number-theory  primes  code-golf  code-golf  ascii-art  code-challenge  array-manipulation  sorting  rubiks-cube  regular-expression  code-golf  counting  file-system  recursion  code-golf  string  kolmogorov-complexity  color  code-golf  game  code-challenge  permutations  encode  restricted-time  decode  code-golf  math  decision-problem  matrix  integer  palindrome  code-golf  matrix  statistics  king-of-the-hill  king-of-the-hill  python  card-games  code-golf  string  natural-language  code-golf  sequence  number-theory 

10
二次残差非常有趣!
定义 二次残基 如果存在整数,则整数称为为模的二次余数:rrrñ Xnnnxxx x2≡r(modn)x2≡r(modn)x^2\equiv r \pmod n 可以通过查看x ^ 2 \ bmod n对于0 \ le x \ le \ lfloor n / 2 \ rfloor的结果,简单地计算出模nnn的二次x2modnx2modnx^2 \bmod n。0≤x≤⌊n/2⌋0≤x≤⌊n/2⌋0 \le x \le \lfloor n/2\rfloor 挑战顺序 我们定义anana_n作为相同值的出现的最小数目(r0−r1+n)modn(r0−r1+n)modn(r_0-r_1+n) \bmod n对于所有对(r0,r1)(r0,r1)(r_0,r_1)二次剩余的模nnn。 前30个术语是: 1,2,1,1,1,2,2,1,1,2,3,1,3,4,1,1,4,2,5,1,2,6,6,1,2,6,2,2,7,21,2,1,1,1,2,2,1,1,2,3,1,3,4,1,1,4,2,5,1,2,6,6,1,2,6,2,2,7,21, 2, 1, 1, 1, 2, 2, 1, 1, 2, 3, 1, …

8
反手称赞
挑战是为了庆祝我的第一种深奥的语言,反手! 反手是具有非线性指针流的一维语言。指针一次移动三步,仅每第三条指令执行一次。 程序1..1..+..O..@将在终止前加1 + 1,并输出2。中间指令被跳过,因此1<>1()+{}O[]@完全相同的程序。 当指针将要离开磁带末端时,它会反转方向并以另一种方式前进,因此1.@1.O+.同一程序也是如此。注意,它仅对结束指令计数一次。这使我们可以压缩大多数线性程序,例如1O+1@ 您面临的挑战是编写一个带有字符串的程序或函数,并输出如果程序像反手一样被解释时将执行的指令(您不需要处理任何实际的反手指令)。您将只输出直到指针到达字符串的最后一个字符为止(此时执行通常会向后执行)。 但是,等等,还不是全部!当您的程序本身以这种方式解释时,结果代码应输出以下内容之一: (Mostly) works Turing complete 'Recreational' (引号可以是'或",但不能同时是两个) Perfectly okay Only a few bugs 例如,如果您的源代码是code 2 backhand,则程序ce cankb od2ahd应输出这些短语之一。 测试用例: "1 1 + O @" -> "11+O@" "1O+1@" -> "11+O@" "HoreWll dlo!" -> "Hello World!" "abcdefghijklmnopqrstuvwxyz" -> "adgjmpsvyxurolifcbehknqtwz" "0123456789" -> "0369" (not "0369630369") "@" …

11
裁剪ASCII艺术挑战赛
ASCII艺术很有趣。现代文本编辑器非常擅长处理文本。现代编程语言可以胜任吗? ASCII艺术处理中的一项常见任务是将文本裁剪为两个字符之间的矩形。这是您在此挑战中必须执行的任务。 细节 您的程序将接受3个输入: 第一个是块的“开始”字符-标记左上角 第二个是块的“结束”字符-标记右下角 第三种是某种形式的多行文本,可以是字符串,也可以是字符串列表,或者是文件名,或者其他任何形式 结果将是多行文本(同样以上述任何一种格式)被裁剪为给定输入之间的矩形。请注意,前两个输入可能不是唯一的。 边缘情况 盒子的体积必须始终至少为2。因此,这些: () ( ) 是盒子,但这些: )( ) ( ( ) 不是(带有start = (和end = ))。 输入将仅包含一个框。因此,开始和结束字符只能出现一次,除非它们是相同的字符,在这种情况下,它们必须恰好出现两次。 此外,输入中的每一行必须至少与从行首到输入中框的右边缘的距离一样长。 您的程序不需要处理无效的输入。它们可能导致不确定的行为。 规则 适用典型的代码高尔夫球规则。最短的代码获胜。 例子 晴天: start: ( end: ) input: This is some text . (but this text is in a box ). So …

7
做出最大和最小的数字
这篇帖子的灵感来自于Puzzling。这个难题的破坏者在下面。 给定三个正整数作为输入,(x, y, z)构造包含范围[x, y],将该范围连接在一起,然后删除z不必要的连续数字以产生可能的最大和最小正整数。不允许前导零(即,数字必须以开头[1-9])。以任意顺序输出这两个数字。 对于Puzzling帖子中的示例,对于input (1, 100, 100),最大可能的数字是99999785960616263646566676869707172737475767778798081828384858687888990919293949596979899100, 而最小的数字是10000012340616263646566676869707172737475767778798081828384858687888990919293949596979899100, 遵循jafe在此处发布的答案的以下逻辑: 我们不能影响数字的长度(有固定的数字位数),因此要使值最大化,我们采用最大的第一位数字,然后选择第二位数字等。 删除84个第一个非昵称(要删除的剩余16位数字): 999995051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 接下来的17位数字中最大的数字是7,因此从此处开始,答案中的第二位数字最多为7(我们不能删除超过16位的数字)。因此,删除15个非7的...(剩下1个数字以删除):999997585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 从这里开始,下一位数字最多为8,因此从中间去除一个非8的数字: 99999785960616263646566676869707172737475767778798081828384858687888990919293949596979899100 逻辑类似,但取反(即,我们希望前导1s而不是前导9s)的最小数字。 这是一个较小的示例:(1, 10, 5)。 我们构造范围12345678910并确定5可以删除的位数,以保留最大可能的数字。显然,这意味着我们要最大化前导位数,因为我们不能影响输出的长度。因此,如果我们删除12345,我们将剩下678910,这就是我们可以做的最大的事情。最小化是有点棘手的,因为我们可以取中间的数字,而123410尽可能保留最小。 对于(20, 25, 11),结果相当无聊,因为5和1。 最后,排除答案试图前导零,(9, 11, 3)使91011这反过来产量91和10作为最大和最小的。 I / O和规则 如果更容易/更短,您可以编写两个程序/函数-一个用于最大的程序,或者一个用于最小的程序-在这种情况下,您的分数是这两部分的总和。 输入和输出可以通过任何方便的方法给出。 可以假定输入符合您语言的本机数字类型,但是,不能假定级联数字或输出都不能满足要求。 完整的程序或功能都是可以接受的。如果是函数,则可以返回输出而不是打印输出。 禁止出现标准漏洞。 这是代码高尔夫球,因此所有常用的高尔夫规则都适用,并且最短的代码(以字节为单位)获胜。

10
让我们练习421的得分规则!
421是在法国和其他一些欧洲国家受欢迎的骰子游戏。它主要在酒吧和酒馆中播放,以确定谁将购买下一轮饮料。完整游戏通常分两轮进行,每个玩家都试图摆脱令牌,但这与此处无关。(法语的维基百科页面。) 游戏中有3个标准方块骰子。 任务 您的任务是通过应用此游戏的评分规则,对从最高到最低的3个骰子骰子[X,Y,Z]的非空列表进行排序。 基本计分 4,2,1是可能的最高组合。根据规则,它可能会得到8、10或11分。因为我们是对卷进行排序而不是对点进行计数,所以确切的值无关紧要。 三张A:1,1,1是第二高的组合,得分7分。 两张A:X,1,1(其中X是2到6)得到X分。 三种类型:X,X,X(其中X为2到6)得到X分。 直道:X,X + 1,X + 2分的分数2分。 所有其他卷得分为1分。 结算关系 每当两卷获得相同的分数时,以下规则适用: 两王牌比三王牌更好。例如:5,1,1击败5,5,5。 三分之二的2,2,2比直的要好。例如:2,2,2击败4,5,6。 直线从最低到最高排序。例如:4,5,6击败2,3,4。 通过将骰子从最高到最低排序来解决所有其他掷骰。例如:6,5,2击败6,4,3。(因此,游戏中最低的组合是2,2,1。) 以下是从最高到最低顺序排列的56个不同的卷: 421 111 611 666 511 555 411 444 311 333 211 222 654 543 432 321 665 664 663 662 661 655 653 652 651 644 643 642 …

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.