Questions tagged «code-golf»

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

14
迷宫生成
我知道有一个与此(此处)类似的(旧)线程,但是我想进行一些修改来重新启动它。 目标:使用您选择的算法生成外观随机的迷宫,然后以图形方式输出迷宫(打印计数)。 宽度和高度由您确定。 从至少一个入口到至少一个出口应该有至少一条路径。 迷宫的格式(如何显示,标记入口或出口)也取决于您。 越漂亮越好。 不鼓励琐碎的迷宫(例如空白迷宫,格子迷宫,大小为1x1的迷宫)。 如果结果合理,则允许并鼓励迷宫中的循环。 鼓励语言滥用。 迷宫应该看起来相当随机(但是完全确定性的(例如混沌)算法也可以)。 编辑:这里的主要重点是使最小的实现。但是,我想在此限制范围内留出一些余地,以鼓励保持柔韧性。我故意留下了迷宫开放式的“特征”,但是作为一个粗略的指导原则,您应该尝试将最多的爆炸归入最小的词汇量。

12
在ASCII艺术中绘制渐变
任务描述: 编写尽可能短的程序以绘制ASCII艺术中的径向渐变。输出网格的大小是预定义的。提供渐变的中心点和字符作为程序的输入。 渐变大小为70×25个字符单元格,具有以下规格 网格的左上角具有坐标(0,0)。 包含所提供字符的渐变被映射为35个长度单位。长度单位是一个字符高和两个字符宽(因为monospaced fonts通常字符的高度是宽度的两倍)。 在这35个LU中,当前距中心点的距离乘以渐变字符数 / 35即可得到该点要绘制的字符的索引。索引的小数在此处四舍五入。长度单位应保留为实数。(当然,如果结果相同,则实现无关紧要。) 超过这35 LU,仅出现最后一个渐变字符。但是,由于最后一个梯度“带”已经在 35 LU 之内开始,因此最后一个字符开始已经出现在35 LU之内。 输入: 输入在标准输入上给出,由三行组成,每行以换行符终止: 渐变中心点的x坐标 渐变中心点的y坐标 用于绘制渐变的字符。这些可能包括空格。 输出: 输出是上面标准输出上的规则所定义的渐变。标准错误流将被忽略。渐变的每条线均以换行符终止。除输入定义的字符外,不能出现其他字符。 样本输入1: 58 14 .:;+=xX$& 样本输出1: &&$$$$$$$$XXXXXXXXxxxxxxxxx===========++++++++++++++++++++++++++++++++ &$$$$$$$$XXXXXXXXxxxxxxxxx=========+++++++++++++;;;;;;;;;;;;;;;;;;;;;+ $$$$$$$$XXXXXXXXxxxxxxxx=========+++++++++++;;;;;;;;;;;;;;;;;;;;;;;;;; $$$$$$$XXXXXXXXxxxxxxxx========++++++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;; $$$$$$XXXXXXXXxxxxxxxx========+++++++++;;;;;;;;;;;;;:::::::::::::;;;;; $$$$$XXXXXXXXxxxxxxxx=======+++++++++;;;;;;;;;;;:::::::::::::::::::::; $$$$$XXXXXXXxxxxxxxx=======+++++++++;;;;;;;;;::::::::::::::::::::::::: $$$$XXXXXXXXxxxxxxx=======++++++++;;;;;;;;;::::::::::::::::::::::::::: $$$$XXXXXXXxxxxxxx========+++++++;;;;;;;;::::::::::...............:::: $$$XXXXXXXXxxxxxxx=======+++++++;;;;;;;;:::::::::...................:: $$$XXXXXXXxxxxxxx=======++++++++;;;;;;;::::::::....................... $$$XXXXXXXxxxxxxx=======+++++++;;;;;;;::::::::......... ........ $$$XXXXXXXxxxxxxx=======+++++++;;;;;;;:::::::........ ...... $$$XXXXXXXxxxxxxx=======+++++++;;;;;;;:::::::....... ..... $$$XXXXXXXxxxxxxx=======+++++++;;;;;;;:::::::....... ..... $$$XXXXXXXxxxxxxx=======+++++++;;;;;;;:::::::....... ..... $$$XXXXXXXxxxxxxx=======+++++++;;;;;;;:::::::........ ...... …

30
Mathematica打高尔夫球的技巧
您在Mathematica打高尔夫球有哪些一般提示?我正在寻找可以应用于编码高尔夫问题的想法,这些想法至少在某种程度上特定于Mathematica(例如,“删除评论”不是答案)。
41 code-golf  tips 

30
波兰语反符号
您必须评估以反向波兰表示法编写的字符串并输出结果。 程序必须接受输入并返回输出。对于不具有接收输入/输出功能的编程语言,可以采用readLine / print之类的功能。 您不得在程序中使用任何类型的“评估”。 数字和运算符由一个或多个空格分隔。 您必须至少支持+,-,*和/运算符。 您需要为负数和浮点数添加支持(例如,-4与并不相同0 4 -)。 您可以假设输入有效,并遵循上述规则 测试用例 输入: -4 5 + 输出: 1 输入: 5 2 / 输出: 2.5 输入: 5 2.5 / 输出: 2 输入: 5 1 2 + 4 * 3 - + 输出: 14 输入: 4 2 5 * + 1 3 …
41 code-golf  math 

30
在那里,我用胶带固定了它
挑战: 给定仅包含大写和/或小写字母的字符串(以您喜欢的为准),将其tape水平放置即可修复。为此,我们检查字母表中两个相邻字母的差异(忽略环绕并仅向前移动),并在需要的位置填充TAPE/ tape。 例: 输入:abcmnnnopstzra 输出:abcTAPETAPETmnnnopTAstTAPETzra 为什么? 之间c和m应该是defghijkl(长度9),因此,我们用填补这一TAPETAPET; 之间p和s应该是qr(长度为2),因此我们用填补这一TA; 之间t并z应uvwxy(长度为5),所以我们填补了这一带TAPET。 挑战规则: 差异仅适用于正向,因此之间没有胶带zra。 可能会有多个相同的相邻字母,例如nnn。 您可以采用任何合理的格式输入。可以是单个字符串,字符串数组/列表,字符数组/列表等。输出具有相同的灵活性。 您可以随意使用小写和/或大写字母。这适用于输入,输出和TAPE。 可能没有TAPE必要,在这种情况下,输入保持不变。 通用规则: 这是代码高尔夫球,因此最短的答案以字节为单位。 不要让代码高尔夫球语言阻止您发布使用非代码高尔夫球语言的答案。尝试针对“任何”编程语言提出尽可能简短的答案。 标准规则适用于您的答案,因此您可以使用STDIN / STDOUT,具有正确参数的函数/方法和返回类型的完整程序。您的来电。 默认漏洞是禁止的。 如果可能,请为您的代码添加指向测试的链接。 另外,如有必要,请添加说明。 测试用例: Input: "abcmnnnopstzra" Output: "abcTAPETAPETmnnnopTAstTAPETzra" Input: "aza" Output: "aTAPETAPETAPETAPETAPETAPEza" Input: "ghijk" Output: "ghijk" Input: "aabbddeeffiiacek" Output: "aabbTddeeffTAiiaTcTeTAPETk" Input: "zyxxccba" Output: "zyxxccba" Input: "abccxxyz" Output: "abccTAPETAPETAPETAPETAPExxyz" …
41 code-golf  string 

4
地牢爬行者
输入项 表示地牢壁的二进制矩阵中号中号M 玩家在地牢中的位置(x ,y)(X,ÿ)(x,y)。 玩家当前面对的方向ddd(0 =北,1 =东,2 =南,3 =西) 输出量 播放器视场中墙壁的伪3D表示形式,为30 × 1030×1030\times 10字符的ASCII艺术。 下面是几个可能的输出框架,以及相应的地图和指南针,以帮助您掌握其窍门(但绘制地图和指南针并不是挑战的一部分)。 规格 视场 玩家在其视野中有131313面墙,从一种一种A到中号中号M标记。以下是在所有可能的方向上墙相对于播放器的位置(黄色)。 画墙 墙壁应该从一种一种A画到中号中号M任何部分都可能被更靠近的墙壁覆盖,则应按照此精确顺序绘制墙壁。只要最终结果相同,您当然可以实施不同的方法。 整个输出画有7点不同的字符:" ","'",".","|","-","_"和":"。 由于详细说明此挑战主体中的墙壁形状会使其过长,因此可以在以下TIO链接中提供它们: 在线尝试! "?"在这些图中,不属于给定墙的字符用标记。必须将它们视为完全不绘制的“透明”字符。另一方面,墙内的所有空间都是“实体”,并且必须覆盖以前可能在此绘制的任何其他字符。 规则 关于输入 您可以采用任何合理格式的中号中号M,XXx,ÿÿy和ddd。 您可以使用0索引或1索引的坐标。 您可以为指示使用4个不同的值。 保证矩阵至少为3 × 33×33\times 3。 您可能会假设边缘上总是有围墙。 保证播放器位于一个空的正方形上。 输入保证有效。 关于输出 墙壁必须完全按照描述绘制。 但是,输出格式也很灵活:单个字符串,字符串数组,字符矩阵等。 只要前后空格一致,就可以接受。 这是代码高尔夫球。 测试用例 所有测试用例都使用以下矩阵: [ [ 1, 1, 1, 1, …

12
紧密联系的挑战
无聊时我有时会做的一项活动是成对地写几个字符。然后,我画线(从不超过顶部)连接这些字符。例如,我可能会写a b c b a cabcbacabcbac,然后将线画为: 或者我可能会写a b b c a cabbcacabbcac 绘制完这些线条后,我会尝试在块周围绘制闭合循环,以使我的循环不会与我刚刚绘制的任何线条相交。例如,在第一个循环中,我们可以绘制的唯一循环是围绕整个对象,但是在第二个循环中,我们可以绘制仅围绕bbb的循环(或其他所有东西) 如果我们花一点时间来研究它,我们会发现只能绘制一些字符串,以便闭环包含所有字母或不包含所有字母(如第一个示例)。我们将这些字符串称为链接良好的字符串。 请注意,某些字符串可以多种方式绘制。例如,b b b bbbbbbbbb可以通过以下两种方式绘制(不包括第三种): 要么 如果可以绘制这些方式中的一种,从而可以使闭环包含一些字符而不与任何行相交,则该字符串未很好地链接。(所以b b b bbbbbbbbb没有很好地链接) 任务 您的任务是编写一个程序来识别链接良好的字符串。您的输入将由一个字符串组成,其中每个字符均出现偶数次,并且您的输出应为两个不同的一致值之一,如果字符串连接正确,则为一个,否则为另一个。 另外你的程序必须是一个很好地链接字符串意义 每个字符在程序中出现偶数次。 通过时应输出真实值。 您的程序应该能够为由可打印ASCII或您自己的程序中的字符组成的任何字符串产生正确的输出。每个字符出现偶数次。 答案将以其长度(以字节为单位)进行评分,而字节越少越好。 暗示 如果存在连续的非空严格子字符串,则字符串连接不正确,从而每个字符在该子字符串中出现偶数次。 测试用例 abcbac -> True abbcac -> False bbbb -> False abacbc -> True abcbabcb -> True abcbca -> …

30
布置地毯
受到这个SO问题的启发。 挑战: 输入: 字符串sss 角色ccc 输出: 在所有四个方向上创建字符串的菱形正方形ASCII艺术作品,字符串的第一个字符在中心并向外。在方形ASCII艺术地毯中,该字符用作填充物。这听起来可能很模糊,所以这里有个例子: 输入:sss = string,ccc = . 输出: ..........g.......... ........g.n.g........ ......g.n.i.n.g...... ....g.n.i.r.i.n.g.... ..g.n.i.r.t.r.i.n.g.. g.n.i.r.t.s.t.r.i.n.g ..g.n.i.r.t.r.i.n.g.. ....g.n.i.r.i.n.g.... ......g.n.i.n.g...... ........g.n.g........ ..........g.......... 挑战规则: 输入字符串也可以是字符列表 输出也可以是字符串列表或字符矩阵 输入字符串和字符保证为非空 该字符串保证不包含字符 字符串和字符都只能是可打印的ASCII(unicode范围[32,126],空格''到波浪号'〜'并包括波浪号'〜') 通用规则: 这是代码高尔夫球,因此最短答案以字节为单位。 不要让代码高尔夫球语言阻止您发布使用非代码高尔夫球语言的答案。尝试针对“任何”编程语言提出尽可能简短的答案。 标准规则适用于具有默认I / O规则的答案,因此允许您使用STDIN / STDOUT,具有正确参数的函数/方法以及返回类型的完整程序。您的来电。 默认漏洞是禁止的。 如果可能的话,请添加一个带有测试代码的链接(即TIO)。 另外,强烈建议为您的答案添加说明。 测试用例: 输入:sss = 11111,c=c=c= = 0 输出: 00000000100000000 00000010101000000 …

30
打印物理乘法表
矩形具有这个不错的属性-一个矩形正好由字符组成!n × 米n×mn \times mn × 米n×mn \times m A ..更有趣的属性是矩形可以在乘法表中很好地对齐-例如表:3 × 33×33 \times 3 # ## ### # ## ### # ## ### # ## ### # ## ### # ## ### 您面临的挑战是,给定数字(),输出格式化的乘法表。ñnnn > 1n>1 n > 1n × nn×nn \times n 规则 您可以在上方或下方输入一个ñnn 默认的I / O规则适用 您可以选择任何非空白字符来表示块。其他字符(尽管换行符很特殊)都被认为是空格。对于不同的输入,所选字符可以不同,但​​是在整个输入中必须相同 只要表格对齐,结果就可以有不需要的字符,并且不会出现不属于所需输出的所选字符 …

30
删除二维数组的周围零
这是该问题的二维版本。 给定一个仅包含非负整数的非空二维数组/矩阵: ⎡⎣⎢⎢⎢⎢⎢⎢00000000000001个001个01个0001个1个0⎤⎦⎥⎥⎥⎥⎥⎥[0000000010000010011100000] \begin{bmatrix} {\color{Red}0} & {\color{Red}0} & {\color{Red}0} & {\color{Red}0} & {\color{Red}0} \\ {\color{Red}0} & {\color{Red}0} & 0 & 1 & 0 \\ {\color{Red}0} & {\color{Red}0} & 0 & 0 & 1 \\ {\color{Red}0} & {\color{Red}0} & 1 & 1 & 1 \\ {\color{Red}0} & {\color{Red}0} & {\color{Red}0} & …

30
寻找灵魂伴侣
鉴于整数的非空有限列表,输出truthy如果恰好有两个相等的条目和所有其他条目是不同的值,并且falsey否则值。 例子 truthy: [1,1] [1,2,1] [1,6,3,4,4,7,9] falsey: [0] [1,1,1] [1,1,1,2] [1,1,2,2] [2,1,2,1,2] [1,2,3,4,5]

30
我是微不足道的阵列吗?
一个微不足道阵列是正整数,其中连续元素之间的绝对差均小于或等于的阵列1。 例如,以下数组无关紧要: [1, 2, 3, 4, 3, 4, 5, 5, 5, 4] 因为相应的(绝对)差异是: [1, 1, 1, 1, 1, 1, 0, 0, 1] 全部小于或等于1。 您的任务是确定给定的整数数组是否不重要。 您可以假定数组始终包含至少两个元素。 标准输入和输出规则适用。您可以采用任何合理的格式输入(和输出)。 默认漏洞是禁止的。 真实/虚假的值必须是不同且一致的。 这是代码高尔夫球,因此最短答案以字节为单位。 测试用例 输入->输出 [1、2、3、4、3、4、5、5、5、4]-> true [1、2、3、4、5、6、7、8、9、8]-> true [3,3,3,3,3,3,3]-> true [3,4,4,4,3,3,3,4,4,4]-> true [1、2、3、4]->是 [5、4、3、2]->是 [1、3、5、7、9、7、5、3、1]->否 [1、1、1、2、3、4、5、6、19]->否 [3,4,5,6,7,8,7,5]->否 [1、2、4、10、18、10、100]->否 [10,20,30,30,30]->错误 我使用了值true和false。

22
最好的基数是10…达到目标!
输入: 由0-9范围内的数字组成的正整数n。 挑战: 如果d是整数中的最高位数,则假定数字的底数是d + 1。例如,如果整数是1256,则应假定它以7为底,如果它是10110,则应假定其以2为底(二进制),如果是159,则应为十进制。 现在,执行以下操作,直到:1:达到以10为底的整数,或 2:达到一位整数。 将整数从base-(d + 1)转换为base-10 查找此新整数的底数(再次是base-(d + 1),其中d是新数字中的最高位数) 转到步骤1。 例子: 假设输入为n = 413574。最高位数d = 7,所以这是基数8(八进制)。将此转换为十进制并得到137084。最高位数d = 8,所以这是以9为底的。将此转换为十进制并获得83911。最高位数是9,所以这是一个十进制数,我们停止。输出应为83911。 假设输入为n = 13552。最高的数字是d = 5,所以这是以6为底的数字。将此转换为十进制并得到2156。最高位数d = 6,所以这是基数7。将此转换为十进制并得到776。最高位数是d = 7,所以这是以8为底的。将此转换为十进制并获得510。最高的数字是d = 5,所以这是以6为底的数字。将此转换为十进制并得到186。最高的数字是8,所以这是以9为底的数字。将此转换为小数并得到159。最高位数是9,所以这是一个十进制数,我们停止。输出应为159。 假设输入为n = 17。这将使我们得到15,然后是11,然后是3,因为它是个位数,所以我们将输出。 测试用例: 5 5 17 3 999 999 87654321 (base-9 -> 42374116 in decimal …

30
我可以将数字总和除以两倍吗?
给定一个正整数作为输入,如果数字可被其数字总和的两倍整除,则您的任务是输出一个真值,否则将输出一个假值(OEIS A134516)。换一种说法: (sum_of_digits)*2 | number 您可以为真/假情况指定任何有限的值集,而不是为真/假情况的真/假值,并用它们补充其他值。举一个简单的例子,您可以使用0真数字,而所有其他数字用于假数字(如果愿意,反之亦然)。 标准输入和输出规则适用。默认漏洞也适用。 您可以将输入作为整数或该整数的字符串表示形式。 这是代码高尔夫球,因此以字节为单位的最短代码获胜! 我是PPCG的新手,因此,如果可能的话,我希望您发表解释。 测试用例 输入-输出-(原因) 80-真实-(16除以80) 100-真实-(2除以100) 60-真实-(12除以60) 18-Truthy-(18除以18) 12-真实-(6除数12) 4-虚假-(8不除以4) 8-虚假-(16不除8) 16-虚假-(14不除以16) 21-虚假-(6不除21) 78-虚假-(30不除以78) 110-虚假-(4不did 110) 111-虚假-(6不除111) 390-虚假-(24不除以390)

30
最低限度的移动
受堆栈溢出问题的启发。这里的标题完全是我的错。 挑战 给定一个包含至少两个条目的正整数列表,请将每个数字替换为除自身以外的所有条目中的最小值。 测试用例 [4 3 2 5] -> [2 2 3 2] [4 2 2 5] -> [2 2 2 2] [6 3 5 5 8] -> [3 5 3 3 3] [7 1] -> [1 7] [9 9] -> [9 9] [9 8 9] -> [8 9 8] …

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.