Questions tagged «code-golf»

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

6
对课本进行排序
对课本进行排序 学校即将开始(如果还没有开始的话),所以是时候准备好我们的教科书了。您需要按字母顺序对书籍进行排序,但是这花了太长时间,因此您决定编写一个程序来实现。 例子 输入: _ | | _ |F| | | |o|_|P| |o|B|P| | |a|C| | |r|G| |_|_|_| 输出: _ | |_ |F| | _|o|P| |B|o|P| |a| |C| |r| |G| |_|_|_| 输入值 输入将是需要按字母顺序重新排列的一组书籍。这将只包含:|,_,,和A-Za-z。书籍的标题是从上至下垂直阅读的。 您可以选择假定输入用空格填充以适合矩形。如果选择用空格填充输入,请在答案中指定。 您的程序需要处理的最大书本高度为5,120行,而不会失败。 书籍将始终为1层,输入中的书籍将始终至少为一本书 输出量 输出结果必须是按字母顺序组织的同一套书籍。重新排列时,书的高度必须保持相同,书名与顶部的间距必须相同。 书籍应按字母顺序排序。如果您的语言具有排序功能,则可以使用该功能。否则,您可以按照此处所述使用字母排序。 书名示例 _ | | | | |F| |o| |o| | | …

9
整数的qvolume
古老的知识是,每个非负整数都可以重写为四个平方整数的总和。例如,数字1可以表示为。或者,通常,对于任何非负整数,存在整数使得02+02+02+1202+02+02+120^2+0^2+0^2+1^2nnna,b,c,da,b,c,da,b,c,d n=a2+b2+c2+d2n=a2+b2+c2+d2n = a^2+b^2+c^2+d^2 Joseph-Louis Lagrange proved this in the 1700s and so it is often called Lagrange's Theorem. This is sometimes discussed in relation to quaternions – a type of number discovered by William Hamilton in the 1800s, represented as w+xi+yj+zkw+xi+yj+zkw+x\textbf{i}+y\textbf{j}+z\textbf{k} where w,x,y,zw,x,y,zw,x,y,z are real numbers, and i,ji,j\textbf{i}, \textbf{j} …

7
我们忘记了什么?
您的任务是编写一个由一些字节序列组成的非空计算机程序。如果我们在程序中选择一个特定的字节并将其所有实例从程序中删除,则修改后的程序应输出删除的字节。 例如,如果我们的程序是 aabacba 然后bcb将输出a,aaaca将需要输出b并且aababa将输出c。 未经修改的程序做什么无关紧要。 答案将以字节计分,目标是最大程度地减少字节数。

23
我转置源代码,您转置输入!
敲竹杠一个的敲竹杠一个的敲竹杠一个的敲竹杠。去投票那些! 您的任务(如果希望接受)是编写一个程序/函数,该程序输出/返回其输入/参数¹。棘手的部分是,如果我转置您的源代码²,那么输出/结果也必须转置。 您可以选择解决方案可以接受的2D数据类型。例如,列表列表,矩阵,字符串列表等。说明要处理的列表。您可以假设输入将始终为矩形,并且每个尺寸的长度为1或更大。 为了进行转置,源代码中的短行将被视为用尾随空格填充,直到它变成矩形为止,但是,这些尾随空格不会影响您的代码长度。 由于这是代码高尔夫,因此目标是优化原始源代码(而不是转置版本)的字节数。 例子 假设您的解决方案采用数字矩阵,而您的源代码为 AB DEF 其输入/参数为[[1,2],[3,4],[5,6]]。如果我写 AD BE F 而是运行它,输出/结果必须为[[1,3,5],[2,4,6]]。 假设您的解决方案采用换行符分隔的字符串,而您的源代码为 ABC 其输入/参数为"96\n"。如果我写 A B C 而是运行它,输出/结果必须为"9\n6\n"。

22
下雨了
灵感来自这个聊天迷你挑战。 给定一个字符串作为输入(仅ASCII可打印字符),输出带有“ raining”字母的字符串。每个字母必须是向下随机排列的行(0字符串之间和字符串的长度之间的随机性,每个字符串具有非零的概率),并且每列只能包含一个字符。所有可能的输出必须再次具有非零的发生概率。 这可能有点令人困惑,所以这是一个示例(摘自该CMC): Hello World d H o llo l W e r 请注意,如何H向下减小一个空格,向下减小d零,然后llo所有行都对齐。该r最远下来,9但仍小于字符串长度从顶部离开。这只是一个例子,还有许多其他输入的可能性Hello World。 其他示例可能是: test t e s t PP&CG & G P P C 输入和输出可以通过任何方便的方法给出。 输入保证为非空的(即,您将永远不会收到""输入)。 您可以将其打印到STDOUT或将其作为功能结果返回。 完整的程序或功能都是可以接受的。 只要字符适当排列(例如,随意填充为矩形),任何数量的外部空格都是可以接受的。 禁止出现标准漏洞。 这是代码高尔夫球,因此所有常见的高​​尔夫规则都适用,并且最短的代码(以字节为单位)获胜。

28
计数车移动1D
给定一个具有一排车行和/或空白空间的位置,输出可能有多少个不同的车行移动。一个新车可以向左或向右移动到一个空白处,但不能移到需要越过另一个新车的地方。当一个新手移动时,其他新手保持在原位。 例如,从该位置开始,可以进行6次移动: .R..RRR. 第一个(最左侧)菜鸟可以向左移动1个空间,或者向右移动1或2个空间(3个移动) 下一个车队只能向左移动1或2个空格(2个移动) 第三只车根本无法移动,因为它被挤压在另外两个新车之间(0步) 最后一个小车只能向右移动1个空格(移动1个空格) 请注意,一个职位可能根本没有白痴,或者根本没有空白。 输入:白名单和空白区域的非空列表(字符串,数组等)。您可以将它们表示为True/ False,1/ 0,'R'/ '.'或任意两个一致的不同单字节字符或您选择的一位数字。由您决定,哪一个表示新手,哪一个表示空白。 输出:一个非负整数。整数浮点数也可以。 测试用例 输出是左侧的数字。 6 .R..RRR. 0 . 0 R 4 R..RR 3 ...R 8 ..R..R.. 0 ...... 对于更多的测试用例,以下是所有输入,最长为5。 0 . 0 R 0 .. 1 .R 1 R. 0 RR 0 ... 2 ..R 2 .R. 1 .RR …

19
敌对因子数
一些正整数的除数确实很讨厌彼此,并且他们不喜欢共享一个或多个公共数字。 这些整数称为敌对数数(HDN) 例子 Number 9566有4除数:(1, 2, 4783 and 9566 如您所见,其中没有两个共享相同的数字)。 因此,9566是一个ħ ostile d ivisor Ñ棕土 号码9567是不是HDN,因为它的除数(1, 3, 9, 1063, 3189, 9567)具有一些共同的数字。 这是前几个HDN 1,2,3,4,5,6,7,8,9,23,27,29,37,43,47,49,53,59,67,73,79,83,86,87,89,97,223,227,229,233,239,257,263,267,269,277,283,293,307,337... 任务 上面的列表继续,您的任务是找到第n个 HDN 输入值 n从1到的正整数4000 输出量 该nth HDN 测试用例 这是一些1索引测试用例。 请说明您在答案中使用的索引系统,以避免造成混淆。 input -> output 1 1 10 23 101 853 1012 26053 3098 66686 4000 85009 这是代码高尔夫球,因此以字节为单位的最低分数获胜。 …

23
您能停止再打牌再玩吗?
挑战: 输入:范围内的不同正整数的。[1,list-size][1,list-size][1, \text{list-size}] 输出:一个整数:列表被随机改组的次数。对于列表,这意味着将列表分为两半,并且将这两个半部分交织在一起(即,对列表进行[1,2,3,4,5,6,7,8,9,10]一次混码处理将导致[1,6,2,7,3,8,4,9,5,10],因此对于此挑战,输入[1,6,2,7,3,8,4,9,5,10]将导致1)。 挑战规则: 您可以假设列表只包含范围内的正整数(如果选择索引为0的输入列表,则为)。[1,list-size][1,list-size][1, \text{list-size}][0,list-size−1][0,list-size−1][0, \text{list-size}-1] 您可以假定所有输入列表都是有效的浅滩混排列表,或者是未混排的排序列表(在这种情况下,输出为0)。 您可以假设输入列表将至少包含三个值。 分步示例: 输入: [1,3,5,7,9,2,4,6,8] 对其进行重新整理就变成了:[1,5,9,4,8,3,7,2,6],因为每个偶数索引为0的项都首先出现[1, ,5, ,9, ,4, ,8],然后所有奇数索引为0的项都随之出现[ ,3, ,7, ,2, ,6, ]。 该列表尚未订购,因此我们继续: 重新整理列表变得:[1,9,8,7,6,5,4,3,2] 再变成:[1,8,6,4,2,9,7,5,3] 然后:[1,6,2,7,3,8,4,9,5] 最后:[1,2,3,4,5,6,7,8,9],这是一个有序列表,所以我们完成了重新整理。 我们对原始信号进行了[1,3,5,7,9,2,4,6,8]5次改组以达到[1,2,3,4,5,6,7,8,9],因此5在这种情况下,输出为。 一般规则: 这是代码高尔夫球,因此最短答案以字节为单位。 不要让代码高尔夫球语言阻止您发布使用非代码高尔夫球语言的答案。尝试针对“任何”编程语言提出尽可能短的答案。 标准规则适用于具有默认I / O规则的答案,因此允许您使用STDIN / STDOUT,具有适当参数的函数/方法以及返回类型的完整程序。你的来电。 默认漏洞是禁止的。 如果可能的话,请添加一个带有测试代码的链接(即TIO)。 另外,强烈建议为您的答案添加说明。 测试用例: Input Output [1,2,3] 0 [1,2,3,4,5] 0 [1,3,2] 1 [1,6,2,7,3,8,4,9,5,10] …

21
球体上的随机点
挑战 编写一个程序或函数,该程序或函数不输入任何内容,并在理论上均匀的随机方向上输出长度为的向量。111 这等效于所描述的球面上的随机点x2+y2+z2=1x2+y2+z2=1x^2+y^2+z^2=1 导致这样的分布 输出量 从理论上均匀的随机分布中得出三个浮点数,方程满足精度极限。x2+y2+z2=1x2+y2+z2=1x^2+y^2+z^2=1 挑战备注 理论上,随机分布必须是均匀的。也就是说,如果将伪随机数生成器替换为实数中的真实RNG ,则会导致球体上点的均匀随机分布。 从均匀分布中生成三个随机数并将它们归一化是无效的:将会对三维空间的各个角产生偏差。 同样,从均匀分布中生成两个随机数并将其用作球面坐标也是无效的:向球体的极点会产生偏差。 适当的均匀性可以通过算法实现,这些算法包括但不限于: 根据附近的正态(高斯)分布生成三个随机数,和并将其标准化。 xxxyyyzzz000 实施实例 根据范围内的均匀分布生成三个随机数,和xxxyyyzzz(−1,1)(−1,1)(-1,1)。通过l = √计算向量的长度l=x2+y2+z2−−−−−−−−−−√l=x2+y2+z2l=\sqrt{x^2+y^2+z^2}。然后,如果l>1l>1l>1,则拒绝该向量并生成一组新的数字。否则,如果l≤1l≤1l \leq 1,标准化载体并返回结果。 实施实例 生成两个随机数iii和jjj从均匀的范围内分布(0,1)(0,1)(0,1)并将其转换为球面坐标,像这样:θϕ=2×π×i=cos−1(2×j−1)θ=2×π×iϕ=cos−1⁡(2×j−1)\begin{align}\theta &= 2 \times \pi \times i\\\\\phi &= \cos^{-1}(2\times j -1)\end{align}因此可以通过 x计算xxx,yyy和zzzxyz=cos(θ)×sin(ϕ)=sin(θ)×sin(ϕ)=cos(ϕ)x=cos⁡(θ)×sin⁡(ϕ)y=sin⁡(θ)×sin⁡(ϕ)z=cos⁡(ϕ)\begin{align}x &= \cos(\theta) \times \sin(\phi)\\\\y &= \sin(\theta) \times \sin(\phi)\\\\z &= \cos(\phi)\end{align} 实施实例 在您的答案中提供您正在使用的算法的简短描述。 在MathWorld上阅读有关球体点拾取的更多信息。 输出示例 [ 0.72422852 -0.58643067 …

3
彩虹尽头的细胞
我们都知道,或者至少听说过“ fuckfuck”,这是最著名和最有影响力的神秘语言之一。如今,尽管大多数实现都使用无限磁带,但是UrbanMüller的原始编译器具有30000个单元的磁带。一个鲜为人知的事实*是,磁带的末尾实际上有一个特殊的值,在典型的Brainfuck程序中几乎从未与之交互。 尽管可以使用29999 >s和a 来打印此值,但是Brainfuck .以其简短的解决方案而闻名,因此您的目标是使用最少的字符数打印此值。 *小说 规则: 复习说明: +/ -:递增/递减当前单元格,当255递增时从255缠绕到0,反之亦然 </ >:在磁带上左右移动指针 .:打印当前单元格的值。 [:]如果单元格的值为0,则跳转到相应的 ]:[如果单元格的值不为0,则跳转到相应的 在这种情况下,,(获取输入)不执行任何操作,因为原始编译器在EOF上保留单元不变,并且该程序不应接收任何输入。 磁带最初以全0填充,但单元30000除外,其中包含未知值 指针从单元格1开始,并应在打印后结束于单元格30000。 细胞对1和30000右左有不确定的行为,所以解决方案应该不能访问这些细胞。 请注意,30000 处的值可能是0,因此简单地循环直到您击中非零单元格都将无效。 您应该只打印单元格30000处的值 最短的解决方案获胜! 决胜局是更高效的程序(以最少的步骤执行),其次是最快的提交时间。 提示: Esolanging Fruit建议使用https://copy.sh/brainfuck来测试您的代码。规范如本挑战中所述,您可以选择该abort选项,以便程序在越界时暂停。

8
制作字母
考虑以下按字母排序的单词列表: balderdash ballet balloonfish balloonist ballot brooding broom 所有单词均以开头b,而前5个以开头bal。如果我们只看前两个单词: balderdash ballet 我们可以这样写: balderdash +let 在' '一个单词与前一个单词共享前缀字符的地方使用;除了'+'表示最后一个字符的字符外,第二个单词与前一个单词共享前缀。 这是一种“尝试”可视化效果:父级为' bal',有2个后代:'derdash'和'let'。 具有更长的列表,例如: balderdash ballet brooding 我们还可以使用竖线字符'|'来使共享前缀的结束位置更清晰,如下所示: balderdash | +let +rooding 等价的树将'b'具有两个子树的根:具有root 'al'和的子树及其两个子树'derdash'和'let'; 和'rooding'。 如果我们将此策略应用于原始列表, balderdash ballet balloonfish balloonist ballot brooding broom 我们得到的输出看起来像: balderdash | +let | +oonfish | | +ist | +t +rooding …
31 code-golf  string 

5
8位虚拟机
背景 我喜欢旧的8位6502芯片。在6502机器代码中解决PPCG方面的一些挑战甚至很有趣。但是,一些应该很简单的事情(例如,读入数据或输出到stdout)在机器代码中不必要地麻烦。因此,我想到一个粗略的想法:发明我自己的8位虚拟机,该虚拟机受6502的启发,但修改后的设计使其更能应对挑战。开始实施某些东西时,我意识到如果将VM的设计减少到最低限度,这本身就是一个不错的挑战:) 任务 实现符合以下规范的8位虚拟机。这是code-golf,因此以最少的字节数实现。 输入值 您的实现应采用以下输入: 一个无符号字节pc,它是初始程序计数器(0基于VM的内存开始执行的内存中的地址) 具有最大256条目长度的字节列表,这是虚拟机的RAM(及其初始内容) 您可以采用任何合理的格式输入此信息。 输出量 字节列表,这是VM终止后RAM的最终内容(请参阅下文)。您可以假设您只得到导致最终终止的输入。允许使用任何明智的格式。 虚拟CPU 虚拟CPU具有 一个8位程序计数器 一个8位累加器寄存器称为A和 一个称为的8位索引寄存器X。 有三个状态标志: Z -在执行某些操作后置零标志 0 N -在某些操作导致负数之后设置负标志(现在将结果的第7位设置为1) C -进位标志由加法设置,并移位结果的“缺失”位 在开始的标志被全部清零,程序计数器设置为给定值和内容A,并X是不确定的。 8位值代表 范围内的无符号整数[0..255] 有符号整数(2的补码),范围为[-128..127] 取决于上下文。如果某个操作上溢或下溢,则该值会回绕(如果加法,进位标志也会受到影响)。 终止 虚拟机在以下时间终止 一HLT到达指令 访问了不存在的内存地址 程序计数器在内存外部运行(请注意,即使VM被提供了完整的256字节内存,它也不会回绕) 地址模式 隐式 -指令没有参数,隐含操作数 立即数-操作数是指令之后的字节 相对 -(仅用于分支)指令后的字节被签名(2的补码),并确定执行分支后要添加到程序计数器的偏移量。0是以下指令的位置 绝对 -指令后的字节是操作数的地址 索引 -指令加号X(寄存器)之后的字节是操作数的地址 使用说明 每条指令都由一个操作码(一个字节)组成,在寻址模式下是即时,相对,绝对和索引第二个参数字节。当虚拟CPU执行一条指令时,它会相应地(由1或2)递增程序计数器。 此处显示的所有操作码均为十六进制。 LDA -将操作数加载到 A …

10
查找Rationals的点积
我在朋友家吃晚饭,他们提出了“素数向量空间”的想法。在此空间中,将正整数表示为向量,以使向量中的第n个元素是第n个素数除以该数目的次数。(请注意,这意味着我们的向量具有无限数量的项。)例如20为 2 0 1 0 0 0 ... 因为它的质因子分解是2 * 2 * 5。 由于素因数分解是唯一的,所以每个数字都对应一个向量。 我们可以通过成对添加向量来添加向量。这与将它们关联的数字相乘相同。我们还可以进行标量乘法,这类似于将相关数提高为幂。 问题在于该空间实际上不是矢量空间,因为没有逆。如果继续进行加和逆运算并关闭向量空间,我们现在可以将每个正有理数表示为向量。如果我们保留向量加法表示乘法的事实。那么自然数的倒数就是它的倒数。 例如,数字20具有向量 2 0 1 0 0 0 ... 因此,1/20是其倒数 -2 0 -1 0 0 0 ... 如果我们想找到与14/15之类的分数相关的向量,我们将找到14 1 0 0 1 0 0 ... 和1/15 0 -1 -1 0 0 0 ... 并通过执行矢量加法将它们相乘 1 …

9
我的车牌给多少分?
(这是我的第一个代码高尔夫球问题) 当我还是个孩子的时候,我父亲和我发明了一款游戏,我们在车上看到的车牌可以根据一些相当简单的规则给出一些要点: X个相同字母或数字的数量给出X-1分,例如: 22 = 1 point aa = 1 point 5555 = 3 points 这些数字必须彼此相邻,因此3353仅给出1分,因为5打破了3的序列。 X的升序或降序序列(至少3个)给出X点,例如: 123 = 3 points 9753 = 4 points 147 = 3 points 分数系统仅适用于1位数字,因此1919不给出分数,而14710仅给出3(147)。 序列可以结合起来以提出更多的观点,例如: 1135 = 4 points (1 point for 11 and 3 points for 135) 34543 = 6 points (3 points …
31 code-golf  string 

30
模拟爆炸骰子
您的任务是制作一个接受整数的程序n > 1,并输出单面n模具的卷。但是,此骰子遵循爆炸骰子的规则。 掷骰子时,请检查掷出的值。如果您获得了该类型骰子的最大值(在标准d4上为4,或者在d6上为6,依此类推),请再次滚动并将新的滚动添加到该总数中。每次滚动都会继续增加总数,直到您不再滚动最大数量为止。虽然最后一个数字仍然被添加。 您的程序应采用单个整数n,并滚动爆炸边的n模具。这是一个示例分布,以显示其外观n=4。请注意,您永远不要输出的任何倍数n,因为它们总是会爆炸。 您可以假定您执行的任何递归的堆栈大小都是无限的,并且您的随机函数必须符合我们的随机性标准(内置随机生成器或time / date)。与诸如几何分布之类的东西相比,您的随机函数也应尽可能统一,因为我们正在谈论这些骰子。
31 code-golf  random 

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.