编程拼图和代码高尔夫

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


15
用您喜欢的语言生成一个随机程序[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 3年前关闭。 我们都听说过使用随机生成的输入来测试编译器。您的任务是编写一种程序,以您喜欢的语言生成一个有效的程序(不包括未定义的行为)。生成的程序语言不必与生成的程序语言相同。 您的程序将收到一个整数作为参数,您可以将其用作随机数生成器的种子。生成的程序在结构上应该不同(给定不同的种子),而不仅仅是不同的变量名或常量。 例子: $ ./generate 1 int main() { return 0; } $ ./generate 2 #include <math.h> int main() { return (int) pow(4, 3); } 请在回答中包括几个输出。 最短的解决方案获胜。我会根据投票数提供少量奖金,因此请投票出最具创意的解决方案。

6
科赫雪花-Codegolf
的Koch雪花(也被称为科赫星和科克岛)是数学曲线,并已经描述了最早的分形曲线中的一个。它基于Koch曲线,该曲线出现在1904年的一篇论文中,该论文的标题为“在无切线的连续曲线上,可以从基本几何构造而成”(法文原版标题:“ Sur une courbecontinu sans tangente,旁观的建筑学意义”)瑞典数学家Helge von Koch。 以下是各种迭代的一些ascii表示形式: n=1 __ \/ n=2 __/\__ \ / /_ _\ \/ n=3 __/\__ \ / __/\__/ \__/\__ \ / /_ _\ \ / __/ \__ \ / /_ __ __ _\ \/ \ / \/ /_ _\ \/ 由于ASCII表示的分辨率显然存在限制,因此对于每次迭代,我们必须将雪花的大小放大3倍,以显示更多细节。 编写最短的代码以相同的样式输出雪花,其中n = 4 …

7
解释> <>(鱼)
虽然&gt; &lt;&gt;不是流行的语言,但它可能对打高尔夫球很有用,并且已在本网站上使用。它受到Befunge的启发,在指令上有一些相似之处。 所需命令: &gt; &lt; ^ v 更改指令指针的方向(右,左,上,下) / \ | _ # 。指针将根据其已有的方向改变方向。 x 随机方向。 + - * , % 加法,减法,乘法,除法和模。将A和B弹出堆栈,然后将B运算符A推入。除以0会引发错误。 0-9 a-f 将相应的值压入堆栈。a = 10,...,f = 15 = 从堆栈中弹出A和B,如果B = A,则按1,否则按0。 ) 比...更棒。将A和B弹出堆栈,如果B &lt;A ( 小于,则按1 。将A和B弹出堆栈,如果B&gt; A ' " 启用字符串解析,则按1 。字符串解析将找到的每个字符推入堆栈,直到找到结束引号为止。 ! 跳过以下说明。 ? 如果堆栈顶部为零或堆栈为空,则跳过以下指令。(注意:这不会从堆栈中弹出任何东西!) : 复制堆栈中的最高值。 …

28
找出数字是否快乐?
通过以下过程定义一个满意的数字。从任何正整数开始,用数字的平方和代替数字,然后重复此过程,直到数字等于1(它将停留在该位置),或者它在不包含1的循环中无休止地循环。对于此过程,以1结尾的是快乐数字,而没有以1结尾的过程是不快乐数字(或悲伤数字)。给数字打印是快乐还是不快乐。 Sample Inputs 7 4 13 Sample Outputs Happy Unhappy Happy 注意:对于任何小于1,000,000,000的数字,您的程序所花费的时间不应超过10秒。

9
实现懒惰列表,最好使用您不太熟悉的语言[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Code Golf Stack Exchange 的主题。 3年前关闭。 这是一个很好的练习,可以使您更加流利地使用您一直想学习的编程语言,但是只需要稍加修改即可。这涉及使用对象,使用或模拟闭包以及扩展类型系统。 您的任务是编写代码来管理惰性列表,然后使用它来实现生成斐波那契数字的算法: 代码示例在Haskell中 let fibs = 0 : 1 : zipWith (+) fibs (tail fibs) in take 40 fibs 结果: [0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368,75025,121393,196418,317811,514229,832040,1346269,2178309,3524578,5702887,9227465,14930352,24157817,39088169,63245986] 您的惰性列表实现应符合以下准则: 列表节点是三件事之一: 无-空列表。 [] 缺点-一个单一项目,其余项目的列表配对: 1 : [2,3,4,5] (:是在Haskell利弊运营商) Thunk-延迟计算,在需要时会生成List节点。 它支持以下操作: nil-构造一个空列表。 缺点-构建一个缺点单元格。 thunk-给定一个不带参数且返回Nil或Cons的函数,构造一个Thunk。 强制-给定一个List节点: 如果是Nil或Cons,只需将其返回即可。 如果是Thunk,则调用其函数以获取Nil或Cons。用该Nil或Cons替换该thunk,然后将其返回。 注意:用其强制值替换thunk是“ lazy”定义的重要组成部分。如果跳过此步骤,则上面的斐波那契算法将太慢。 空-查看List节点是否为Nil(强制后)。 head(又名“ …

30
剪刀石头布
实施经典的剪刀石头布。 条件: 用户将输入“ r”,“ p”或“ s” 程序将输出“ r”,“ p”或“ s”以及结果 程序选择(“ r”,“ p”或“ s”)必须是伪随机的(我在看你霍华德) 结果可以用任何可打印的字符表示,对于用户输入的内容(用户赢,输或平局),应始终存在三个可能的结果。 如果用户不输入任何内容,或者与“ r”,“ p”或“ s”不同的内容不重要,将会发生什么。 你需要: 提供打高尔夫球的代码。 取消编码 您如何调用程序 样品运行 如果平局显示投票最多的答案,我将选择字符较少的答案。 打高尔夫好运,可能永远都对你有利。 我将用Java发布自己的答案。 对于那些住在山下的人: r =岩石 p =纸 s =剪刀 石头:胜于剪刀,不胜枚于纸,不胜枚举。 纸:胜于摇滚,用剪刀输,用纸扎。 剪刀:胜于纸张,不胜枚举,不胜枚举。 当前职位: 联合国:用户名 PL:编程语言 CC:字符数 紫外线:得票最多 ╔══════════════════╦════════════╦══════╦════╗ ║ UN ║ PL ║ CC ║ …
21 code-golf  game 

2
创建一个独特的可解决填字游戏……毫无头绪
您能想象没有任何线索解决《纽约时报》填字游戏吗?也许不是所有的创造力以及现代填字游戏中出现的新单词和短语,但是有了固定的单词列表,人们还是有希望的。在此挑战中,您将创建一个填字游戏拼图网格,在理论上这是可能的。 挑战 最大化白色和黑色底纹的15x15填字游戏网格中的白色方块数量,以使白色方块可以唯一地填充字母,以便每个跨字和向下的单词都出现在国际拼字游戏单词列表中。 网格构造说明 在美国报纸中,通常会构造填字游戏网格,以使每个字母都被“选中”,这意味着它既是“跨字”又是“下”字的一部分。在英国和其他地方(尤其是在隐秘的填字游戏中),情况并非一定如此:如果“ across”或“ down”单词仅是一个字母,则不必是实际单词(例如“ A”或“ I” ”)。对于此挑战,请遵循更为宽松的规则:单字母单词不必出现在单词列表中。 还有其他各种传统(在美国和其他地方),在此挑战中无需遵循任何传统。例如,单词只能是两个字母长,单词可以重复,并且网格不必具有(旋转)对称性。 这有可能吗? 是! 可以编写一个简短的脚本来验证左侧空白网格的唯一解决方案是右侧填充的网格: 可以用计算机可读格式显示填充的网格,如下所示: ###CH########## ###YE########## ###AM########## CYANOCOBALAMINE HEMOCHROMATOSES ###CH########## ###OR########## ###BO########## ###AM########## ###LA########## ###AT########## ###MO########## ###IS########## ###NE########## ###ES########## 您的解决方案 上面的网格在15x15网格的225个正方形中共有56个白色正方形。这是此挑战的基准。带有较少白色方块的网格也可能由于其得分以外的原因而引起人们的兴趣,例如,如果它们满足上述某些美学传统,则可能会很有意思。 请以与上述计算机可读基准相同的格式提交解决方案。请包含验证您的网格是否有独特解决方案的代码。 有趣的代码片段(例如,搜索可能的空间)和有关如何找到网格的讨论将受到赞赏。 单词表 国际拼字游戏词清单以前被称为SOWPODS,现在被称为Collins拼字游戏词(CSW)。大多数国家(尤其是美国)都使用它。我们更喜欢使用此列表,因为它包含英式拼写,并且通常比美国单词列表包含很多单词。此列表有多个版本,略有不同。你可以找到不同版本的名单,从维基百科的链接,在Github上,在彼得·诺维格的自然语言语料库和其他地方,还经常被称为“SOWPODS”。 这一挑战对单词表选择的广泛性质高度敏感,而对较小的细节则不那么敏感。例如,上面的基准示例适用于任何版本的CSW,但CH不是American Scrabble单词列表中的单词。如果出现差异,我们更喜欢使用CSW的最新版本CSW19。(如果使用今年发布的此列表,则可以预期此挑战的答案将更有效)。您可以在Scrabble单词查找器官方网站上以交互方式查询此列表,也可以从Board&Card Games Stack Exchange或Reddit的r / scrabble下载该列表(以及上一版本的CSW15)。 Tldr:在Board&Card Games Stack Exchange上,可以通过纯文本文件(279,496个单词,每行一个)获得此挑战的权威单词列表。 进一步讨论 在早期的答案和评论中提出的一个问题是为什么现有的填字游戏(例如,在NYT中)不回答这个问题。具体而言,已发布的NYT填字游戏的最少黑色正方形(因此最多的白方块)记录已经是填字游戏中最著名的记录。为什么我们不能使用记录网格?有几个问题: NYT填字游戏中的许多答案未出现在我们的单词列表中。例如,记录网格包括PEPCID(商标名称),APASSAGETOINDIA(电影和小说的四个字专有名称,没有空格书写)和STE(“ …

24
使字符串嗡嗡作响
您将得到一个仅包含英文字母的字母,小写和大写字母(ASCII 65-90和97-122)的字符串。您的任务是输出Fizz-Buzzified版本的String。 如何对字符串进行Fizz-Buzzify? 如果英文字母中的每个字母均具有偶数索引(该字母必须为1索引:),则将其a-&gt;1,b-&gt;2,...,z-&gt;26转换fizz为小写字母和FIZZ大写字母(f -&gt; fizz, F -&gt; FIZZ)。 buzz如果英文字母的小写字母和BUZZ大写字母(e -&gt; buzz, E -&gt; BUZZ)都会变成英文字母。 让我们举个例子,使用字符串CodeGolf(为清楚起见添加空格)来说明算法: "C o d e G o l f" -&gt; "BUZZ buzz fizz buzz BUZZ buzz fizz fizz" ^ ^ ^ ^ ^ ^ ^ ^ 1 1 0 1 1 1 0 0 (1 …
21 code-golf  string 

26
A或An An?
在英语中,有乐趣和之间的简单区别an和a:使用an开始以元音字前面时,和a当单词以辅音开始。 为了简单起见,an在以元音(aeiou)a开头的单词之前,以辅音开头的单词之前。 输入值 仅包含可打印ASCII字符的字符串,[?]出现在必须选择插入an或的位置a。[?]总是出现在一个字之前。您可以假定该句子在语法上是正确的,并且格式与通常一样。 输出量 [?]用适当的单词(an或a)替换的输入字符串。您不必担心大写! 何时大写 如果单词前面没有字符(输入中的第一个),或者.?!后面带有空格,则将其大写。 例子 Input: Hello, this is [?] world! Output: Hello, this is a world! Input: How about we build [?] big building. It will have [?] orange banana hanging out of [?] window. Output: How about we build a big building. It will …

6
ASCII连接的六边形
总览 给定许多六角形,将它们排列成50乘50 ASCII艺术图像范围内的连接形状。您可以选择任意形状-只要您将其连接,就可以发现最适合打高尔夫球的形状。如果它们大于一个六边形,则可能会有孔(否则,六边形的数量将是不明确的)。 布局 所有六边形都必须采用以下形式(仅此大小和方向有效): __ / \ \__/ Note there are 2 underscores per horizontal edge. 如果两个六边形共享一条边,则它们直接相连: __ __ / \__ / \ \__/ \ \__/ \__/ or / \ \__/ 如果两个六角形仅共享一个顶点,则它们不连接: __ __ / \/ \ \__/\__/ 共享半边也不算是已连接: __ / \ \__/ / \ \__/ 如果存在仅使用直接连接的六边形从任意六边形到其他任意六边形的路径,则连接六边形的集合。 孔洞 相连的六边形集合中的六边形大小的孔算作六边形,因此任何给定的ASCII艺术作品都具有明确的六边形数。 …

20
查找一年中每个月的最后一个星期日
在140个字符内已知F#解决方案,这是Rosetta代码问题。 输入年份的标准输出或字符串变量中的必需结果2014: 2014-01-26 2014-02-23 2014-03-30 2014-04-27 2014-05-25 2014-06-29 2014-07-27 2014-08-31 2014-09-28 2014-10-26 2014-11-30 2014-12-28 根据要求,在1900年: 1900-01-28 1900-02-25 1900-03-25 1900-04-29 1900-05-27 1900-06-24 1900-07-29 1900-08-26 1900-09-30 1900-10-28 1900-11-25 1900-12-30 和2000: 2000-01-30 2000-02-27 2000-03-26 2000-04-30 2000-05-28 2000-06-25 2000-07-30 2000-08-27 2000-09-24 2000-10-29 2000-11-26 2000-12-31 之所以如此,是因为大多数语言中的日期似乎都带来了尴尬。除了允许日期库,我希望能看到它们!但是,如果在基本语言之外,请在帖子名称中声明(例如C#+ Jon Skeet的NodaTime)。 说明: 年份范围1900至3015 阳历日历 如果其他方面不重要,则英国/伦敦的常规做法。 使用命令行开关或stdin的程序很好,将结果生成到stdout 取年份值并返回字符串的函数也很好。 不包括标准漏洞。期待APL,J,K解决方案,并看到一些新的日期库。
21 code-golf  date 

8
Java中引发IllegalArgumentException的最短代码
Okey,我们都知道在Java中引发IllegalArgumentException的正常方法: throw new IllegalArgumentException(); // 37 characters 但是必须有更短的方式(以更少的字符为单位)。我们如何用更少的代码产生java.lang.IllegalArgumentException? 该代码段必须在Java 7中编译并运行。 没有导入/外部软件包(例如,不使用java.util.Arrays.toString()) 唯一的例外:java.lang,因为它是自动导入的。 您可以添加自己的方法/类。 它必须抛出java.lang.IllegalArgumentException 编辑:错误输出(stacktrace)必须将其命名为java.lang.IllegalArgumentException,因此没有其子类。 要有一个起点,请执行以下操作: class Titled { public static void main(String[] args) { throw new IllegalArgumentException(); } }
21 code-golf  java 

14
查找the草
Semordnilaps(也称为异回文,半回文,半回文,反义词,mynoretehs,可逆字谜,单词反义词或书呆子)是单词,当向后拼写时也就是单词。一些示例是: 病房&lt;=&gt;抽奖 已开采&lt;=&gt;牛仔布 零件&lt;=&gt;表带 给定一个正整数N(通过函数参数或STDIN),从此英语单词列表中返回/输出一个semordnilaps 列表,这些单词正好具有N个字母。单词列表可以作为文本文件保存在您的计算机上本地:w.txt。您也可以从url获取列表,但是它将包含在字节数中。 规则: 回文不属于semordnilaps!因此,单词“中午”,“转子”和“雷达”不应包括在列表中。 列表中仅应包含一个单词(在semordnilap对中)。因此,如果“狗”在列表中,则“神”不应存在(与其中包括哪一个无关)。 如果没有semordnilaps,则输出应为空字符串,0,FALSE或其他指示没有结果的字符串。即使没有结果,该功能也必须起作用。 这是代码高尔夫球,因此以字节为单位的最短代码获胜! 排行榜 这篇文章底部的Stack Snippet从答案a)生成目录,答案是每种语言的最短解决方案列表,b)则是总体排行榜。 为确保您的答案显示出来,请使用以下Markdown模板以标题开头。 ## Language Name, N bytes N您提交的文件大小在哪里。如果您提高了分数,则可以通过打败旧分数来保持标题。例如: ## Ruby, &lt;s&gt;104&lt;/s&gt; &lt;s&gt;101&lt;/s&gt; 96 bytes 如果要在标头中包含多个数字(例如,因为您的分数是两个文件的总和,或者您想单独列出解释器标志罚分),请确保实际分数是标头中的最后一个数字: ## Perl, 43 + 2 (-p flag) = 45 bytes 您还可以将语言名称设置为链接,然后该链接将显示在代码段中: ## [&gt;&lt;&gt;](http://esolangs.org/wiki/Fish), 121 bytes 显示代码段 var QUESTION_ID=42090,OVERRIDE_USER=44713;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&amp;pagesize=100&amp;order=desc&amp;sort=creation&amp;site=codegolf&amp;filter="+ANSWER_FILTER}function commentUrl(e,s){return"https://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&amp;pagesize=100&amp;order=desc&amp;sort=creation&amp;site=codegolf&amp;filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function …
21 code-golf 

23
从索引生成Excel列名称
这是一个现实生活中的问题。当然,我们已经解决了它,但是它总是觉得它本可以做得更好,因为它太冗长和round回。但是,我的同事们都没有想到更简洁的编写方式。因此,我将其表示为代码高尔夫球。 目标是将非负整数转换为字符串,这与Excel呈现其列标题的方式相同。从而: 0 -&gt; A 1 -&gt; B ... 25 -&gt; Z 26 -&gt; AA 27 -&gt; AB ... 51 -&gt; AZ 52 -&gt; BA ... 16,383 -&gt; XFD 它必须至少工作到16,383,但是也可以接受(尽管没有奖励积分)。我最期待C#解决方案,但是,按照代码高尔夫球的传统,任何实际的编程语言都是受欢迎的。

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.