编程拼图和代码高尔夫

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

9
预测是否以50个字节加注星标
给定一个输入字符串,该字符串包含来自我们的网站聊天室的任何消息,该消息取自以下描述和链接的列表,请输出真实值或虚假值,以尝试预测该消息是否以50个字节或更短的距离加注星标。 您可以使用任何真实或虚假值,但它们必须相同(即,应该只有两个可能的输出,一个真实和一个虚假)。输入将以原始HTML格式给出,其中删除了换行符,并且其中可能包含非ASCII Unicode字符。如果您需要输入UTF-8以外的内容,请在回答中说出来。 从下面的链接列表中,可以正确地预测出聊天消息的最高百分比的人将是对此挑战的胜出者。如果两个给定的提交成功率相同,则较短的提交将获胜。 请提供有关在整个消息集上运行代码并计算正确百分比的说明。理想情况下,这应该是一些样板代码(不计入您的50个字节),这些代码循环遍历肯定的测试用例,并输出您的代码中有多少是正确的,然后对否定的测试用例执行相同的操作。(然后可以通过手动计算总得分(correctPositive + correctNegative) / totalMessages。) 为了使您的代码合理地可测试,必须在5分钟或更短的时间内完成代码,以在合理的现代硬件上完成整个聊天消息列表。 聊天消息的完整列表可以在此处找到,它由1000个最新的已加星标消息(如真实测试用例)和1000个最新的未加星标消息(如虚假测试用例)组成。注意要点中有两个文件。向下滚动约一半以查看未加注星标的消息。

30
作弊多项选择测试
介绍 在学习期间,我试图提出几种欺骗多选测试的方法。它基本上是多项选择答案的压缩版本。该方法如下: 测试答案: BCAABABA 这些可以转换为3个不同的数组,如果当前字母是答案,则表示true或false: B C A A B A B A A: [0, 0, 1, 1, 0, 1, 0, 1] B: [1, 0, 0, 0, 1, 0, 1, 0] C: [0, 1, 0, 0, 0, 0, 0, 0] 将这些数字解释为二进制会压缩很多。但这实际上可以进一步压缩。如果知道A和B的位置,则不需要C的位置。这可以通过按位NOT运算符完成: A: [0, 0, 1, 1, 0, 1, 0, 1] …

30
万圣节高尔夫:2spooky4me挑战!
当前的互联网模因是键入2spooky4me,第二个人按照该(n)spooky(n+2)me模式键入3spooky5me 。 您的任务是以您选择的语言实现此模式。您应该编写一个程序或函数,该程序或函数需要一个值n(来自标准输入,作为函数参数,或最接近的替代项),然后将字符串(n)spooky(n+2)me(不带括号)输出到标准输出,作为函数的返回值或最接近的替代项)。 您的解决方案应该适用于所有输入,从1最多2个(比语言的最大可表示整数值低2个以下)开始(2^32-3例如,对于32位计算机上的C)。 Python中的示例实现: def spooky(n): return "%dspooky%dme"%(n,n+2) spooky(2) -> "2spooky4me" 这是代码高尔夫球,因此禁止标准漏洞,以字节为单位的最短答案为胜! 排行榜 这篇文章底部的Stack Snippet通过答案a)生成了排行榜,a)是每种语言的最短解决方案列表,b)则是总体排行榜。 为确保您的答案显示出来,请使用以下Markdown模板以标题开头。 ## Language Name, N bytes N您提交的文件大小在哪里。如果您提高了分数,则可以通过打败旧分数来保持标题。例如: ## Ruby, <s>104</s> <s>101</s> 96 bytes 如果要在标头中包含多个数字(例如,因为您的分数是两个文件的总和,或者您想单独列出解释器标志罚分),请确保实际分数是标头中的最后一个数字: ## Perl, 43 + 2 (-p flag) = 45 bytes 您还可以将语言名称设置为链接,然后该链接将显示在代码段中: ## [><>](http://esolangs.org/wiki/Fish), 121 bytes 显示代码段 <style>body { text-align: left …
41 code-golf  string 

7
计算Quipu:新世界的十大基础
Quipus是一种古老的装置,在前哥伦布时期被印加人用来在绳子上以10为底的打结位置系统中记录数字,其工作方式如下: 每个结簇都是一个数字,并且有三种主要类型的结:简单的过头结;“长结”,由一个或多个附加转弯的手结组成;和八字形结。 沿线的位置显示10的幂,并且此位置在连续的线束之间对齐。 10个或更高功率的位置上的数字由简单结簇表示(例如,在“十”位位置,连续40个结是四个简单结)。 处于“一个”位置的数字由长结表示(例如,4是四圈结)。由于打结的方式不同,无法以这种方式显示数字1,而在此位置用八字形数字表示。 零表示在适当位置没有结。 细节 对于这个挑战,Quipu的每个链都代表一个数字(不过,如Wikipedia文章所述,您可以在一个链上代表多个数字,在这个挑战中,我们不能)。 结 每个结将由单个ASCII字符表示。 . 代表一个简单的结 : 代表一个长结的转一圈 8 代表八字形结 | 表示数字之间没有结以及定界符。 构建Quipus 遵循以下规则构造Quipu。 股线以位置降序从上到下排列(例如,单位数字将位于股线的底端)。链上的数字由字符(|)分隔。 数字代表的10的幂由它在链上的位置决定,其方式与使用数字系统中的数字索引来计算数字的10的幂相同。也就是说,24a 2处于十位,a 4处于单位位,将由两个结表示,一个定界符(|),然后是四个结。 处于相同位置的数字朝着链的底部对齐。如果某个位置的一位数字的结数少于同一位置上其他数字的其他数位,则这些结点的不存在用(|)表示。 连续的简单结(.)代表其位置的值。 每个数字至少由1个字符表示。当quipu中所有数字的数字值均为0时,表示不存在结(|)。 单位所处地方特殊对待。单位位置的一个由八字形结(8)表示。单位位置中的两个或多个值由连续的长节(:)表示。 当Quipo中所有数字的单位数字均为0时,不打印结点,但保留十位数的结尾定界符。 单位数字后没有定界符。 规则 输入将包含可通过任何默认输入方法接收的非负整数的非空列表。您可以假设这些整数均小于或等于2147483647或2^31-1。尽管测试用例是用空格分隔的,但是您的输入格式可以以任何方便您的语言的方式来分隔输入,无论是逗号分隔,换行分隔,数组分隔等等。 输出由根据上述规则构造的单个Quipu组成。可以通过任何默认输出方法给出输出。 您的代码应该是程序或函数,尽管它不必是命名函数。 打结需要花费一些时间,以节省时间,使您的代码越短越好。 与往常一样,如果问题仍然不清楚,请告诉我。祝你好运,打高尔夫球! 例子 输入: 5 3 1 0 输出: :||| :||| ::|| ::|| ::8| 输入: 50 …
41 code-golf  number 

30
掩盖列表中的零
受到这个SO问题的启发 作为输入,您将得到一个非空的整数列表,其中第一个值保证为非零。要构造输出,请从列表的开头开始,沿途输出每个非零值。当您遇到零时,请重复最近添加到输出中的值。 您可以编写程序或函数,并让输入/输出采用任何方便的格式,只要仍为整数的有序序列,该格式就不会编码额外的信息。如果从程序输出,则可以打印尾随换行符。除了该尾随的换行符之外,您的输出应为提交的可接受输入。 以字节为单位的最短代码获胜。 测试用例 [1, 0, 2, 0, 7, 7, 7, 0, 5, 0, 0, 0, 9] -> [1, 1, 2, 2, 7, 7, 7, 7, 5, 5, 5, 5, 9] [1, 0, 0, 0, 0, 0] -> [1, 1, 1, 1, 1, 1] [-1, 0, 5, 0, 0, …

4
枚举有效的Brainf ** k程序
Golunar / 一元是编码的所有有效的方式Brainfuck程序,但它不是一个枚举,因为最自然的号码不对应于一个有效的程序。 出于此挑战的目的,假设使用了无限的双倍磁带且没有任何注释,即Brainfuck程序在且仅当其仅由字符组成<>+-.,[]并且所有左括号和右括号都匹配时才有效。 例如,空的程序,,[+][-].,[>+<[--].]并且+[+[+][+[+]+]+]+.是有效的Brainfuck方案,同时][,并a[]没有。 任务 写接受的有效Brainfuck程序作为输入并返回的自然数(程序或函数1,2,3,...),有以下限制: 对于所有有效的Brainfuck程序,生成的输出必须不同。 对于每个自然数n,必须有一个有效的Brainfuck程序,当该程序作为输入提供时,会生成输出n。 附加规则 对于100个字节或更少字节的Brainfuck程序,您的程序或函数必须在一分钟内完成。 这意味着在匹配输入之前,您不能迭代所有有效的Brainfuck程序。 适用标准代码高尔夫球规则。

30
输入uniqchars!
给定一个包含可打印ASCII字符的字符串,请按原始顺序产生一个包含其唯一字符的输出。换句话说,输出与输入相同,不同之处在于如果以前出现过char,则将其删除。 不能使用用于在数组中查找唯一元素的内置unique函数(例如,MATLAB具有执行此操作的功能)。这个想法是手动完成的。 更多详情: 允许使用功能或程序。 输入和输出可以采用函数参数,stdin / stdout(甚至对于函数)的形式,也可以混合使用。 如果使用stdin或stdout,则将字符串理解为chars序列。如果使用函数自变量,则可能需要将字符序列括在引号或等效符号中,以供选择的编程语言定义字符串。 输出应该是仅包含输入的唯一字符的字符串。因此,没有多余的换行符,空格等。唯一的例外是:如果输出在stdout中显示,则大多数显示函数都会添加尾随\n(将字符串与接下来的内容分开)。因此在stdout中可以接受一个尾随\n。 如果可能,请发布一个指向在线解释器/编译器的链接,以便其他人可以尝试您的代码。 这是代码高尔夫,因此以字节为单位的最短代码获胜。 假设stdin和stdout的一些示例: 输入字符串: Type unique chars! 输出字符串: Type uniqchars! 输入字串 "I think it's dark and it looks like rain", you said 输出字符串 "I think'sdarloe,yu 输入字串 3.1415926535897932384626433832795 输出字符串 3.14592687
41 code-golf  string 

1
给一张桌子,放在椅子上
挑战 将为您提供一个表,以ASCII |和绘制_。您的任务是在椅子周围摆放椅子。 例 输入: ____ | | | | | | | | |____| 输出: _^_^_ < > | | < > | | <_ _ _> v v 那些椅子是用<>和制成的v^。 另一个例子: 生产线中必须有尽可能多的椅子。 _____ | |_____ | | | | | | | _____| |_____| _^_^_ < |_^_^_ | > …
41 code-golf 

9
用普通英语写奎因
写一个包含由单个英文空格分隔的真实英语单词的藜。“单词”定义为仅包含小写和大写字母的字符串(/[a-zA-Z]+/在正则表达式中)。要“真实”,您的单词必须由官方的Scrabble词典识别。 我使用的是Scrabble字典,因为它对有效和无效给出了明确的答案。普通词典中的灰色区域过多。注意,“ A”和“ I”(更不用说“ quine”)不是有效的拼写单词。 在大多数编程语言中,由于仅使用字母和空格来编写奎因几乎是不可能的,因此您可以选择用您选择的字符替换单词之间的单个空格。您还可以选择将字符追加到第一个单词的开头和最后一个单词的结尾。这些添加的字符可以是字母(az,AZ)以外的任何字符(包括换行符和非ASCII )。不过,添加它们会受到惩罚(请参阅评分)。 细节 通常,这些木马可能不会读取或访问其自己的源代码。(我想说的是HQ9 +的 Q命令违反了这一点。) 输出应转到stdout或类似的替代方法。没有输入。 这些单词不需要正确地大写。他们在任何地方都可以有大写字母和小写字母。单词的顺序没有任何意义。 在您的程序中,一个单词的使用次数不得超过3次。大写的单词仍然是同一个单词(例如,“ DOG”,“ dog”和“ dOg”都是同一个单词)。 使用如PHP或HTML,可以只是语言猫他们的内容被认为是微不足道的漏洞,是不允许的。 该程序必须包含至少一个单词。 计分 您的分数是程序中“真实单词”的数量加上以下惩罚: 对于每个被另一个字符替换的空格,+ 1 您在第一个单词前添加的每n个字符n n(是,n为幂n) 在最后一个单词之后每添加n个字符n n 例如程序 We all LIKE PROgraMmING 得分为4,因为它包含4个单词;没有添加或替换任何空格的字符。它的输出当然是We all LIKE PROgraMmING。 该程序 !We@all LIKE#PROgraMmING- = 将得分4 + 2 + 1 + 27 = 34; 单词4,替换空格2,!前面的1,- …

16
String.prototype.isRepeated
更新:isaacg的Pyth提交是赢家! 你们中的许多人一定听说过,城镇中有一个比较凉爽的JavaScript版本(阅读ES6),该版本中的方法String.prototype.repeat可以使您 "Hello, World!".repeat(3) 并得到 "Hello, World!Hello, World!Hello, World!" 作为输出。 您的工作是用您选择的语言编写一个函数或程序,以检测字符串是否经过了这种转换。 即,输入字符串可以表示为n较小字符串的精确重复次数。如果字符串可以是,则输出(作为函数的return语句或STDOUT)应为true;如果字符串不能表示为较小字符串的重复,则输出为false。 一些样本输入: "asdfasdfasdf" // true "asdfasdfa" // false "ĴĴĴĴĴĴĴĴĴ" // true "ĴĴĴ123ĴĴĴ123" // true "abcdefgh" // false 请注意,最后一个输入为false,因此n应大于1 完整规则 编写任何语言的函数/程序以输入(通过函数参数/命令行args / STDIN)字符串 如果给定的字符串是由较小的字符串的精确重复形成的,则返回/打印真实值,至少重复两次。 理想情况下,输入字符串的最大大小为Infinity 字符串可以具有所有可能的ASCII字符 这是一个代码高尔夫球,因此以字符为单位的最小代码获胜。
41 code-golf  string 

30
是a年吗?
这个挑战很简单。您将输入从1801到2400的年份,如果不是output年则输出。 您的输入将没有换行符或尾随空格: 1954 您将以自己喜欢的任何方式输出,以清楚地告诉用户是否是a年(我将接受y或n作为是/否)。 您可以在此处获得of年列表:http : //kalender-365.de/leap-years.php 我要指出的是leap年并非总是4年。1896年是a年,但1900年不是a年。此“跳过”之后的年份是: 1900 2100 2200 2300 测试用例: 1936 -> y 1805 -> n 1900 -> n 2272 -> y 2400 -> y 编辑:这是基于标准的格里高利历:http : //www.epochconverter.com/date-and-time/daynumbers-by-year.php

14
迷宫生成
我知道有一个与此(此处)类似的(旧)线程,但是我想进行一些修改来重新启动它。 目标:使用您选择的算法生成外观随机的迷宫,然后以图形方式输出迷宫(打印计数)。 宽度和高度由您确定。 从至少一个入口到至少一个出口应该有至少一条路径。 迷宫的格式(如何显示,标记入口或出口)也取决于您。 越漂亮越好。 不鼓励琐碎的迷宫(例如空白迷宫,格子迷宫,大小为1x1的迷宫)。 如果结果合理,则允许并鼓励迷宫中的循环。 鼓励语言滥用。 迷宫应该看起来相当随机(但是完全确定性的(例如混沌)算法也可以)。 编辑:这里的主要重点是使最小的实现。但是,我想在此限制范围内留出一些余地,以鼓励保持柔韧性。我故意留下了迷宫开放式的“特征”,但是作为一个粗略的指导原则,您应该尝试将最多的爆炸归入最小的词汇量。

12
在ASCII艺术中绘制渐变
任务描述: 编写尽可能短的程序以绘制ASCII艺术中的径向渐变。输出网格的大小是预定义的。提供渐变的中心点和字符作为程序的输入。 渐变大小为70×25个字符单元格,具有以下规格 网格的左上角具有坐标(0,0)。 包含所提供字符的渐变被映射为35个长度单位。长度单位是一个字符高和两个字符宽(因为monospaced fonts通常字符的高度是宽度的两倍)。 在这35个LU中,当前距中心点的距离乘以渐变字符数 / 35即可得到该点要绘制的字符的索引。索引的小数在此处四舍五入。长度单位应保留为实数。(当然,如果结果相同,则实现无关紧要。) 超过这35 LU,仅出现最后一个渐变字符。但是,由于最后一个梯度“带”已经在 35 LU 之内开始,因此最后一个字符开始已经出现在35 LU之内。 输入: 输入在标准输入上给出,由三行组成,每行以换行符终止: 渐变中心点的x坐标 渐变中心点的y坐标 用于绘制渐变的字符。这些可能包括空格。 输出: 输出是上面标准输出上的规则所定义的渐变。标准错误流将被忽略。渐变的每条线均以换行符终止。除输入定义的字符外,不能出现其他字符。 样本输入1: 58 14 .:;+=xX$& 样本输出1: &&$$$$$$$$XXXXXXXXxxxxxxxxx===========++++++++++++++++++++++++++++++++ &$$$$$$$$XXXXXXXXxxxxxxxxx=========+++++++++++++;;;;;;;;;;;;;;;;;;;;;+ $$$$$$$$XXXXXXXXxxxxxxxx=========+++++++++++;;;;;;;;;;;;;;;;;;;;;;;;;; $$$$$$$XXXXXXXXxxxxxxxx========++++++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;; $$$$$$XXXXXXXXxxxxxxxx========+++++++++;;;;;;;;;;;;;:::::::::::::;;;;; $$$$$XXXXXXXXxxxxxxxx=======+++++++++;;;;;;;;;;;:::::::::::::::::::::; $$$$$XXXXXXXxxxxxxxx=======+++++++++;;;;;;;;;::::::::::::::::::::::::: $$$$XXXXXXXXxxxxxxx=======++++++++;;;;;;;;;::::::::::::::::::::::::::: $$$$XXXXXXXxxxxxxx========+++++++;;;;;;;;::::::::::...............:::: $$$XXXXXXXXxxxxxxx=======+++++++;;;;;;;;:::::::::...................:: $$$XXXXXXXxxxxxxx=======++++++++;;;;;;;::::::::....................... $$$XXXXXXXxxxxxxx=======+++++++;;;;;;;::::::::......... ........ $$$XXXXXXXxxxxxxx=======+++++++;;;;;;;:::::::........ ...... $$$XXXXXXXxxxxxxx=======+++++++;;;;;;;:::::::....... ..... $$$XXXXXXXxxxxxxx=======+++++++;;;;;;;:::::::....... ..... $$$XXXXXXXxxxxxxx=======+++++++;;;;;;;:::::::....... ..... $$$XXXXXXXxxxxxxx=======+++++++;;;;;;;:::::::........ ...... …

30
Mathematica打高尔夫球的技巧
您在Mathematica打高尔夫球有哪些一般提示?我正在寻找可以应用于编码高尔夫问题的想法,这些想法至少在某种程度上特定于Mathematica(例如,“删除评论”不是答案)。
41 code-golf  tips 

30
波兰语反符号
您必须评估以反向波兰表示法编写的字符串并输出结果。 程序必须接受输入并返回输出。对于不具有接收输入/输出功能的编程语言,可以采用readLine / print之类的功能。 您不得在程序中使用任何类型的“评估”。 数字和运算符由一个或多个空格分隔。 您必须至少支持+,-,*和/运算符。 您需要为负数和浮点数添加支持(例如,-4与并不相同0 4 -)。 您可以假设输入有效,并遵循上述规则 测试用例 输入: -4 5 + 输出: 1 输入: 5 2 / 输出: 2.5 输入: 5 2.5 / 输出: 2 输入: 5 1 2 + 4 * 3 - + 输出: 14 输入: 4 2 5 * + 1 3 …
41 code-golf  math 

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.