编程拼图和代码高尔夫

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

11
七人制游戏!谁说的
“ Sevens”游戏的玩法如下:n玩家围成一个圈,从1开始向上计数,然后向左移动(或从一个玩家A到另一个玩家B)。 当一个数p,有一个7在它或者被整除7达到,那么谁说话数量的球员p-1,未来的球员说之后p,必须说p+1和人说话颠倒顺序。例如,如果球员B说6,球员C说7,B说8,和球员A说9。 注意:对于那些想在现实生活中玩游戏的人,如果一个人忘记了一个数字(或者在sevens未说过的版本中,偶然说了一个seven),则将他们从圈子中删除,但是我们将在此挑战中忽略此细节。 挑战本身就是打印在七人制足球的完美游戏中每个玩家应该说出的数字,直到m输入n玩家的输入。 作为一个例子,其中五人,A,B,C,D,和E,是玩,直到他们到达30。他们以这种方式玩 A: 1 6 8 13 15 19 23 30 B: 2 7* 12 16 18 24 C: 3 11 17* 25 D: 4 10 21* 26 28* E: 5 9 14* 20 22 27*29 其中sevens标有*。请注意,在27和28,我们进行了两次反转,并且从D到正常播放E。 请注意,输出不必采用上述格式。我只是以某种方式将其打印出来,以使其更加清晰。 规则 输入是任意顺序的两个整数,m代表要说的最后一个数字,n代表玩家的数量。 输出可以是多个数组或多个字符串,每个播放器一个。如果使用字符串,则不必使用分隔符(尽管,如果可以在代码测试中添加一些分隔符,我们将不胜感激。)如果您实际上可以某种方式将它们打印成一个圆圈,那也是可以接受的,而且也很酷。 输出不必指定哪个玩家是哪个玩家(很明显,第一个玩家是说的那个人1),但是如果由于某种原因未对输出进行排序,则应弄清楚哪个玩家在说哪个数字集。如果您明确指出哪些玩家正在说话,也可以忽略不说话的玩家。我将在下面添加更多可能的输出示例。 这是代码高尔夫,因此最少的字节数获胜。 与往常一样,如果问题仍然不清楚,请告诉我。祝你好运,打高尔夫球! 例子 >>> …

4
解释StackyMath!
是时候实施我新的基于堆栈的语言了!它称为StackyMath。这将是一种基于堆栈的语言,在堆栈上有8种操作以及向堆栈中添加数字的方式。 操作清单: /:司。在堆栈的前2个数字上执行。将结果推回堆栈。 *:乘法。在堆栈的前2个数字上执行。将结果推回堆栈 -:减法。在堆栈的前2个数字上执行。将结果推回堆栈 +:加法。在堆栈的前2个数字上执行。将结果推回堆栈 ^:求幂。在堆栈的前2个数字上执行。将结果推回堆栈 %:模数。在堆栈的前2个数字上执行。将结果推回堆栈 !:阶乘。在堆栈上的最高编号上执行。将结果推回堆栈 D:复制堆栈上的最高编号 用伪代码定义的操作: /: push(pop divided by pop) *: push(pop times pop) -: push(pop minus pop) +: push(pop plus pop) ^: push(pop to the pop) %: push(pop mod pop) !: push(factorial pop) D: t = pop; push(t); push(t) 如何将数字压入堆栈: 将数字添加到堆栈很容易,只需将原始数字放在您需要的程序中即可。如果您需要在堆栈上放置多个数字,可以用逗号(,)分隔它们。您的程序将不需要处理-输入中的数字,如果用户想要一个数字,则应按想要取反的数字,然后按0和-。程序输入中的数字也限制为正整数。 输入: 您的程序应从命令行或从std …

1
箭迷宫逃生
题 您有一个50 x 50的字符数组。每个单元格都有一个箭头,指向四个方向中的任何一个。没有单元格为空。输入单元格时,必须按箭头指定的方向退出它。箭头也可能指向您来自的方向,从而导致死角。 您可以从迷宫最外边界的任何单元开始,找到一条进入迷宫的路径,并导致您从其他某个单元退出。输入将以包含<,>,^和v的数组的形式给出。输出将是一位数字(布尔值,整数或字符,将执行任何操作),其值为0(表明该任务是不可能的)或1(表明您拥有完成了任务)。 示例(实际数组将大于此) ^ v < > > < v < v > v ^ 输出将是 1个 因为您可以从右侧的<输入,这将导致您通过路径“ <v v”从底部v退出 任务是编写最短的代码,将迷宫作为输入,并确定规则中指定的路径,并输出一位数字0或1 也允许输出TRUE和FALSE而不是实际数字。
14 code-golf  maze 

5
整个字母
整个字母 在此挑战中,您很难记住字母。为了避免这种情况,您可以上下移动字母,直到找到字母为止。 因为您希望代码具有可移植性,所以将使用字母块来编写代码。您的字母块数量有限,因为大多数字母块都被盗了,因此您需要确保代码尽可能短。 例子 输入/输出对由空白行分隔: Ac ABc Ad ABcd fA fedCBA adB abcdcB Hello, World! HGfefghijkllmno, WVUTSrqpopqrqponmlkjihgfed! 挑战 您的目标是将相邻字母与A-Za-z它们之间所有的字母中间字母()链接在一起。如果大小写不同,则应在中间转换大小写。如果资本不能在中间平均转换,则在中间之后分解。如果字符不是字母字符,则不应进行任何转换。 获奖 这是代码高尔夫球,因此以字节为单位的最短代码胜出! -10%奖金:如果您的代码链接数字
14 code-golf  string 

12
所有人都说……
目标给定不包含字符[或的文本输入],请执行以下操作: 对于Amen具有至少一个大写字母的每个实例(因此,所有Amen不包含的实例amen),都输出相同的名称Amen(保留大写)。 对于/all the people said[?: ]/i(这是一个正则表达式)的每个实例,还输出Amen(任何情况都可以)。 在每个输出之后,您可以选择任何常量分隔符,例如换行符,空格或什么都不做。 这是一个代码高尔夫球,因此以字节为单位的最短程序获胜。 IO范例 Input: I said AMEN! AMEN, PEOPLE! Output: AMENAMEN ; any separator is fine, I choose none. Input: amen amen amen amen Output: ; nothing Input: ; empty Output: ; nothing Input: *blah blah blah* And all the people said? Output: …

22
字符串压缩和排序
给定一个字符串列表,输出一个单个字符串,该字符串是通过从每个位置的每个字符串中提取一个字符,然后按ASCII序号对其进行排序,然后将它们附加到输出字符串中而形成的。换句话说,对于n输入字符串,n输出的第一个字符将是按顺序排序的每个输入的第一个n字符,输出的第二个字符将是按顺序排序的每个输入的第二个字符,因此上。您可以假设这些字符串的长度均相等,并且至少会有一个字符串。所有字符串将仅由ASCII可打印字符组成(序号32-127)。 Python中的参考实现(在线尝试): def stringshuffle(strings): res = '' for i in range(len(strings[0])): res += ''.join(sorted([s[i] for s in strings],key=ord)) return res 例子: "abc","cba" -> "acbbac" "HELLO","world","!!!!!" -> "!Hw!Eo!Lr!Ll!Od" 规则 禁止出现标准漏洞 这是代码高尔夫球,因此最短答案以字节为单位 排行榜 这篇文章底部的堆栈摘录从答案a)生成了排行榜,a)是每种语言的最短解决方案列表,b)则是总体排行榜。 为了确保您的答案显示出来,请使用以下Markdown模板以标题开头。 ## Language Name, N bytes N您提交的文件大小在哪里。如果您提高了分数,可以将旧分数保留在标题中,方法是将它们打掉。例如: ## Ruby, <s>104</s> <s>101</s> 96 bytes 如果您想在标头中包含多个数字(例如,因为您的分数是两个文件的总和,或者您想单独列出解释器标志罚分),请确保实际分数是标头中的最后一个数字: ## Perl, 43 + …
14 code-golf  string 

17
代码高尔夫:转发sdrawkcaB sdrawkcaB转发转发sdrawkcaB
任务 用户输入一个句子-仅单词。除字母或空格外的任何输入(包括整数和标点符号)都应引发异常:“句子只能使用字母”。 输出具有一种模式,其中某些单词是反向的,而其他单词是正常的。 模式从正常单词开始,接下来的两个单词反转,然后接下来的两个单词正常,模式继续。 以下是单词应为正常位置和单词经反转位置的示例: 正常-反转-反转-正常-正常-反转-反转-正常... 输入范例 她在海边卖贝壳 输出范例 她在海岸边偷走贝壳 附加规则 如果使用大写字母,则它们应保留在最初张贴的字母上。 最初在输入上发布的任何多个空格都应减少为一个空格。例如Programming Puzzles and Code Golf变成Programming selzzuP dna Code Golf 最短的代码胜出!! 祝您编程愉快...

4
计算给定大小的阿贝尔群
背景 上一次,我们计算了给定大小的组,这不是一个简单的问题。 这次,我们将仅计算Abelian组,即具有可交换运算的组。形式上,一组(G,*)是阿贝尔如果X * Y = Y * X为所有的x,y在ģ。 这种方法使问题变得更加简单,因此我们将有效地对其进行计数。 任务 编写一个程序或函数,该程序或函数接受一个非负整数n作为输入,并打印或返回n阶的非同构阿贝尔群。 一种计算组数的方法(将用A(n)表示)是通过观察以下内容: A(0)= 0 如果p是素数,则A(p k)等于k的整数分区数。(由OEIS A000041提供) 如果n = mk,并且m和k是互质的,则A(n)= A(m)A(k)。 您可以使用此方法或任何其他方法来计算A(n)。 测试用例 Input Output 0 0 1 1 2 1 3 1 4 2 5 1 6 1 7 1 8 3 9 2 10 1 11 1 …

25
棋盘上的棋子数
介绍 普通的棋盘包含8 x 8 = 64个正方形: 您可以看到总共有 12个白色小块。黑白始终具有相同数量的碎片。如果棋盘上还有其他棋子,这些棋子将相邻,这是此挑战所不允许的。为了说明问题,下面是一些示例: 应对这种挑战的最小木板为3 x 3: 您可以看到最大件数等于2。因此,当给定N = 3时,您需要输出2。如果输入为N = 4,则得到以下结果: 您可以看到最大数量也是2。因此,对于N = 4,输出应为2。对于N = 5,输出应等于5: 例子 STDIN: 3 STDOUT: 2 STDIN: 4 STDOUT: 2 STDIN: 5 STDOUT: 5 STDIN: 6 STDOUT: 6 STDIN: 8 STDOUT: 12 规则 您提交的内容必须是一个程序或函数等,它需要一个整数并输出或返回板上的棋子数 您可以放心地假设输入是非负整数> 2 这是代码高尔夫球,因此字节最少的程序将获胜! 请注意,板左下方的正方形始终是深色的。作品只能放在深色方块上 你必须整整地占据一排

1
制作(软件)调制解调器!
目的 设计一个MO dulator / DEM odulator对准确地传送数据尽可能快地经模拟普通老式电话服务(POTS) 。 脚步 生成一些随机(/dev/random或类似数据)的数据,将需要3-4秒来传输 使用您的调制器调制数据以生成音频文件 通过POTS模拟器传递音频文件。如果您没有Python / Scipy,则可以使用表单上传文件,或者发出JSON API请求。 将音频文件解调回二进制数据 验证输入和输出是否相等*(每1000位中的限制1个会损坏) 得分是传输的位数除以音频文件的长度(位数/秒) 规则 输入文件必须为3-4秒,44.1 kHz,单声道。 以30 dB的SNR运行模拟器(默认设置) 解调器必须以不超过10 -3(每千位1个)的误码率重建传输的数据。 不允许数字压缩(即压缩数据。这超出了挑战的范围。) 请勿尝试将数据推入4 kHz以上的频率。(我的过滤器并不完美,但它们的抽头数量相对来说相当像POTS。) 如果您的调制解调器协议需要简短的前同步码(不超过1秒)来同步/校准接收器,则不会受到影响。 如果可能的话,请将音频文件存放在可访问的地方,以便我们听到嘟嘟声。 例 这是一个示例笔记本,通过简单的“开-关键控”(包括音频样本!)演示了调制/解调。 它将得分为100(位/秒)。请注意,它的发射信噪比差得多,为5 dB。

1
计数坎宁安链
素数总是让人着迷。2300年前,欧几里得在他的《元素》中写道 质数是仅由一个单位测量的质数。 这意味着素只能被 1(或本身)。 人们一直在寻找素数之间的关系,并提出了一些非常奇怪的东西(如“有趣的”)。 例如,一个索菲·热尔曼质数是一个主要p针对2*p+1也是素数。 一个安全素是一种主要p用于哪些(p-1)/2也是黄金,而这正是一个索菲·热尔曼质数的倒退状态。 这些与我们在此挑战中寻找的东西有关。 一个坎宁安链型我是一系列素数,其中除了最后一个的每一个元素是的索菲·热尔曼质数,而除了第一个的每一个元素是一个安全的黄金。该链中元素的数量称为它的length。 这意味着我们从素数开始p计算q=2*p+1。如果也q为质数,则我们有长度为2的I型Cunnigham链。然后进行测试2*q+1,以此类推,直到下一个生成的数字为复合数为止。 II型坎宁安链是按照几乎相同的原理构造的,唯一的区别是我们检查了2*p-1在每个阶段。 坎宁安链的长度可以为1,这意味着2 * p + 1和2 * p-1都不是素数。我们对这些不感兴趣。 坎宁安链的一些例子 2启动长度为5的I型链。 2, 5, 11, 23, 47 下一个构造的数字95不是素数。 这也告诉我们,那5,11,23和47不启动类型的任何链我,因为这将有前述的元素。 2也开始长度为3的II型链。 2, 3, 5 接下来是9,这不是素数。 让我们尝试II11型(之前我们将其排除在I型之外)。 好吧,接下来是下一个,它不是素数,因此该“链”的长度为1,我们不将其计入此挑战。21 挑战 写一个程序或功能,给定一个号码n作为输入,写入/返回的起始数第n个的坎宁安链I或II型的至少长度为2,后跟一个空格,随后链的类型它开始(我或II),然后是冒号,然后是该类型链的长度。万一素数同时启动两种类型的链(类型I 和型 II型),则首先计算型链。 例: 2 I:5 请记住,这n可能是任何类型的先前启动链的一部分,在这种情况下,不应将其视为该类型链的起始编号。 让我们看看这是如何开始的 我们从开始2。由于它是第一个素数,因此我们可以确定没有链从包含的较低素数开始2。 类型I中的下一个数字将是2*2+1 == 5。5是素数,因此我们已经有了至少长度为2的链。 我们将其视为第一条链。那II型呢?下一个号码是2*2-1 == 3。3是素数,因此II型的链长也至少为2。 …

5
是L凸的吗?
背景 甲四角被称为L-凸,如果有可能从任何瓦到任何其他瓦片行程由L形路径,即,云在基本方向并且至多一次改变方向的路径。例如,1图中的s 的多米诺骨牌 0 0 1 1 1 0 1 1 1 1 0 0 1 1 0 0 0 0 不是L凸的,因为从左下角1到右上角的两个L形路径1都包含0: 0>0>1>1>1 0 ^ ^ 1 1 1 1 0 0 ^ ^ 1>1>0>0>0 0 但是,1此图中s 的多米诺是L凸的: 0 1 1 1 0 0 1 1 1 1 1 1 …

6
知己号码
知己号码 让x是任意的基础上,使得一个整数D是其数字的阵列。x如果n是1且介于的长度之间,则为Confidant Number D: D[n+1] = D[n] + D[n-1] + ... + D[1] + n 例如,以34910为底的数字。如果我们为该数字标记索引,则具有以下内容。 Index Digit ----- ----- 1 3 2 4 3 9 从第一个数字开始,我们有1 + 3 = 4,它产生下一个数字。然后,使用第二个数字3 + 4 + 2 = 9,再次产生下一个数字。因此,该号码是密友号码。 给定一个整数,其底数在1到62之间,请计算该底数的所有Confidant Number,并输出它们的列表,并用换行符分隔。您可以假设给定的基数有有限数量的Confidant Number。 对于大于9的数字,请使用字母字符A-Z,对于大于数字的数字,请Z使用字母字符a-z。您不必担心超出的数字z。 它们不必以任何特定顺序输出。 样本输入: 16 样本输出: 0 1 2 3 4 …
14 code-golf  number 

7
伪随机细胞自动机
介绍 在这个挑战中,我们将使用非常差的伪随机数来模拟某个概率的细胞自动机。元胞自动机是通过以下本地规则在二进制字符串上定义的。假设一个单元格的左邻居和该单元格本身具有状态a和b。 如果为min(a,b) == 0,则的新状态b为max(a,b)。 如果为min(a,b) == 1,则b从中随机选择的新状态{0,1}。 下图显示了单个的可能的10步演变1。 1 11 101 1111 11001 101011 1111111 10001001 110011011 1010111101 请注意,两个相邻的1s有时如何演变为1,有时演变为,并且0最边界位始终1是s。您的任务是产生这种形式的细胞自动机进化。 输入项 您的输入是一个正整数n(表示要显示的行数),以及一个非空的位列表(L我们将其用作随机性来源)。 输出量 您的输出是一个列表列表或2D位数组,如上图所示,描述了单个对象1在n时间步长上的演变。0如果需要,可以用s 填充输出以获取相等长度的行,但不能以0s开头。 元胞自动机中的随机选择必须从列表中得出,L用尽时会跳回到开头。更明确地讲,如果输出从上到下,从左到右一次遍历一行,那么连续的随机选择将形成L重复所需次数的列表。 例 假设输入是n = 7和L = [0,1,0]。然后,细胞自动机在以下7个步骤中演化如下,其中我们v在每个随机选择上方都放置了一个右键: [1] [1,1] v [1,0,1] [1,1,1,1] v v v [1,1,0,0,1] v [1,1,1,0,1,1] v v v [1,0,0,1,1,1,1] 如果我们读取所有标有a的位,则会v得到01001001,该值L重复2.66次。下一个随机位是0。 规则和计分 您可以编写完整的程序或函数。最低字节数获胜,并且不允许出现标准漏洞。输入和输出的确切格式不重要(在合理范围内)。 …

2
Karel J. AlphaBot序列生成器
分数 输入提交内容后,将填写此部分。 正常 1. bopjesvla Perl 54 2. edc65 Javascript (ES6) 91 3. name language score 4. name language score 5. name language score 奖金回合 1. name language score 2. name language score 3. name language score 4. name language score 5. name language score Karel J.AlphaBot 背景 Java的热门入门课程是Karel J. …
14 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.