编程拼图和代码高尔夫

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

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 

3
设计一台指令集计算机!
注意:我愿意悬赏任何我认为有趣的答案。 您的挑战是设计一台图灵完整的 指令集计算机(OISC): OISC是一种仅使用一条指令的抽象机-无需使用机器语言操作码。通过对单个指令的明智选择和给定的无限资源,OISC可以像具有多个指令的传统计算机一样,成为通用计算机。 这是构成图灵完整OISC的单个命令的一些示例。 规则: 您必须提供解释或证明 您必须为您的语言提供翻译。该解释器应仅受内存/时间限制(例如,必须没有用户施加的限制)。如果您没有为您的语言提供口译员(出于懒惰以外的其他原因),则必须证明可以编写该语言。口译员必须是可能的。 您必须证明其图灵完备性 您必须提供正式证明,证明您的语言是图灵完备的。一种简单的方法是证明它可以解释或具有与另一种图灵完备的语言相同的行为。要解释的最基本的语言是Brainf ** k。 例如,具有与Brainf ** k相同的命令(并且同样没有用户施加的内存限制)的普通语言是图灵完备的,因为可以在Brainf ** k中实现的任何内容都可以用该语言实现。 。 这是非常易于实现的图灵完整语言的列表。 其他OISC要求 该OISC应该只有一条指令-不能有多条指令,其中一条使图灵完成。 您的OISC可以使用您喜欢的任何语法。您应该在答案中定义什么是指令,什么是数据以及什么是无操作(例如,空格)。有创造力! 参数不仅需要是整数。例如,///是图灵完备的OISC的一个漂亮示例。 如何以及是否进行输入和输出取决于您自己。大多数OISC通过特定的内存位置实现I / O,但可能还有其他方法可以实现,因此建议您找到一个。 一个有效的答案必须在您的OISC中提供一些示例代码,方法是将其包含在帖子中,或者链接到使用该语言解决的简单挑战。 表决 选民,请记住不要反对无聊的意见。例子: Lenguage -equivalents 现有OISC的实现(答案,请创建您自己的!) “ OISC”,其中第一个参数指定要调用的命令(示例) 但是,您应该推荐有趣的创意作品,例如: 基于数学方程式的OISC 基于神经网络的图灵完备ZISC 一个OISC,其中输出I / O以不同于某些内存位置的其他方式发生 获奖 与人气竞赛一样,得票最多的答案将赢得胜利!祝好运!

30
领先的零挑战
挑战 给定两个整数作为输入(x和y),将其输出x为一个字符串,并带有多个前导零,以使该字符串成为y无符号的字符长。 规则 如果x有超过y位数,输出x为不加修改字符串。 即使没有前导零,也不接受以整数形式输出。 当x为负数时,保持-原样并以绝对值进行运算。 负数y应视为0,表示您x按原样输出(但作为字符串输出) 例子: IN: (1,1) OUT: "1" IN: (1,2) OUT: "01" IN: (10,1) OUT: "10" IN: (-7,3) OUT: "-007" IN: (-1,1) OUT: "-1" IN: (10,-1) OUT: "10" IN: (0,0) OUT: "0" IN: (0,1) OUT: "0" IN: (0,4) OUT: "0000" 以字节为单位的最短代码获胜,存在标准漏洞。
31 code-golf  string 

13
油炸锅模拟器
您的任务是模拟面糊对食物的影响。请添加三层地壳。 [[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0], // in [0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0], [0,0,0,1,1,1,0,0,0,0,0,0,0,1,1,0,0,0], [0,0,0,0,1,0,0,0,0,0,0,0,1,1,0,1,0,0], [0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0], [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]] | V [[0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,2,1,2], [0,0,2,1,2,2,0,0,0,0,0,0,0,2,2,0,2,0], [0,0,2,1,1,1,2,0,0,0,0,0,2,1,1,2,0,0], [0,0,0,2,1,2,0,0,0,0,0,2,1,1,2,1,2,0], [0,0,0,0,2,0,0,0,0,0,0,0,2,1,1,1,2,0], [0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,0,0]] | V [[0,0,3,2,3,3,0,0,0,0,0,0,0,3,3,2,1,2], [0,3,2,1,2,2,3,0,0,0,0,0,3,2,2,3,2,3], [0,3,2,1,1,1,2,3,0,0,0,3,2,1,1,2,3,0], [0,0,3,2,1,2,3,0,0,0,3,2,1,1,2,1,2,3], [0,0,0,3,2,3,0,0,0,0,0,3,2,1,1,1,2,3], [0,0,0,0,3,0,0,0,0,0,0,0,3,2,2,2,3,0]] | V [[0,4,3,2,3,3,4,0,0,0,0,0,4,3,3,2,1,2], // out [4,3,2,1,2,2,3,4,0,0,0,4,3,2,2,3,2,3], [4,3,2,1,1,1,2,3,4,0,4,3,2,1,1,2,3,4], [0,4,3,2,1,2,3,4,0,4,3,2,1,1,2,1,2,3], [0,0,4,3,2,3,4,0,0,0,4,3,2,1,1,1,2,3], [0,0,0,4,3,4,0,0,0,0,0,4,3,2,2,2,3,4]] 一点视觉帮助: 显示代码段 body { background-color:#222; color:lightgray; } <pre> [[<span style="color:gold">0</span>,<span style="color:gold">0</span>,<span style="color:gold">0</span>,<span style="color:gold">0</span>,<span style="color:gold">0</span>,<span style="color:gold">0</span>,<span …
31 code-golf  matrix 

3
活页乐谱ASCII艺术生成器
注意:Anders Kaseorg警告我,这可能是另一个先前问题的重复。看来是这样,很抱歉,我在发布此问题之前没有找到该问题。尽管如此,这个问题只收到一个答案,这个答案比较简单,以防万一大家都想尝试一下。不过,我将了解该问题是否最终被标记为重复。 挑战 给定这样的输入: 8g 8Df 4cs 2C 1A 编写产生如下输出的最短程序/函数: /\ -o- | | ---|-|---------------------------------------------------|-| |/ | | ---/|--------|\----b-*-----------------------------------|-| / | | | | o | | -|--|--------|------|-----------------|------------------|-| | (| \ | | | | | | -|--|--)----*-------|/---------|------|------------------|-| \ | / | | | | -----|-------------------------|-------------------------|-| | | *_/ #-*- …

21
三个“ R”:反向,重新排序,重复
在用数字涂鸦时,我发现可以从数字列表中生成一个有趣的排列。如果您重复相同的排列足够多次,您将始终回到原始数组。让我们使用以下列表: [1, 2, 3, 4, 5] 举个例子 反转数组。现在我们的数组是 [5, 4, 3, 2, 1] 重新排序(交换)每对。我们的列表有2对:[5, 4]和[3, 2]。不幸的是,我们不能将它们组合1为一对,所以我们将其留给自己。交换每对后,新数组为: [4, 5, 2, 3, 1] 重复步骤1和2,直到返回到原始数组。以下是以下4个步骤: Step 2: Start: [4, 5, 2, 3, 1] Reversed: [1, 3, 2, 5, 4] Pairs Swapped: [3, 1, 5, 2, 4] Step 3: Start: [3, 1, 5, 2, …

30
2的幂和
挑战 给定一个整数输入x其中1 <= x <= 255,返回时总结给出了两种力量的结果x。 例子 给定输入: 86 您的程序应输出: 64 16 4 2 输入: 240 输出: 128 64 32 16 输入: 1 输出: 1 输入: 64 输出: 64 如果总和中没有确定的2的幂,则输出可能包含零。 例如,输入65可以输出0 64 0 0 0 0 0 1。 计分 这是代码高尔夫球,因此每种语言中最短的答案将获胜。
31 code-golf  binary  code-golf  sequence  integer  chess  code-golf  number  arithmetic  matrix  code-golf  code-golf  combinatorics  grid  set-partitions  code-golf  array-manipulation  graph-theory  code-golf  number  code-golf  string  decision-problem  code-golf  matrix  cellular-automata  3d  code-challenge  restricted-source  printable-ascii  code-golf  board-game  code-golf  geometry  grid  code-golf  word-puzzle  code-golf  matrix  sorting  code-golf  code-golf  string  decision-problem  code-golf  matrix  cellular-automata  code-golf  decision-problem  code-golf  math  number  arithmetic  restricted-source  code-golf  code-golf  number  integer  matrix  code-golf  date  code-golf  matrix  code-golf  sequence  combinatorics  chemistry  code-golf  array-manipulation  popularity-contest  code-golf  code-golf  natural-language  code-golf  number  integer  sorting  substitution  code-golf  string  number  date  encode  code-golf  decision-problem  code-golf  string  subsequence  code-golf  string  alphabet  code-golf 

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.