编程拼图和代码高尔夫

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

7
创建一个用户个人资料迷你游戏
昨天,我偶然发现了一件非常聪明的事情。 是的,这是Tic-Tac-Toe在用户个人资料页面上的有效实现@minitech。当然,当我看到它的那一刻,我不得不对他的想法进行逆向工程,然后对他进行单身:P 这是我直接嵌入在帖子中的示例。这是一个小问题,原因是我没有制定出一个好的解决方案,有一些实现细节。有时,在您单击某个钉子之后,直到刷新另一页后,钉子才能正确更新: 河内塔 http://hanoi.kurtbachtold.com/hanoi.php/text http://hanoi.kurtbachtold.com/hanoi.php/1 http://hanoi.kurtbachtold.com/hanoi.php/2 http://hanoi.kurtbachtold.com/hanoi.php/3 重启 你能做得更好吗? 在您发布的答案(或您的用户个人资料页面)中创建一款有效的游戏。这是通过适当配置您拥有的Web服务器(或编写充当Web服务器的程序),然后使用引用程序确定用户向游戏发出的命令,将其中的内容嵌入帖子中来完成的。 加拿大日(2012年7月1日,星期日,美国东部标准时间11:59)之前,最酷的想法(票数最多)赢得了比赛。 如果出现平局,则较早的答案为准。

6
语言设计:二维模式匹配
这是每两周挑战#6。主题:语言设计 这个挑战有一个聊天室。如果您想讨论想法,请加入我们! 现在换个完全不同的东西... 这两个星期,我们想尝试一种新型的挑战。在这个挑战中,您将设计一种语言!模式匹配是编程中一个非常普遍的问题,并且通常对于代码高尔夫非常有用。例如,可以使用正则表达式来检测文本行中的模式。但是,没有任何成熟的方法来描述和检测二维模式。 挑战 您将要设计一种模式匹配语言,该语言允许在文本块中描述二维模式。该运作模式你的语言将类似于正则表达式(虽然你的语言并不一定有什么共同点与正则表达式,否则): 作为输入,您将收到一个矩形文本块。您可以假设文本仅由可打印的ASCII字符(0x20至0x7E)以及换行符(0x0A)组成,以分隔网格的行。 如果根据模式说明将匹配项找到为该文本块的任何子集,则应返回或打印该匹配项。如果匹配项可以是非矩形的,则应将其填充到具有某些保留字符的矩形区域。如果存在多个有效的匹配项,则可以决定如何选择返回的匹配项(最大,最小,第一个等)。 对于某些应用程序,如果您的实现可以返回匹配项的位置而不是匹配项本身,则可能会很有用,但这不是必需的。 至少,您的语言应该能够将模式匹配为其输入的连续矩形子区域。 您的答案应包含: 一个描述语言。 一个有效的实现。它可以是程序,也可以是您选择的语言的一组功能/类。 您应该通过显示语言来解决下面提供的示例来演示您的语言。您的语言不一定必须能够匹配所有语言,但是您必须至少能够匹配其中8种语言。如果您的语言可以做一些我们没想到的花哨的事情,请随时将其包括在内。 如果您的答案是建立在现有想法的基础上的,那很好,但是请在适当的时候给予感谢。 扩展名 上面描述了有效提交必须满足的最低要求。但是,多种概括可以使这种模式匹配语言更加有用,包括但不限于: 能够将样式锚定到一个或多个边缘,以便可以检查整个输入区域是否具有特定样式。 产生所有匹配而不是一个。您可以选择重叠匹配的语义。 以非矩形文字为输入。 允许模式指定非矩形匹配。在这种情况下,应将输出填充到带有某些保留字符的矩形中。 允许图案指定带孔的匹配。 允许非连续匹配,例如两个字符以一定的偏移量出现。 轻松指定旋转和反射。 可选地,将输入循环地视为圆柱或圆环,以使相对的边缘被视为相邻。 计分 这项挑战的主要目标是产生一种有效的2D模式匹配语言,该语言将来可能会使用。这样,诸如“用于解决示例的最短组合长度”之类的评分系统将导致以牺牲通用性为代价来对某些功能进行硬编码。因此,我们认为最好将这项挑战作为人气竞赛。净投票最多的提交者获胜。尽管我们不能强迫人们投票,但以下是一些有关选民理想选择的准则: 表现力。语言可以解决各种问题,甚至超出本问题中提供的示例吗?它是否支持任何建议的扩展? 可读性。该符号的直观性(至少对于了解基本语法的人而言)? 高尔夫度。这仍然是CodeGolf.SE。对于本站点而言,拥有一种只需很少代码即可描述模式的匹配语言当然会很好。 示例问题 以下堆栈片段显示了16种示例问题,二维模式匹配语言可以解决这些问题。每个示例都包含一个简短的问题描述,然后通常后面跟一个可以找到匹配项的输入示例和一个找不到匹配项的示例(如果适用)。 如上所述,您的语言仅需要能够解决其中的8个问题。最重要的是可选的,但是当然应该增加您获得的投票数。 显示代码段 body{font-family:'Helvetica Neue',Arial,sans-serif;color:#444;font-size:13px;width:500px;line-height:1.3}h3{font-size:16px!important;line-height:1.2em!important;margin-bottom:1.2em}code{white-space:pre-wrap;padding:1px 5px;font-family:'Droid Sans Mono',Consolas,Menlo,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New,monospace,serif;color:#222;background:#eee}p code{padding:1px 5px}pre{overflow:auto;width:auto;width:480px !ie7;max-height:600px;font-family:'Droid …

30
用于验证信用卡号等的Luhn算法
挑战 编写最短的程序或函数以计算用于验证(信用卡)号码的Luhn算法。 Luhn算法解释 在RosettaCode中,为此挑战指定了该算法,其示例输入为49927398716: Reverse the digits, make an array: 6, 1, 7, 8, 9, 3, 7, 2, 9, 9, 4 Double the numbers in odd indexes: 6, 2, 7, 16, 9, 6, 7, 4, 9, 18, 4 Sum the digits in each number: 6, 2, 7, 7, 9, 6, …

30
爸爸笑话很有趣
我们都知道经典的父亲笑话是这样的: 有人说了一句话来形容自己(例如I'm tired或I'm confused)。 爸爸玩笑的狂热爱好者来了并回答Hi <adjective>, I'm Dad!,因为介绍采用相同的格式(I'm Peter与相同的格式I'm hungry)。 您的工作是采用自描述词的形式输入,并输出适当的爸爸笑话形式,但是您将使用所编程语言的名称,而不是使用“ Dad”一词。在。 测试用例(假设它们正在由Python解析): I'm amazing Hi amazing, I'm Python! I'm tired Hi tired, I'm Python! I'm hungry Hi hungry, I'm Python! I'm fat Hi fat, I'm Python! 现在,假设这些测试用例是由Golfscript解析的: I'm a programmer Hi a programmer, I'm Golfscript! I'm a question-writer Hi …

22
“当我们穿越宇宙时……”
您将获得太阳系中20个最大物体之一的名称。您的任务是返回半径的近似值,以公里为单位。 这是一种代码挑战,根据最差的近似值,您的分数包括代码长度(以字节为单位)乘以惩罚比。因此,最低分获胜。≥1≥1\ge 1 “我们在宇宙中旅行”是Black Sabbath演唱的《Planet Caravan》的最后一句,后来也被Pantera演唱。 太阳系物体 资料来源:维基百科 注意:排名仅供参考。输入是对象的名称。 n | Object | Radius (km) ----+----------+------------- 1 | Sun | 696342 2 | Jupiter | 69911 3 | Saturn | 58232 4 | Uranus | 25362 5 | Neptune | 24622 6 | Earth | 6371 7 | Venus | …

30
您语言中最短的代码,可在重新启动后保留字符串
您的程序: 您将编写两个程序(都使用相同的语言)。存储程序从STDIN中获取一个字符串,并将其存储在持久的位置(请参见下文),然后无错误退出。检索程序不输入任何内容,检索存储的字符串,然后将其打印到STDOUT。 持久性的客观测试: 您应该能够在本地计算机上运行存储程序,然后重新启动本地计算机,然后调用本地计算机上的检索程序。只要通过此重新启动测试,就可以随意存储字符串(即使在Web上)。 测试用例: 存储然后检索: echo foo | Store Retrieve foo 重复存储应覆盖(如set()方法): echo foo | Store echo bar | Store Retrieve bar 重复检索是非破坏性的(例如get()方法): echo foo | Store Retrieve foo Retrieve foo 在调用存储之前进行检索: 您无需为此担心。您的检索程序可以假定该存储程序已在过去的某个时间运行。 输入/输出灵活性。 人们要求我将其从严格的STDIN / STDOUT扩展到标准IO规则。我不能,因为这会引入太多漏洞。一些标准IO选项已经以持久方式存储了输入,例如“程序可以从文件中获取输入”。我想比严格的STDIN和STDOUT更灵活,但不要打开闸门。 从标准的IO规则线程中,我正在挑选那些不会克服挑战的规则: 如果需要,程序可以通过GUI提示符和命令行提示符进行输入 程序可以通过在屏幕上显示来输出,包括GUI对话框 程序可以通过命令行参数进行输入 程序可以输出到STDERR,但实际上仍然不会引发错误。 如果使用备用选项,则必须是用户交互的。除了将输入输入到程序中,将其输入程序提供的提示中或将输入作为程序的命令行参数输入之外,用户无需执行任何其他工作。除了运行您的检索程序之外,用户无需执行任何其他操作即可看到屏幕上显示的输出或发送到STDOUT或STDERR的输出。 允许的假设: 您的两个程序将在同一目录中运行 您的程序对该目录具有读写权限 您创建的文件将在重启后保留下来(不在临时目录中) 允许使用不属于字符串的尾随换行符。没有其他尾随空格 这是代码高尔夫球,您的得分是这两个程序的字节总和。

30
检测热浪
背景 荷兰皇家气象学院将热浪 * 定义为≥25°C天气(“夏季天气”)至少连续 5 天的一系列,至少 3天为30℃以上(“热带天气”) )。 不必连续测量热带天气:例如:30, 25, 30, 26, 27, 28, 32, 30是8天长的热浪和4天热带天气。 *(按荷兰标准。) 挑战 给定一个非空的正整数列表,该整数表示连续几天的摄氏温度测量值,请确定该列表是否包含热浪(按照上述定义)。 以字节为单位的最短答案将获胜。 测试用例 虚假: [30] [29, 29, 29, 47, 30] [31, 29, 29, 28, 24, 23, 29, 29, 26, 27, 33, 20, 26, 26, 20, 30] [23, 31, 29, 26, 30, 24, …

5
TryItOnquine挑战
(基于这篇文章以及随后的聊天讨论 -同样,非常感谢Dennis的TIO!) 挑战 选择TryItOnline网站上当前可用的语言,例如PowerShell。在该页面上以该语言编写代码,不需要任何输入,因此,当单击“ 运行”按钮时,该页面上的输出与“ 保存/存储 ”时“纯URL”字段中的输出完全相同。而是单击按钮。 举一个虚拟的例子,假设这aaa是PowerShell中解决此问题的代码。然后,单击Run with aaaas the code on的结果https://tio.run/#powershell应输出https://tio.run/##K8gvTy0qzkjNyfn/PzEx8f9/AA,当单击Save / Store按钮时,它也是“ Plain URL”字段。 计分 该结果URL是您提交这一挑战。获胜者是最短的URL,以字节为单位。对于上面的示例,URL https://tio.run/##K8gvTy0qzkjNyfn/PzEx8f9/AA是挑战的提交,为44个字节。满足其余挑战要求的最短URL会赢得挑战,并获得布朗尼积分(不可兑换的积分)。鉴于存在明显的最小可能长度,如果两个提交的长度相等,则以较早的提交为准。 URL生成 这是存储库中URL生成算法的开始。您可以看到如何使用主代码区域,如何附加任何额外的元素,对字符串进行放气,然后对Base64进行转换,然后对其进行##前缀等。在此,我将不做详细介绍;挑战的一部分是解析并了解如何生成URL,以利用所述算法中的任何潜在怪癖。 规则/说明 实际的代码不应输入任何内容,而只能产生quine-URL作为输出。 -这意味着,应该点击进入网址时,系统都将填充仅文本字段的Code,Header,Footer或相应的“编译器标志”领域; 在Input和Arguments领域都被禁止,必须保持为空/不用。单击运行按钮应仅更改该Output字段。对于此挑战,Debug在所有情况下都将忽略该字段。 通常的规则适用于代码(例如,代码无法通过读取其自身的源代码.code.tio)。 请在您的提交中说明代码的工作方式。 不允许通过将Git提取请求提交到TIO储存库以创建“技巧” URL或快捷方式等来提交“骗人的”奎因。 类似地,不允许提交拉取请求以更新特定语言以产生“技巧” URL。 请对Dennis的服务器好,不要为了挑战而滥用它们或尝试利用漏洞。

1
Ruby on Rails(或Trackety Track)
您是铁路工程师Ruby。您的任务是在任何给定的山谷中追踪,以使其到达每个站点(M)。铺设的轨道数量并不重要,但必须以一条连续的路径铺设,该路径从山谷的入口/出口点(>)开始和结束,并且在任何一点都不会交叉。还有其他一些限制:mountains(^)是不可逾越的,因此您必须绕过它们,~必须使用bridge(X)穿越rivers (),并且山谷(#)的边缘也是不可实现的。 赛道规则 如果轨道放置不正确,将会出轨,没人会想要,所以这是轨道放置的规则。 轨道有四种:- | / \。 以下是每个人如何与其他人结合的方法: 允许的组合来自-(在每个示例的中心): ##### ##### ##### ##### ##### ##### ##### # # # # #\ # # # # /# #\ /# # # #---# # --# # --# #-- # #-- # # - # # - # # # #/ # …

30
脱绳
现在我们已经知道如何从其空格中删除字符串。 但是,作为适当的先生/女士,我们宁愿脱衣服。 脱绳与剥线相同,只是更细腻。与其一次删除所有前导和尾随空格,不如一一删除它们。我们也交替领先和落后,以免烫伤步骤之间。 以" codegolf "(五个前导和尾随空格)开头的示例: codegolf codegolf codegolf codegolf codegolf codegolf codegolf codegolf codegolf codegolf codegolf 首先输出字符串不变。然后,输出每个步骤。首先删除前导空格(如果适用-参见规则2)。 输入可能具有不同数量的前导和尾随空格。如果一侧空间不足,请继续给另一侧脱衣服,直到弦线裸露为止。 输入可能没有前导空格或尾随空格。如果是这样,请原样输出。 使用PPCG的默认I / O方法。PPCG默认漏洞是禁止的。 可以确定在空输入或仅包含空格的输入上的未定义行为。 您可以假设该字符串将仅包含ASCII可打印空间(0x20到0x7E)中的字符。 示例-用点替换空格.以提高可读性: 4 leading spaces, 5 trailing: "....Yes, Sir!....." ....Yes, Sir!..... ...Yes, Sir!..... ...Yes, Sir!.... ..Yes, Sir!.... ..Yes, Sir!... .Yes, Sir!... .Yes, Sir!.. Yes, Sir!.. Yes, …
48 code-golf  string 

29
计算平方和平方根!
您必须制作一个能用一种语言输出输入的平方并用另一种语言输出输入的平方根的多色图。以字节为单位的最短答案为胜! 您必须具有至少3个小数位的精度,并且输入将始终为正浮点数。

15
此井字棋牌有效吗?
挑战 给定任何格式的井字游戏板,请确定其是否有效。如果棋盘可以是井字游戏的结果,那么它是有效的。例如,此板有效:XOX 氧代 XOX相反,此板无效: XXX XXO OOO 输入项 完整的(9/9)井字游戏板(结果,而不是游戏)。 规则 输入格式必须能够描述所有512种可能的输入板。如果不清楚/不清楚,则必须指定它以及创建说明。但是,您必须单独声明木板的标记。 必须有两个可能的输出,一个用于有效性,一个用于无效。 您可以假定板上没有空点。 测试用例 有效: XOX 氧代 XOX XOX XOX 氧代 XOO OX OXX 氧代 XOX 氧代 无效: XXX XXX XXX OOO OOO OOO XXX OOO XXX OOO OX XXX XXO 氧代 OX 一点帮助? 仅在以下两个条件成立的情况下,董事会才被认为是有效的(对此挑战): 有5 X和4 O,或4 X和5O。例如, XXX …

16
创建多语种的技巧
甲通晓是可在2种或多个不同的编程语言来运行程序。 您有什么通用技巧来制作多语言文字,或为特定任务选择易于编写多语言文字的语言? 请发布可在大多数情况下应用的提示。也就是说,它们不应仅在两种特定语言的多语言环境中工作。(如果您的技巧太具体,则可以简单地发布多语种问题的答案。)但是,您可以引入一种语言的功能,从而可以轻松地使用多种语言,也可以轻松地将其添加到任何现有的多语系中。 请为每个答案发布一个提示。如果特定于语言的提示也适用于另一种语言,请随时建议编辑。
48 tips  polyglot 

30
它是领先还是跟随?
在此挑战中,您将编写一个程序或函数,该程序或函数将字符串作为输入并输出两个可能值之一。我们将这些价值之一称为真实,将其称为虚假。他们实际上并不需要诚实或虚假。为了使答案有效,它必须满足四个附加条件 当您将程序传递给自身时,它将输出真实值。 如果将程序作为输入传递给任何较旧的答案,则应输出(传递给的程序的)真实输出。 如果将任何较旧的答案作为输入传递给它,则应输出(程序的)虚假输出。 在挑战的所有答案(包括您的新答案)中,必须有无限数量的字符串评估为真实输出。 这样做会慢慢建立一个答案链,每个答案都可以确定该链中的其他程序是在其之前还是之后。 这项挑战的目的是要建立一系列源限制,这些源限制将应用于后续答案,从而使每个答案都比上一个更具挑战性。 例 一条链(用Haskell编写)可以开始: f _ = True 由于没有较旧的程序,因此条件不适用于该答案,它仅需要输出两个可能值之一,在这种情况下,它始终输出True。 以下可能是答案: f x=or$zipWith(==)x$tail x 在线尝试! 它断言字符串中某处连续两次出现一个字符。第一个答案没有此属性,而第二个答案则具有(==)。因此,这是一个有效的下一个答案。 特殊规定 您可以随意使用任意一种语言(具有免费的实现)。 如果您是最后一个回答的人,则必须等待至少7天才能发布新答案。 您的程序可能无法读取其自身的源代码。 由于第四规则很难验证是否涉及密码功能,因此不允许使用此类功能。 评分标准 每次添加答案时,您得到的分数与其在链中的位置一样多。例如,第5个答案将使作家获得5分。目标是获得尽可能多的积分。最后一个答案的答题者得分为-∞分。如果您尝试最大化自己的得分而不是“赢得”挑战,这可能会更有趣。我不会接受答案。 由于这是答案链,因此您可能要按最旧的排序

30
去palindromize此字符串!
给定根据此挑战生成的回文,请对其进行去盲化。 测试用例 abcdedcba -> abcde johncenanecnhoj -> johncena ppapapp -> ppap codegolflogedoc -> codegolf 因为这是关于去palindromating的,所以您的代码不能是回文。 请记住,这是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.