编程拼图和代码高尔夫

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

3
PNZ(按顺序猜测3个唯一数字)
从很久以前的编程书籍中的挑战来看,PNZ是一款游戏,用户必须以正确的顺序猜测三个唯一的数字。 规则: 生成一个无重复数字的随机3位数字。(这是用户试图猜测的) 用户输入3位数字的猜测值,该猜测值将由程序进行评估。 在正确的位置为每个正确的数字输出“ P”。 在错误的位置为每个正确的数字输出“ N”。 仅当没有正确的数字时才输出“ Z”。 继续接受输入,直到所有数字正确并且在正确的位置,然后输出“ PPP”,后跟在新行上进行的猜测数目。 注意事项: “正确的数字”是指猜测中的一位数字也是随机的3位数字中的一位数字。 “正确的位置”表示它是“正确的数字”,并且与3位随机数位于同一位置。 输出的顺序应该是所有“ P”的开头,然后是“ N”,或者如果没有正确的地方,则只有“ Z”。 如果一个输入中含有重复的数字,“P”的优先级高于“N”(例如:Number: 123 Input: 111 Output: P) (可选)输入的长度不完全是三位数的字符不应该被评估,也不应该计入连续的猜测总数中 如果生成的数字是123的示例 > 147 P > 152 PN > 126 PP > 123 PPP 4 例如,如果生成的数字是047 > 123 Z > 456 N > 478 NN …

3
标记基于堆栈的语言
我一直在研究另一种称为Stackgoat的基于堆栈的高尔夫语言。在这个挑战中,您将为Stackgoat(或实际上是任何通用的基于堆栈的语言)编写Tokenizer。 例子 "PPCG"23+ ["PPCG", '23', '+'] 'a "bc" + ['"a"', '"bc"', '+'] 12 34+-"abc\"de'fg\\" ['12', '34', '+', '-', '"abc\"de'fg\\"'] "foo ['"foo"'] (empty input) [] ' "" ['" "', '""'] 规格 您需要处理的三种类型是: 弦乐,什么内"" 数字,任何数字序列 运算符,除空格外的任何其他单个字符 除非将其留在字符串中或将两个数字分隔开,否则实际上将忽略空格。 字符串/字符规范: 字符串以分隔",当\遇到时,下一个字符应转义。 字符前面加a ',后面的字符'应转换为字符串文字。'a->"a" ' 后面总会有一个角色 右引号应自动插入 规则: 没有形式eval允许 输入输出: 可以通过STDIN,函数参数或您的语言等效输入。 输出应为数组或您的语言最接近的等效数组。
15 code-golf  parsing  code-golf  hexagonal-grid  code-golf  string  code-golf  string  code-golf  combinatorics  code-golf  ascii-art  code-golf  string  game  counting  code-golf  arithmetic  complex-numbers  code-golf  string  code-golf  decision-problem  hexagonal-grid  code-golf  string  sequence  code-golf  number  arithmetic  code-golf  ascii-art  code-golf  ascii-art  code-golf  string  arithmetic  code-golf  number  simulation  code-golf  number  arithmetic  code-golf  string  sequence  unicode  code-golf  string  ascii-art  balanced-string  code-golf  number  clock  code-golf  ascii-art  number  code-golf  math  number  sequence  code-golf  string  ascii-art  balanced-string  code-golf  math  string  popularity-contest  graphical-output  image-processing  code-golf  string  permutations  code-golf  string  code-golf  random  code-golf  string  cryptography  palindrome  code-golf  chess  code-golf  math  array-manipulation  topology  code-golf  math  sequence  code-golf  keyboard  classification  code-golf  string  sequence  code-golf  natural-language  code-golf  math  number  sequence  sorting  code-golf  sequence  combinatorics  grid  tic-tac-toe  code-golf  geometry  code-golf  number  restricted-source  new-years  expression-building 

6
在六角形网格上运动
给定一系列代表六边形网格上运动的字符的输入,输出“指针”的最终坐标。 我们的六边形将按以下方式编号(想象一个矩形网格,每个奇数编号的列都会稍微向下移动): _____ _____ _____ _____ / \ / \ / \ / \ / -3,-2 \_____/ -1,-2 \_____/ 1,-2 \_____/ 3,-2 \ \ / \ / \ / \ / \_____/ -2,-1 \_____/ 0,-1 \_____/ 2,-1 \_____/ / \ / \ / \ / \ / -3,-1 \_____/ -1,-1 …

6
将2d数组显示为ASCII表
任务是显示给定数组的ascii表。 输入值 输入是2D矩阵。矩阵的行长与数组的长度相同。另外,您也可以输入2D矩阵,第一行是标题。外部尺寸是该行。 输入示例: [["License","2008-05-08","2009-03-11","2011-11-22","2013-08-12","2015-11-19"],["GPLv2","58.69%","52.2%","42.5%","33%","23%"],["GPLv3","1.64%","4.15%","6.5%","12%","9%"],["LGPL 2.1","11.39%","9.84%","?","6%","5%"],["LGPL 3.0","? (<0.64%)","0.37%","?","3%","2%"],["GPL family together","71.72% (+ <0.64%)","66.56%","?","54%","39%"]] 输出量 表的输出如下所示。 +---------------------+-------------------+------------+------------+------------+------------+ | License | 2008-05-08 | 2009-03-11 | 2011-11-22 | 2013-08-12 | 2015-11-19 | +---------------------+-------------------+------------+------------+------------+------------+ | GPLv2 | 58.69% | 52.2% | 42.5% | 33% | 23% | | GPLv3 | 1.64% | 4.15% | 6.5% …

13
回文素因子
回文质素问题很普遍,但这不是这个问题的实质。在这个挑战中,数字不一定是回文,它的主要因素就是如此。 任务 您的代码必须采用单个正整数作为输入。然后,在连接时检查该整数的质数因子的任何排列是否回文。如果是这样,则输出其中之一(因子列表,而不是串联字符串)。否则,您必须输出-1。 这是代码高尔夫球,因此以字节为单位的最短代码胜出! 测试用例 11 -> [11] 4 -> [2, 2] 39 -> [3, 13] 6 -> -1 1207 -> [17, 71] 393 -> -1 2352 -> [2, 2, 7, 3, 7, 2, 2]

5
玩单词链
在我小的时候,我经常玩一个叫做Word chain的文字游戏。这很简单。第一个玩家选择一个单词;下一位玩家说另一个单词,该单词以与上一个单词结尾相同的字母开头。这将一直持续下去,直到有人放弃!诀窍是,您不能两次使用相同的单词(除非每个人都忘记了甚至使用过该单词!)。通常,我们会讨论一个特定的主题,以使其难度更大。但是现在,我希望您编写一个程序来为我执行此操作。 挑战 编写完整的程序或函数,以使用给定的一组单词和起始单词查找所有最长的单词链。 这是代码高尔夫球,因此最短的代码获胜! 输入值 有两个输入:一个列表和一个起始词。起始词将不在列表中。输入全部为小写ASCII,并且列表中将不包含重复的单词。 输出量 列表中的所有单词序列,使得: 起始单词是序列中的第一个单词。 每个后续单词均以与前一个单词的最后一个字母相同的字母开头。 序列的长度是最长的。 如果有多个最长的序列,请全部输出。 该序列不一定需要包含所有列表单词。有时这是不可能的(请参见测试用例)。同样,任何单词都不能使用两次! 测试用例 In: [hello, turtle, eat, cat, people] artistic Out: [artistic, cat, turtle, eat] In: [lemonade, meatball, egg, grape] ham Out: [ham, meatball, lemonade, egg, grape] In: [cat, cute, ewok] attic Out: [attic, cute, ewok] In:[cat, cute, …

1
做连锁规则
在差异化和整合方面,我们面临着许多挑战,但是在解决相关费率问题上没有挑战。因此,在此挑战中,您将获得一堆导数(它们将是数字,而不是任何变量),并且必须找到另一个导数。 输入将以换行符分隔的方程式列表形式出现dx/dt = 4。可以有小数和负数。 输入将以一个差分结束,您必须找到一个差分。您可以假设总是会有足够的信息来找到它,但是也可能有多余的信息。 您可能还必须考虑反函数的导数,例如,如果有dy/dx = 3,您也知道dx/dy = 1/3。 您的输出将采用形式dy/dt = 6。所有空格等必须相同。假设所有变量总是一个字母(它们可以是大写字母,也可以是d)。 这是代码高尔夫球,因此以字节为单位的最短代码胜出! 测试用例 dy/dx = 4 dx/dt = 5 dy/dt answer: dy/dt = 20 dy/dx = -3 dt/dx = 3 dy/dt answer: dy/dt = -1 dA/dt = 4 dA/dC = 2 dC/dr = 6.28 dr/dt answer: dr/dt = …

2
Befunge脑筋急转弯
介绍 对于那些想知道Befunge到底是什么的人,它是Chris Pressy在1993年提出的一种基于二维堆栈的语言。我在Befunge-93中做了7个需要解决的难题。这是一个实验性的挑战,但我认为值得一试:)。在Befunge-93中使用的所有命令的完整列表可以在此处找到。 怎么玩? 这项任务有点像没有警察的强盗。基本上是为了获得分数而破解提交内容。每个难题都包含问号。必须将其替换为range 32 - 127中包含空格的任何可打印ascii字符。请参见以下示例: ??????@ 鉴于输出必须为hi。经过一番困惑之后,我们可以发现解决方案是: "ih",,@ 但!您不提供解决方案。那是为了防止作弊。您无需发布解决方案,但可以发布hash。哈希是通过以下代码段生成的: String.prototype.hashCode = function() { var namevalue = document.getElementById("inputname").value; var namenumber = 123;for (var character = 0; character < namevalue.length; character++) {namenumber += namevalue.substring(0, 1).charCodeAt(0);}var hash = 123 + namenumber, i, chr, len;if (this.length === 0) {return 0;}for (i …

3
删除字母同时保持字符串唯一
受启发 这一奇妙的挑战(基于观点和投票的数量)的,以我的拙见,答案太少了。 给定(通过任何方式)字符串列表,返回(通过任何方式)一组字母,当从给定字符串中删除这些字母时,它们(剩余的字符串)的总长度应尽可能小,同时保持每个字母的长度字符串唯一且至少一个字符长。 例子: 给定“日”和“日”;返回“ ay”,因为删除字符“ ay”时给定的字符串将是“ D”和“ d”。 给定“ Hello World!”,“ Hello world。”和“ Hello world”;之所以返回“ Helo Wrd”,是因为删除字符“ Helo Wrd”(带空格)时,字符串将为“!”,“ w。”和“ w”。 给定“世纪”,“十年”,“年”,“月”,“周”,“日”,“小时”,“分钟”和“秒”;返回“ centurdowi”,因为当字符“ centurdowi”给定的单词将是“ y”,“ a”,“ ya”,“ mh”,“ k”,“ ay”,“ h”,“ m”,“ s” ”已删除。 返回集的顺序和格式并不重要。

2
阵列可以改组吗?
背景 非常熟练的卡处理人员能够运用这样的技术:将卡座完美地切成两半,然后完美地插入卡。如果他们从已排序的牌组开始并连续52次完美执行此技术,则牌组将恢复为已排序的顺序。您面临的挑战是将一副纸牌组成一个整数数组,并确定是否只能使用Faro随机排序对其进行排序。 定义 从数学上来说,法鲁混洗是对2 n个元素(对于任何正整数n)的置换,它将位置i(1索引)中的元素移到位置2 i(mod 2 n +1)。我们还希望能够处理奇数长度的列表,因此在这种情况下,只需将一个元素添加到列表的末尾(如果您有一个方便的话,一个小丑即可),然后Faro像上面那样洗净新列表,但是忽略检查列表顺序时添加的虚拟元素。 目标 编写程序或函数,该程序或函数接受整数列表,如果一定数量的Faro混洗会导致该列表以不降序排列(即使该数字为零-小列表也应显示真值),则返回或输出真值。否则,返回或输出错误。 例子 [1,1,2,3,5,8,13,21] => True [5,1,8,1,13,2,21,3] => True [9,36,5,34,2,10,1] => True [1,0] => True [0] => True [] => True [3,2,1] => True [3,1,2] => False [9,8,7,6,5,4,3,2,1,0] => True [9,8,7,6,5,4,3,2,0,1] => False [3,1,4,1,5,9,2,6,9] => False [-1,-1,-1,-2] => True 计分 这是代码高尔夫球,因此以字节为单位的最短源代码获胜。

8
最小总和为n的数字
这里的第一个问题,如果这是重复的或不好的挑战,请不要对我大喊。 介绍 我自己想到了这个挑战,对于初学者来说,这似乎是一个很好的基本难题。这也可能有助于我确定要学习哪种编码语言。 挑战 给定一个小于或等于整数n的数组,从数组中输出或返回最小数目的精确求和n。 您可以选择编写函数或完整程序。 输入值 您可以放心假设0 <= n < 2^31。 接受任何类型的数组或列表(允许vector用于C ++或Java LinkedList),以及n一个可选参数length,该参数指定数组的长度。 您还可以将输入作为用空格分隔的字符串,并n用逗号或空格分隔: 1 5 7 3 7 3 6 3 2 6 3,10 1 5 7 3 7 3 6 3 2 6 3 10 如果更容易。 输出量 输出或从数组中返回总和恰好为的最小数目的数字n。使用上面的示例: 1 5 7 3 7 3 6 3 …

12
由五角形数构成的五角形数
介绍 甲五角数(A000326)由公式生成P Ñ = 0.5×(3N 2 -n) 。或者,您可以只计算使用的点数: 您可以使用公式或上面的gif查找前几个五边形数字: 1, 5, 12, 22, 35, 51, 70, 92, 117, 145, 176, 210, 247, 287, 330, 376, 425, 477, etc... 接下来,我们需要计算x个连续数字的总和。 例如,如果x = 4,我们需要查看P n + P n + 1 + P n + 2 + P n + 3(由4个项组成)。如果五角形的总和也是五角形,我们将其称为五角形五角形。 对于x = …

11
求和
我很喜欢阅读本网站;这是我的第一个问题。欢迎进行编辑。 给定正整数n和m,将m的所有有序分区精确地计算为n个正整数部分,并用逗号和换行符分隔它们。任何顺序都可以,但是每个分区必须恰好出现一次。 例如,给定m = 6和n = 2,可能的分区是对正整数的和,总和为6: 1,5 2,4 3,3 4,2 5,1 请注意,[1,5]和[5,1]是不同的有序分区。输出应与上述格式完全相同,并带有可选的尾随换行符。(编辑:分区的确切顺序无关紧要)。输入/输出通过标准代码高尔夫球I / O进行。 m = 7,n = 3的另一个示例输出: 1,1,5 1,2,4 2,1,4 1,3,3 2,2,3 3,1,3 1,4,2 2,3,2 3,2,2 4,1,2 1,5,1 2,4,1 3,3,1 4,2,1 5,1,1 1周后以字节为单位的最小代码获胜。 同样,请根据需要进行编辑。 附录: @TimmyD询问程序必须支持的整数输入大小。除示例外,没有其他最低要求。实际上,输出大小呈指数增长,粗略地建模为:lines = e ^(0.6282 n-1.8273)。 n | m | lines of output …

7
得分异步囚徒困境游戏
在囚徒困境练习的一轮中,两名选手各自决定在该轮中是合作还是背叛。一回合的得分是: 玩家A和玩家B都合作:双方都得1分 玩家A和玩家B都缺憾:双方都得2分 玩家A配合而玩家B缺陷:与玩家A配合时3分,而与玩家B背离时0分 但是,您不必担心策略:您的程序仅是在计算游戏得分。(如果您已经熟悉了囚徒的困境,那么我在这里的“观点”相当于“入狱年限”。) 您的挑战是要获得代表球员在多个回合中的选择的输入并计算他们各自的总得分。一个球员在小写的提交选择,c以及d(对于合作和缺陷),并以大写其他的提交选择,C和D。这些选择作为字符串提供给您的程序。 通常,处于囚徒困境中的玩家会同时并反复提交动作。但是,在此挑战中,玩家可能一次提交了好几个回合的选择。如果某个球员的举动不合顺序,则计分程序会记住该举动,并将其与对方球员的下一个可用举动进行匹配。 这是一个示例输入字符串: cDCddDDCcCc 为了显示此输入中存在的匹配项,我将分别调用小写和大写字母,并将它们配对: cDCddDDCcCc c dd c c => cddcc DC DDC C => DCDDCC 这些将成对配对: c vs D (3 pts for lowercase-player, 0 pts for uppercase-player) d vs C (0 pts for lowercase-player, 3 pts for uppercase-player) d vs D (2 pts …
15 code-golf 

3
删除连字符
是时候进行新的排版挑战了!在各种文档格式之间复制粘贴时,这是一个常见的问题:连字。虽然它可以减少左对齐布局的参差不齐或在合理的布局中使间距均匀,但如果PDF的构造不正确并且在布局中保留了连字符,这将是您的全部烦恼,从而使复制的文本难以编辑或重排。 幸运的是,如果我们相信那里有无数的自助书,那么,如果您将其视为挑战,那就没有问题了。我相信这些自助书无一例外都涉及PPCG,如果提出挑战,任何问题都将得到解决。您的任务是从文本中删除有害的连字符和换行符,以便可以将其粘贴到任何文本编辑器中。 问题描述 您将编写一个程序或函数来删除连字符和换行符(如果适用)。的输入将是一个字符串stdin(或最接近的替代),或者作为函数的输入。在输出(在stdout或接近的替代的或功能输出)将是“校正”文本。此文本应可直接复制粘贴。这意味着前导或尾随输出都可以,但是在更正文本中间的其他输出(例如,每行的前导空格)则不行。 最基本的情况如下(注意:没有尾随空格) Lorem ipsum dolor sit amet, con- sectetur adipiscing elit. Morbi lacinia nisi sed mauris rhoncus. 应删除有问题的连字符和换行符,以获取 Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi lacinia nisi sed mauris rhoncus. 但是,应注意一些例外情况。 双换行符表示段落分隔符,应保留。 专有名词和名称永远不会跨越两行,除非它们已经包含连字符(例如Navier-Stokes方程)。应删除换行符,但保留连字符。这些情况可以通过仅将首字母大写来识别。 有时,连字符表示一个单词组(例如19世纪和20世纪)。如果这发生在两行之间,则在下一行以前导空格表示。 一个示例:(此示例中表达的观点是虚构的,不一定代表作者的观点;同样欢迎Runge-Kutta-Fehlberg方法的反对者参加此挑战) Differential equations can be solved with the Runge-Kutta- Fehlberg method. …

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.