编程拼图和代码高尔夫

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

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 …

12
让我们玩一些收割者-提交截止
注意:本比赛的获胜者是杰克!不再接受任何提交。 这是应对挑战之王的聊天室。这是我的第一个,所以我很愿意提出建议! “收割者”是由“解决问题的艺术”开发的一种游戏概念,涉及耐心和贪婪。在修改了游戏以适应KOTH风格的比赛之后(感谢@NathanMerrill和@dzaima的建议和改进),这就是挑战。 游戏的工作原理如下:我们有一个称为Reap的值,该值在每个刻度线内乘以给定的常数。每次滴答之后,每个漫游器都可以选择“收获”,这意味着将Reap的当前值添加到一个人的分数中,并将Reap降低到1。 但是,机器人必须在“收割”之间等待一定数量的滴答声,而赢得游戏所需的点数也必须固定。 很简单?这是您的输入: 输入输出 您将在Python 3中编写一个需要3个输入的函数。第一个是self,用于引用类对象(稍后显示)。第二个是Reap,如果您要“收割”您将获得的收割的当前值。第三个是prevReap,在上一个滴答声中收获的机器人列表。 您可以在函数中访问的其他对象: self.obj: An object for your use to store information between ticks. self.mult: The multiplier that Reap is multiplied by each tick self.win: The score you need to win self.points: Your current set of points self.waittime: The amount of ticks that …

1
FIFO缓存异常
这是从随访挑战这一个,如果你困惑,请首先检查一出。 首先,假设为高速缓存未命中的次数,假设我们的高速缓存具有容量k并在充满时使用先进先出(FIFO)弹出方案,那么资源访问序列s就会丢失。m (s ,k )m(s,k)m(s, k)sssķkk 然后给定的比率,返回资源的访问的一个非空序列小号使得存在ķ > Ĵ与米(小号,ķ )≥ [R ⋅ 米(小号,Ĵ )。r>1r>1r > 1sssk>jk>jk > jm(s,k)≥r⋅m(s,j)m(s,k)≥r⋅m(s,j)m(s, k) \geq r \cdot m(s, j) 用简单的英语,构建一个序列资源的访问,从而有二级缓存的大小,其中较大的高速缓存有(至少)[R倍以上用于解决在高速缓存未命中小号。sssrrrsss 为一个例子,有效输出是序列(3 ,2 ,1 ,0 ,3 ,2 ,4 ,3 ,2 ,1 ,0 ,4 ),因为它会导致9个为高速缓冲存储器大小的高速缓存未3,但是10次未命中,高速缓存大小为4。r=1.1r=1.1r = 1.1(3,2,1,0,3,2,4,3,2,1,0,4)(3,2,1,0,3,2,4,3,2,1,0,4)(3, 2, 1, 0, 3, 2, 4, 3, 2, 1, 0, …

5
ASCII螺旋线间隔良好
考虑这个螺旋 ########### # # ####### # # # # # ### # # # # # # # # # # # # # # # # ##### # # # ######### 从中心出发: 第一行(向上)包含3个字符。 第二行的字符数相同(3) 接下来,在接下来的两边添加两个字符(5)。 此模式继续,两个边的长度相同,然后将长度增加2。 我想为N条线生成此螺旋线。 用任何语言写。 输入/参数等是螺旋中的行数。 每行以上一行的顺时针方向90度方向从上一行的结束字符开始。 我不在乎每行之前或之后有多少空格,只要螺旋的元素排成一行即可。 输出文本以使用您选择的任何非空白字符绘制螺旋。 尝试以最少的字节数执行此操作。 测试用例(使用哈希作为输出): N = 1 # # …

12
小拉姆齐数
背景:Ramsey数R (r ,s )R(r,s)R(r,s)给出的顶点的最小数目vvv的完全图ķvKvK_v,使得红色/蓝色边缘的着色ķvKvK_v具有至少一个红ķ[RKrK_r或一个蓝色ķsKsK_s。对于较大的边界[R ,小号r,sr, s是很难建立。 你的任务是输出数R (r ,s )R(r,s)R(r,s)为1个≤ [R ,s ^ ≤ 51≤r,s≤51 \le r,s \le 5。 输入值 两个整数[R ,小号r,sr, s用1 ≤ [R ≤ 51≤r≤51 \le r \le 5和1 ≤ 小号≤ 51≤s≤51 \le s \le 5 。 输出量 R (r ,s )R(r,s)R(r,s)表中给出的 R (r ,s ): s 1 …

6
高尔夫球链(警察线)
这是警察和强盗的挑战。有关强盗的线索,请转到此处。 警察有三个任务。 1)从OEIS中选择一个序列。 2)选择一种语言(建议这是一种golflang语言,但不一定要这样),当使用所有常用的代码高尔夫规则给定input n,output A(n)(A(n)选择的顺序在哪里)时。 把这种语言大号一个和代码Ç 一个。 例如,Jelly和Jelly_code。 3)然后,选择另一种语言(建议这是一种非golang的语言,但不一定非要这样),并再次遵循所有常见的代码高尔夫规则,编写无需输入并输出代码C A的代码。(注:这可以混淆代码,不一定需要被golfed,但较长的这段代码是越容易成为劫匪破解您的提交) 调用此语言大号乙和代码Ç 乙。 例如,Python和Python_code。 警察对此挑战的服从是顺序(指定索引是0还是1),两种语言L A和L B的名称(以及哪一种可以解决哪一部分)以及仅C B的字节数。保留这两部分的实际代码以及C A的长度。 对于Cop,赞赏但不要求链接到L A和L B的文档或解释器(或TIO链接,因为包括两者)。 强盗的挑战是选择一个警察的条目,并以相同的L B语言编写代码C C,然后以解决原始OEIS任务的相同L A语言输出一些代码。C P的长度可以不大于警察所揭示的C B的长度(尽管可以更短)。注:所生产的代码Ç Ç并没有要匹配Ç 一个。 在我们的例子,这意味着强盗必须写的Python输出代码果冻代码一种解决原始OEIS序列,并且的Python代码必须不长于长度揭示缔约方会议。 获奖条件 一周内没有被破解的答案可以揭示其解决方案,这时它们被认为是安全的。请注意,如果一周后没有透露解决方案,那么它仍然可能会被破解。安全答案最短的警察胜出。

12
字符串和数字的乐趣
这是给您的编程难题: 例如,给定一对字符串和对应数字的[[A,37],[B,27],[C,21],[D,11],[E,10],[F,9],[G,3],[H,2]]列表,请输出另一个列表,该列表将仅以以下方式包含字符串: 任何字符串的总计数应完全等于输入数据中其对应的数字。 不应在序列中相邻重复任何字符串,并且每个字符串都应出现在输出列表中。 只要不超过两个规则,就应该随机选择下一个字符串。每个解决方案的选择概率均应为非零。 如果无法组合,则输出应为just 0。 输入列表可以以任何顺序(排序或未排序)给出,列表中的字符串可以具有任何长度。 上述样本输入1的样本输出 [A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,C,A,C,A,C,A,C,A,C,A,C,A,C,A,C,A,C,A,C,D,C,D,C,D,C,D,C,D,C,D,C,D,C,D,C,D,C,D,C,D,C,E,F,E,F,E,F,E,F,E,F,E,F,E,F,E,F,E,F,E,G,H,G,H,G] 输入样本2: [[A,6],[B,1],[C,1]] 第二个输入的输出: 0 因为根据规则无法列出。 样本输入3: [[AC,3],[BD,2]] 有效输出: [AC,BD,AC,BD,AC] 无效的输出: [AC,BD,AC,AC,BD] 如果需要进一步澄清,请随时在评论中告诉我,我将立即采取行动。 这是代码高尔夫球,因此每种语言的最短代码以字节为单位!

4
广义格雷码
输入:由k个正整数组成的数组I。整数将不大于100且k≤100。 输出:您的代码必须输出所有可能的阵列ö长度的非负整数的ķ其限制是0≤ö 我 ≤我我。要从一个数组到下一个数组,您可以在数组中的一个值上加上或减去1。您的代码不得两次输出相同的数组。如果要输出的不同数组的数量很大,那么您的代码应该一直持续输出直到被杀死为止。 例子 如果我是一个k个数组,那么这就是迭代所有宽度为k的格雷码的问题,除了第一个和最后一个元素不需要一步就可以到达。 如果I = [2,1]这样,则输出数组的一种可能的排序是(0,0),(0,1),(1,1),(1,0),(2,0),(2,1) 如果I = [2,1,3]是,则输出数组的一种可能的排序是(0,0,0),(0,0,1),(0,0,2),(0,0,3),(0,1,3),(0,1,2),(0,1,1),(0,1,0),(1,1,0),(1,1,1),(1,1,2),(1,1,3),(2,1,3),(2,1,2),(2,1,1),(2,1,0),...。 这是一个代码挑战,用最短长度的源代码提交是成功的。不要让打高尔夫球的简短答案阻止您发布其他语言的答案。尝试用任何一种语言给出最短的答案。 这也是限制复杂性的挑战。从前一个输出数组(或第一个输出数组的程序开始)开始,每个新数组的输出都应经过O(k)时间。这意味着每个新输出数组(它们各自的长度为k)的运行时间不应大于O(k)。也就是说,应该花费与k成比例的时间,而不是例如k 2或2 k。注意,这不是每个输出的平均时间,而是每个输出阵列的最坏情况时间。 您可以假定对64位整数的所有算术可以在恒定时间内执行,就可以读取和输出它们,以及赋值,查找和更改数组中的值。 限制复杂度的结果之一是仅在程序退出时输出的解决方案是不可接受的。

30
从原动力中恢复原动力
定义:素数幂是自然数,可以以p n的形式表示,其中p是素数,n是自然数。 任务:给定素数p n > 1,返回素数p。 测试用例: input output 9 3 16 2 343 7 2687 2687 59049 3 计分:这是代码高尔夫球。以字节为单位的最短答案将获胜。
13 code-golf  arithmetic  primes  king-of-the-hill  python  board-game  code-golf  number  subsequence  code-golf  ascii-art  code-golf  array-manipulation  decision-problem  grid  fastest-algorithm  logic-gates  logic  code-golf  cards  code-golf  rational-numbers  code-golf  math  number  sequence  code-golf  array-manipulation  integer  code-golf  number  array-manipulation  code-golf  number  sequence  decision-problem  code-golf  ascii-art  number  code-challenge  sequence  arithmetic  sorting  code-golf  date  fastest-algorithm  code-golf  string  number  random  combinatorics  code-golf  combinatorics  code-golf  ascii-art  base-conversion  code-golf  array-manipulation  code-golf  string  code-golf  string  number  arithmetic  code-golf  kolmogorov-complexity  code-golf  string  array-manipulation  json  code-golf  puzzle-solver  code-golf  binary  graph-theory  code-golf  arithmetic  haskell  code-golf  string  cipher  code-golf  code-golf  string  parsing  alphabet  code-golf  string  code-golf  ascii-art  code-golf  string  number  code-golf  string  balanced-string 

13
分组数组数据
给定一个整数矩阵a和一个非负整数i,输出的映射b,所述不同值映射在i的列a到列a谁具有在该值i列。 您可以假定该i值在半开范围内[0, num_cols(a))(或者[1, num_cols(a)]如果您选择使用基于1的索引),并且所有整数都在您的语言可表示的范围内。只要满足挑战的基本要求即可进行输入和输出(2D数组->从int到int的2D数组的映射)。只要映射清晰且一致,就不需要在输出中包含键。 例子 [[1]], 0 -> {1: [[1]]} [[3, 4, 5], [1, 4, 2], [5, 5, 5], [7, 7, 7], [1, 5, 9]], 1 -> {4: [[3, 4, 5], [1, 4, 2]], 5: [[5, 5, 5], [1, 5, 9]], 7: [[7, 7, 7]]} [[1, 2, 3, 4, 5], …

7
一堆重物
挑战: 您将获得一堆重物的ASCII图像作为输入,并且必须输出一堆重物的组合重量。 格式: 共有5种不同的砝码,分别为1、2、5、10、20 个 Passerees(或其他任意单位)。 权重如下所示,按升序排列: 1: __ |__| 2: ______ |______| 5: ______ | | |______| 10: ______________ | | |______________| 20: ____________________ | | |____________________| 称重将对称放置(如示例图像中所示),而不必按排序顺序放置。称重将共享边界,如果适用: 测试用例: 您也可以将所有单个权重用作测试用例。 __ _|__|_ |______| | | |______| 1 + 2 + 5 = 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.