编程拼图和代码高尔夫

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

15
量子醉汉步道
众所周知,一个人在酒精的影响下,在网格上的人有朝任何可用方向前进的机会均等。但是,这种常识性声明并不适用于非常小的酒鬼,他们的行为非常像他们一次采取所有可用路径,并且他们采取的可能路径可能会相互干扰。您的任务是在n步骤之后显示此类量子醉汉的可能位置。 规格 讨论中的酒鬼占据了一个正方形网格,可以被认为是使用冯·诺依曼(加号)邻域的三态细胞自动机,遵循以下简单规则: Empty去Awake,如果它是毗邻只有一个Awake,否则进入Empty Awake 去 Sleeping Sleeping 去 Sleeping 电路板的初始状态是一个Awake由Emptys 的无限字段包围的单个状态。 挑战 给定一个非负整数n,请在n步骤之后创建酒鬼的ASCII表示形式。每个状态应由不同的字符表示,解决方案应说明哪个字符表示哪个状态。如果您将空格用于Empty,则无需在行尾添加一行空格。 这是代码高尔夫球,因此最短的答案会获胜。适用标准漏洞,允许使用前导和尾随空格,允许使用字符串数组/ 2d char数组输出,等等。 例子 这些示例使用for Empty,@for Awake和#for Sleeping。 n=0 @ n = 1 @ @#@ @ n = 2 @ # @###@ # @ n = 3 @ @#@ @ # @ @#####@ @ # @ …

23
输出PPCG Prime
这是PPCG Prime 624位数字长 777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777111111111111111111111111111111111111111111111111111111111111111111111111111111188888888118888888811188888811188888811188111118818811111881881111881881111881188111118818811111881881111111881111111188888888118888888811881111111881118888188111111118811111111881111111881111881188111111118811111111881111881881111881188111111118811111111188888811188888811111111111111111111111111111111111111111111111111111111111111111111111111111111333333333333333333333333333333333333333 如果我们每隔39位进行拆分,就会得到 777777777777777777777777777777777777777 777777777777777777777777777777777777777 777777777777777777777777777777777777777 777777777777777777777777777777777777777 111111111111111111111111111111111111111 111111111111111111111111111111111111111 188888888118888888811188888811188888811 188111118818811111881881111881881111881 188111118818811111881881111111881111111 188888888118888888811881111111881118888 188111111118811111111881111111881111881 188111111118811111111881111881881111881 188111111118811111111188888811188888811 111111111111111111111111111111111111111 111111111111111111111111111111111111111 333333333333333333333333333333333333333 您的任务是输出PPCG-Prime 这是codegolf。最短的代码以字节为单位。 如果您在下面的Mathematica函数中输入PPCG-Prime,则会得到此结果 ArrayPlot@Partition[IntegerDigits@#,39]&

30
战争就是和平。自由是奴隶制。无知就是力量
正如乔治·奥威尔(George Orwell)在1984年写道: 战争是和平自由是奴隶制无知是力量 编写一个程序或函数,该程序或函数接受Orwell引号中的六个主要词之一,并输出其对应词。 特别: [input] -> [output] war -> peace peace -> war freedom -> slavery slavery -> freedom ignorance -> strength strength -> ignorance 不需要其他输入/输出对。 如上所述,您应该假设单词始终全部为小写。或者,你可以假设的话总是完全大写:WAR -> PEACE,PEACE -> WAR,等。 以字节为单位的最短代码获胜。

10
生成丹尼斯数
这项挑战对PPCG用户Dennis赢得了The Programming Language Quiz的强盗部分表示敬意。 查看Dennis的PPCG个人资料页面,我们可以看到一些令人印象深刻的内容: 目前,他的声誉超过6.8 万,使他在销售代表中排名第二,以近3万的成绩超过了第三名。他最近赢得了我们的新主持人选举,并在他的名字旁边得到了一颗闪亮的新钻石。但我个人认为,丹尼斯最有趣的部分是他的PPCG用户ID号:12012。 乍一看12012几乎像回文,反转时的数字相同,但差一点。它可以成为回文21012如果我们交换了第一的位置1,并2,它可以成为回文12021如果我们换最后1和2。同样,遵循不写数字前导零的约定,交换第一个1和0结果,02112或者2112换句话说,这是另一个回文。 让我们将Dennis数定义为一个正整数,它本身不是回文的,但是可以通过交换任意两个数字中的至少一对的位置而成为回文。丹尼斯数的顺序是可以交换以组成(不一定是不同的)回文数的不同数字对的数量。 这样的顺序12012是3,因为3个不同的对其位数(12012,,)可围绕交换以产生回文。碰巧是最小的3丹尼斯数。120121201212012 10是最小的丹尼斯数目和具有顺序1,因为绕切换1和0给出01又名1其是回文。 虚数前导零不算作可切换数字。例如,更改8908为08908并交换前两位以获得回文80908是无效的。8908不是丹尼斯数字。 非丹尼斯数字可以说是0阶。 挑战 编写一个程序或函数,该程序或函数采用正整数N并以某种合理的格式(例如或)打印或返回第N个最小的Dennis数及其顺序。12012 3(12012, 3) 例如,12012第774个丹尼斯数774是,因此如果是程序的输入,则输出应类似于12012 3。(奇怪的是,774是另一个丹尼斯数字。) 以字节为单位的最短代码获胜。 以下是丹尼斯的前20个数字及其参考顺序: N Dennis Order 1 10 1 2 20 1 3 30 1 4 40 1 5 50 1 6 60 1 7 70 1 8 80 1 9 90 …

30
没有A的字母A
您的任务是单独显示字母“ A”,除了在程序和/或代码段中不能避免的任何形式的尾随换行符以外,其他任何内容都不能显示。允许返回(而不是打印)的代码。 字母“ A”的小写和大写版本均可接受(即unicode U + 0061或unicode U + 0041。其他非Unicode的字符编码也是允许的,但是无论哪种方式,代码的结果输出必须是拉丁字母“ A”,并且没有任何相似或象形文字) 你一定不能使用任何以下字符的代码中,无论字符编码的你选择: “ A ”,无论是大写还是小写。 “ U ”,无论是小写还是大写。 X,无论是大写还是小写。 + 和 # 0 1个 4 5 6 7 9 禁止作弊,漏洞等。 由于这是代码高尔夫,因此,遵循所有规则的最短解决方案(以字节为单位)是赢家。 有效性检查器 该堆栈代码片段检查以确保您的代码不使用受限字符。对于某些字符编码,它可能无法正常工作。 var t = prompt("Input your code."); if (/[AaUuXx+&#0145679]/.test(t)) { alert("Contains a disallowed character!"); } else { alert("No …

30
等待一分钟–不到十秒
任务 使用任何类型的并行化,请等待多个时间段,以使总睡眠时间至少为一分钟(但少于一分钟半)。 程序/功能必须在10秒内终止,并以任何方式(以任何方式)返回两个值:总经过时间和总执行睡眠时间。两个时间值都必须具有至少0.1秒的精度。 这类似于工时的概念:如果有10名工人分班工作,那么需要60个小时的工作只能在6个小时内完成。在这里,我们可以有60秒的睡眠时间,例如在10个并行线程中,因此只需要6秒就可以完成整个工作。 例 MyProgram程序创建14个线程,每个线程休眠5秒: MyProgram → [5.016,70.105] 执行时间大于5秒,由于开销,总睡眠时间大于70秒。

8
正方形,圆形,三角形……齿轮?
我使用Algodoo和Paint制作了这六个300×300单色图像,具有四个方便的形状: 此类图像具有以下属性: 它们始终为300×300像素,单色(仅黑白),并且正好有四个白色区域,分别对应于正方形,圆形,三角形和齿轮。 形状永远不会重叠或彼此接触,也不会接触图像边界或超出范围。 形状始终具有相同的大小,但是可以任何方式旋转和定位。 (形状也具有相等的面积,但是当像这样进行栅格化时,它们的像素数不太可能完全相等。) 挑战 编写可能的最短程序或函数,以吸收此类图像的文件名并转换所有白色像素... (255, 0, 0)如果它们在广场上,则为红色。 (0, 0, 255)如果它们在圆圈中,则为蓝色。 (0, 255, 0)如果它们在三角形中,则为绿色。 (255, 255, 0)如果齿轮处于黄色,则为黄色。 例如 细节 您的程序应该可以有效地处理所有可能的输入图像。(仅输入有效的300×300单色图像。)我提供的六幅图像仅是示例,您可能无法将其输出硬编码到程序中。 您不得使用内置或外部的计算机视觉库或功能。关键是要使用您自己的像素级操作来执行此操作。您可以使用仅允许您打开和修改图像的图像库(例如,用于Python的PIL)。 您可以使用任何常见的无损图像文件格式进行输入和输出,只要您遵守配色方案即可。 您可以从stdin或命令行中将图像文件名作为函数参数。可以将输出图像保存到新文件,相同文件或简单显示。 计分 字节最少的提交将获胜。我可能会用其他图像测试提交的内容,以确定其有效性。

21
解释鱼(不,不是那条鱼)
考虑以下五个ASCII艺术海洋生物: 标准鱼:><>或<>< 快速鱼:>><>或<><< 健壮的鱼:><>>或<<>< 弹力鱼:><<<>或<>>>< 螃蟹: ,<..>, 编写一个接受任意字符字符串的程序<>,.。如果有一种方法可以将整个字符串解释为一系列不重叠的海洋生物,则应重新打印该字符串,并在生物之间插入单个空格。如果无法解释,则不输出任何内容(程序静默结束)。 例如,字符串<><><>可以解释为两个标准的鱼背对背。相应的输出为<>< ><>。 作为另一个示例,该字符串><>><>>包含...的“实例” (仅将括号添加为指示符) 几个标准鱼: [><>][><>]> 一条快鱼: ><[>><>]> 一个坚固的鱼在几个方面:[><>>]<>>和><>[><>>] 但是,只有标准鱼和坚固鱼的配对[><>][><>>]跨越了整个字符串,没有鱼共享字符(没有重叠)。因此,对应于的输出><>><>>为><> ><>>。 如果可以通过多种方式解释字符串,则可以打印其中任何一种。(并且仅打印其中之一。)例如,<><<<><可以解释为标准鱼和结实的鱼:[<><][<<><],或者解释为快速鱼和标准鱼:[<><<][<><]。因此,<>< <<><或者<><< <><将是有效的输出。 螃蟹只是为了好玩。由于它们不是以<或开头或结尾>,因此更容易识别(至少在视觉上)。例如,字符串 ,<..>,><<<>,<..>,><>,<..>,<>>><,<..>,><>>,<..>,<<><,<..>,<><,<..>,>><> 显然会产生输出 ,<..>, ><<<> ,<..>, ><> ,<..>, <>>>< ,<..>, ><>> ,<..>, <<>< ,<..>, <>< ,<..>, >><> 以下是一些不产生任何输出的字符串示例(每行一个): <><> ,<..>,<..>, >>><> ><<<<> , ><><> ,<><>, <<<><><<<>>><>><>><><><<>>><>><>>><>>><>><>><<>< 如果删除开头,则可以解析这里的最后一个字符串<: <<>< …

18
BattleBots:锦标赛
结果已经完成,比赛结束了。 获胜者是arshajii的 EvilBot,取得14胜,Neo-Bot取得13胜,CentreBot和LastStand各自获得11胜。 最终成绩 Results: java Rifter: 9 match wins (45 total bout wins) java EvadeBot: 10 match wins (44 total bout wins) java EvilBot: 14 match wins (59 total bout wins) java LastStand: 11 match wins (43 total bout wins) java UltraBot: 9 match wins (40 total bout wins) …

30
编程语言中的字母
我们的任务是,在(英语)字母表中的每个字母,编写打印的字母,在其语言的程序名称以该字母开头。 输入: 无 输出: abcdefghijklmnopqrstuvwxyz 大写和尾随换行符可选 规则: 计分指标是编程语言的长名字,加上代码的长度。因此,C的“惩罚”为1,而GolfScript的惩罚为10。 每个答案一种语言/实现。鼓励多个答案。 在撰写本文之前,即2011年4月18日,应该已经存在编程语言。 如果编程语言名称的首字母不是英语字母,则不应将其强制为一个字母。它将被视为单独的字母(意味着减少竞争)。 在每个英文字母都有解决方案之前,不接受任何答案。 当前排名: 一个 PL:5 乙灰:20 Ç:35 d Ç:19 Ë:27 ˚F ISH:20 高语录:18 ^ h askell:28 我 Ø:33 Ĵ:15 ķ:13 大号胡:30 中号 ATLab的:19 Ñ IM:34 Ø WL:14 P ERL:14 Q基本:35 [R uby:17 S MBF:14 总含量:34 û尼克斯壳牌:31 V IM:12 w ^ …

10
岩石,多色,剪刀
编写一个程序,使用三种语言来玩剪刀石头布。 程序的任何版本的输入始终是字符串rock或paper或之一scissors。 程序必须使用第一语言输出击败输入的石头剪刀布选择: Input Output rock paper paper scissors scissors rock 程序必须使用第二种语言输出与输入相关联的剪刀布选择: Input Output rock rock paper paper scissors scissors 程序必须使用第三种语言输出输给输入的石头剪刀布选择: Input Output rock scissors paper rock scissors paper 以字节为单位的最短代码获胜。决胜局是最高投票的答案。 的输入和/或输出可任选地具有一个尾随的换行符但否则应该只是纯rock/ paper/ scissors字符串。您可以使用大写ROCK,PAPER,SCISSORS如果需要的话。 您不能使用同一语言的不同版本(例如Python 2和3)。

5
机器学习高尔夫:乘法
我想向这个社区提出另一种高尔夫挑战: (人工)神经网络是非常流行的机器学习模型,可以对其进行设计和训练以近似任何给定的(通常是未知的)功能。它们通常用于解决高度复杂的问题,这些问题我们不知道如何通过算法解决,例如语音识别,某些类型的图像分类,自动驾驶系统中的各种任务……对于神经网络的入门书籍,请考虑一下这方面的出色知识维基百科文章。 由于这是我希望成为一系列机器学习高尔夫球挑战中的第一项,所以我想让事情尽可能简单: 在您选择的语言和框架中,设计和训练一个神经网络,对于给定)的和之间(包括该整数)的所有整数,计算出它们的乘积。(x1个,X2)(x1,x2)(x_1, x_2)X1个⋅ X2x1⋅x2x_1 \cdot x_2X1个,X2x1,x2x_1, x_2− 10−10-10101010 绩效目标 为了符合条件,您的模型与任何这些条目的正确结果之间的偏差不得超过。0.50.50.5 规则 您的模特 必须是“传统”神经网络(节点的值是前一层中某些节点的加权线性组合,再加上激活函数来计算), 只能使用以下标准激活功能: 线性(x )= xlinear(x)=x\textrm{linear}(x) = x, SOFTMAX( X⃗ )一世= eX一世∑ĴËXĴsoftmax(x→)i=exi∑jexj\textrm{softmax}(\vec{x})_i = \frac{e^{x_i}}{\sum_j e^{x_j}}, 塞卢α ,β(x )= { β⋅ Xα ·&β(eX− 1 )如果 x > 0, 除此以外seluα,β(x)={β⋅x, if x>0α⋅β(ex−1), otherwise\textrm{selu}_{\alpha, \beta}(x) = \begin{cases} \beta \cdot x …

27
418:我是茶壶
众所周知,HTTP状态码为418:我是茶壶。 您的任务(如果您选择接受它)是使用creativitea并编写最小的服务器,该服务器以上述状态代码响应向其发出的所有HTTP请求。 适用标准漏洞,包括 从外部来源获取所需的输出 这包括执行HTTP请求以获取带有问题的页面,并从该页面提取解决方案。早在2011年,这种情况就很有趣了,但现在却是衍生且无趣的。 这意味着您不能简单地将请求重定向到另一台服务器以使其返回响应。 解决有关服务器功能的一些困惑: 只要发出HTTP请求后,服务器便会以正确的响应进行回复,那么您的服务器就可以执行任何操作(或不执行任何操作),而不会向其发出HTTP请求。

18
鲁伯·戈德堡你好世界
对于这种高尔夫,您将需要使用多种语言。 任务 一鲁布·戈德堡机器是一个玩意儿,需要以执行一个非常简单的任务的复杂步骤的数量巨大。这项高尔夫运动的目标是输出Rube Goldberg...但不直接输出。 机器 您的“机器”是源代码,一旦执行,将提供另一种语言的另一种源代码,该源代码将Rube Goldberg在执行时输出。得到它了? 我改一下:您的初始代码必须提供另一个代码,该其他代码必须输出Rube Goldberg。两种代码必须用不同的语言编写。 奖金更像是唯一有趣的方式 如果您的代码输出的代码将输出将输出...的代码,则有好处Rube Goldberg。 注意:可以使用任何类型的输出(stdout,stderr,对话框等) 要点 点数等于代码中使用的字节数除以您使用的独特的,额外的语言的数量。 注意:不同的语言使用不同的编码。字节数以其自身的编码以初始语言计数。 例子 Pyth -> J -> Javascript -> output30字节= 30/2 = 15点(J和Javascript是额外的语言) Java -> C# -> C++ -> PHP -> output在36个字节中= 36/3 = 12点(更多的字节和更多的语言可以赢得更少的字节和更少的语言(我知道这些语言不可能在36个字节中做到这一点)) C -> output10字节= 10/0 = 无限点(无其他语言) Python -> Perl -> Ruby …

30
莱根...等等...
ary! 在与未来几天可能发生的事情完全无关的事件中,我要求您编写执行以下操作的代码: 打印 Legen... wait for it... 立即使用尾随换行符。 等到下一个小时(当授予徽章的Cron工作运行时)。 打印 dary! 与可选的尾随换行符。 附加规则 您可以编写程序或函数,但必须将输出打印到STDOUT(或它的最接近的语言替代品)中。 您必须等到下一个完整小时,而不仅仅是60分钟。如果代码在6:58运行,则应在7:00打印第二行。 最后一行必须在下一个完整小时后不迟于一秒钟的时间内打印出来。 如果程序在一小时的第一秒内启动,则应等待下一个小时。 您可以查询当地时间或UTC时间。 适用标准代码高尔夫球规则。
68 code-golf  date 

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.