编程拼图和代码高尔夫

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

10
魔术六角
正如James Grime博士所解释的,有很多魔术方块,但是只有一个非平凡的魔术六角形,如下所示: 18 17 3 11 1 7 19 9 6 5 2 16 14 8 4 12 15 13 10 正如在Hexagony中所做的那样,只需逐行阅读,最容易写成一行: 18 17 3 11 1 7 19 9 6 5 2 16 14 8 4 12 15 13 10 如果计算旋转和反射,当然总共有十二个这种六边形的此类列表表示形式。例如,上述六边形的顺时针旋转1/6将导致 9 11 18 14 6 1 17 15 …

14
您是奥运会的东道主!
您主办奥林匹克运动会,并且需要为此建立一个梦幻般的游泳池,但是主管们经常改变尺寸的主意,并需要一种快速的方法来按要求的尺寸进行重建! 给定两个整数L和x,您的任务是建立一个长度L和x车道的游泳池。 游泳池如何建造? 它包含一个内部正方形,该内部正方形的水平壁由L连续的破折号(-)组成,而垂直壁由3x - 1条形(|)组成。此外,+每个角落都有4个标志。让我们举一个例子(L = 10, x = 2): + ---------- + | | | | | | | | | | + ---------- + 每个通道的宽度为2个垂直单位。内部正方形x-1由车道分隔符填充,该分隔符由L水平连续的:符号组成。放置通道分隔符后,我们的池应如下所示: + ---------- + | | | | | :::::::::: || | | | | + ---------- + 池还包含一个填充(一个外部正方形),其填充水平(L + 4)-秒,垂直填充壁(3x +1)|秒,围绕内部正方形: + …

10
对按字节预算的人进行简单加密
总览 您的目标是实施RC4加密。RC4加密技术是由RSA著名的Ron Rivest发明的,旨在确保安全性,但又足够简单,可以由战场上的军人从内存中实施。如今,RC4受到多种攻击,但今天仍在许多地方使用。 您的程序应接受包含键和一些数据的单个字符串。它将以这种格式显示。 \x0Dthis is a keythis is some data to encrypt 第一个字节代表密钥多长时间。可以假设密钥将不超过255个字节,并且不小于1个字节。数据可以任意长。 您的程序应处理密钥,然后返回加密的数据。RC4加密和解密是相同的,因此使用相同的密钥“加密”密文应返回原始明文。 RC4如何工作 初始化 RC4的初始化非常简单。256字节的状态数组被初始化为0到255之间的所有字节。 S = [0, 1, 2, 3, ..., 253, 254, 255] 密钥处理 状态值将根据键进行交换。 j = 0 for i from 0 to 255 j = (j + S[i] + key[i mod keylength]) mod 256 …

15
扩展真理机
许多人知道编程中的真机。但是现在是时候让我们努力了。介绍,扩展的真机!扩展的真理机器将两件事作为输入,一个整数n和一个非空字符串s。输出s n带有可选尾随空格的时间。但是,如果n等于0,则必须输出,s直到手动停止程序为止,即永远不要终止它。 另外,如果n为负数,则字符串需要颠倒。例如,使用s=helloand n=-1,输出将为olleh。 输入的标准方法,任何种类的输出,只要可以处理无限。如果您的答案不能处理无限大,请在有趣的情况下或以无法处理无限大输出的语言随意发布。 测试用例 n, s, output 5, "hello world", "hello worldhello worldhello worldhello worldhello world" 0, "PPCG", "PPCGPPCGPPCGPPCG..." -2, "truThY", "YhTurtYhTurt" 2000, "o", "oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo" 这是代码高尔夫球,所以最短的代码获胜! 这是原始的沙盒帖子。已对其进行了编辑。感谢@ComradeSparklePony创建了这个挑战的想法

1
展平立方体
您是否曾经看过3D形状,并认为我们有2个许多维度。因此,让我们将3D变成1D!(看看我在那里做了什么?) 任务 给定多维数据集的2D表示形式(下面的布局),根据指针将其展平为单个字符串。 多维数据集 这是立方体的布局,其中无操作(,)和指针位于角(<>v^/)。导航指针(NP)在显示的位置启动程序。 | NP begins here, moving right. V >,,,,,,,,,,,,,,,,,,v , ,, , , , , , , , , , , , , , , , , , , , , , /,,,,,,,,,,,,,,,,,,/ / , , , , , , , , , , , , …

1
防旋转安全绳
编写一个适当的quine,其每个旋转本身就是一个适当的quine。 例如,如果您的源代码是abcdef,则: abcdef 将输出 abcdef bcdefa 将输出 bcdefa cdefab 将输出 cdefab defabc 将输出 defabc efabcd 将输出 efabcd fabcde 将输出 fabcde 旋转“是通过将字符串分成两部分并颠倒其顺序来进行的”。 计分 这是代码高尔夫球。以字节为单位的最短答案将获胜。有标准漏洞。

13
放置滑翔机!
这个: 是滑翔机。 在Conway的《生命游戏》中,滑翔机是一种著名的图案,可以快速遍历整个滑板。对于今天的挑战,我们将绘制一个ASCII艺术的生命游戏板,并在其上放置一个滑翔机。 我们开始的董事会是这样的: |_|_|_|_|_|_|_|_|_|_| |_|_|_|_|_|_|_|_|_|_| |_|_|_|_|_|_|_|_|_|_| |_|_|_|_|_|_|_|_|_|_| |_|_|_|_|_|_|_|_|_|_| |_|_|_|_|_|_|_|_|_|_| |_|_|_|_|_|_|_|_|_|_| |_|_|_|_|_|_|_|_|_|_| |_|_|_|_|_|_|_|_|_|_| |_|_|_|_|_|_|_|_|_|_| 此木板完全由管道|和下划线组成_,为10x10。您必须编写一个包含两个整数“ x”和“ y”的程序或函数,并在这些坐标处使用滑翔机输出同一块板。例如,如果在位置(1, 1)(索引为0)有一个滑翔机,则必须输出以下内容: |_|_|_|_|_|_|_|_|_|_| |_|_|*|_|_|_|_|_|_|_| |_|_|_|*|_|_|_|_|_|_| |_|*|*|*|_|_|_|_|_|_| |_|_|_|_|_|_|_|_|_|_| |_|_|_|_|_|_|_|_|_|_| |_|_|_|_|_|_|_|_|_|_| |_|_|_|_|_|_|_|_|_|_| |_|_|_|_|_|_|_|_|_|_| |_|_|_|_|_|_|_|_|_|_| 您可以假设滑翔机将永远不会超出范围,因此x和y都将始终在该[0-7]范围内。您也可以选择采用1索引的坐标,但是必须在答案中指定。在这种情况下,输入将始终在[1-8]范围内。以下是一些示例(所有索引均为0): 0, 0: |_|*|_|_|_|_|_|_|_|_| |_|_|*|_|_|_|_|_|_|_| |*|*|*|_|_|_|_|_|_|_| |_|_|_|_|_|_|_|_|_|_| |_|_|_|_|_|_|_|_|_|_| |_|_|_|_|_|_|_|_|_|_| |_|_|_|_|_|_|_|_|_|_| |_|_|_|_|_|_|_|_|_|_| |_|_|_|_|_|_|_|_|_|_| |_|_|_|_|_|_|_|_|_|_| 7, 7: |_|_|_|_|_|_|_|_|_|_| |_|_|_|_|_|_|_|_|_|_| |_|_|_|_|_|_|_|_|_|_| |_|_|_|_|_|_|_|_|_|_| |_|_|_|_|_|_|_|_|_|_| |_|_|_|_|_|_|_|_|_|_| |_|_|_|_|_|_|_|_|_|_| …

1
修剪矩形草坪
草坪被定义为一个矩形区域,其中一个字符被两层可见空白包围。这意味着上方有两行,下方有两行,并且左侧有两个空格填充(右侧具有可见的空格,因此您无需将其包括在内)。 ||||| ||||| ||||| 修剪过的草坪具有类似的结构,除了主要角色是第一个角色的简化版本。 ..... ..... ..... 割草机是两个不同的角色,与两个草坪角色不同。这是一个例子,=作为割草机的后面和o前面: =o 割草机将在草坪上垂直移动,也可以在草坪的前面旋转。在动画中的某些时候,上面的割草机可能看起来像下面的任何割草机: =o o= o = = o 割草机可以在下面的草坪上的以下任何位置上启动。割草机o将顺时针绕草坪行驶。割草机0将逆时针绕草坪行驶。 = = 0 o =o|||||0= ||||| =0|||||o= o 0 = = 动画从第二个0开始。割草机每秒钟向前移动一个空间,并在其前面割草。当割草机腾出一个点时,它似乎被割断了。当割草机的前部到达生产线上的最后一个未切割的物品时(仍然有未割的草),割草机的后部旋转一次,以继续当前的割草(基于原始位置顺时针/逆时针停留)当割草机完成后,它继续笔直(修剪已经割好的草),直到完全离开草坪。 从左上角开始有割草机,这显示了5x3草坪的基本过程: Second 0 Second 1 Second 2 Second 3 Second 4 Second 5 Second 6 Second 7 Second 8 Second …

21
空缺还是没有空缺?
我们都看到过汽车旅馆的迹象,告诉我们是否有空房: 通常,这些将永久点亮VACANCY的字母,并且如果汽车旅馆中没有任何房间,则点亮NO的字母。 挑战 美国的汽车旅馆平均有200间客房。 您将编写一个程序/函数,它以整数T(对于已占用房间)为唯一输入。 然后,您的程序将显示单词NO VACANCY。的字母VACANCY将以红色打印。 如果Ť ≥200的字母NO也将在红色打印。 例如,假设a.out您的程序是“ input” =命令行参数:(我打错了字,系统忽略了大小写。) 规则 您的程序/函数必须显示(或返回 lambda )确切的字符串NO VACANCY(包括大小写)。 您的程序/功能只能将文本前景色设置为红色,而不是背景。 如果愿意,可以使用ANSI转义码来打印红色- \x1b[31m可以使用。 完成后,您的程序/功能可能不会更改外壳的文本颜色。 您的程序/功能必须正常终止。 您的程序/功能必须仅打印到标准输出。 您的程序/功能必须使用外壳程序/终端/ IDE的默认背景色。(如果选择具有图形输出,则可以选择任意颜色,红色除外)。 如果牛逼 ≤200,中的字母NO必须在你的shell /终端/ IDE的默认前景色打印。(如果选择具有图形输出,则可以再次选择所需的任何颜色) 如果出于某种原因,外壳/终端/ IDE的默认前景/背景颜色是红色,则必须使用黑色背景和默认白色前景进行打印。 如果选择使用图形输出,则只有在程序中指定了红色时,才可以使用红色(例如,背景色或默认文本颜色可能不是红色)。 获胜者,冠军 与代码高尔夫球一样,最短的程序将胜出!布朗尼点用于图形输出。 我将在一周内接受最短的答案。打高尔夫球快乐! 排行榜 var QUESTION_ID=123146,OVERRIDE_USER=61563;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"https://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&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 getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return …
17 code-golf  color 

1
Brainflak乘法Metagolf
这个问题是旨在庆祝Brain-Flak的第一个生日的几个Brain-flak Birthday挑战中的第一个!您可以在此处找到有关Brain-Flak诞辰的更多信息 去年夏天,我们有了Brain-flak Integer Metagolf,此后产生的答案对Brain-Flak社区非常有用。使Integer Metagolf如此高效的主要因素是一种称为乘法硬编码的技术。 在Brain-Flak中,运行时乘法非常昂贵。已知的最短乘法片段为: ({}<>)({<({}[()])><>({})<>}{}<><{}>) 被Megatom发现 但是,有一种非常简单的方法来创建编译时间乘法。例如,以下代码将乘以5: (({})({})({})({}){}) 在线尝试! 这是有效的,因为连续的表达式被添加在一起。每个({})都对堆栈不执行任何操作(将其{}弹出并(..)向右推),并求值到堆栈顶部的任何内容。所有这些表达式加起来等于堆栈顶部的五倍。 对于n以下任何字符串表达式,将创建一个片段,该片段会将堆栈顶部乘以n: "("+"({})"*(n-1)+"{})" 这是通过制作n所有表达式都计算到堆栈顶部的表达式来实现的。第一个n-1实际上不更改任何内容,最后一个在推送之前删除堆栈的顶部。 对于复合数字,您可以将多个较小的表达式链接在一起以节省字节。例如,您可以乘以5两次来乘以25: (({})({})({})({}){})(({})({})({})({}){}) 这很简单,对于某些数字来说,它工作得很好,但是有更好的方法可以做到这一点。例如,我想出的一种方法使用数字的二进制表示形式。(这是一个python实现)这种新方法比前面显示的简单字符串表达式要有效得多,但它还没有结束,有各种各样有趣的方式来对乘法进行硬编码,而且可能还没有发现。 所以我认为现在是时候看看我们能取得多好的成就。 大脑爆发概述 这是您对此挑战需要了解的所有信息的描述。 Brain-Flak有“ nilads”和“ monads”。Nilads是括号,里面没有任何内容。每个尼拉德人都会做一件事情,并返回一个值。对于这一挑战,我们关注的两个尼拉德是{}和<>。 {}弹出活动堆栈的顶部并返回其值。<>切换活动堆栈和活动堆栈,以便活动堆栈变为非活动状态,非活动堆栈变为活动状态,它返回零。 Monad是其中包含东西的括号。他们接受一个参数,即它们内部所有内容的总和,有时执行一个动作,然后返回一个值。我们关心的是,这些三是(...),<...>和[...]。对于此挑战,最重要的单子(...)取整内部的值并将其推入活动堆栈。然后,它返回参数。 <...>并且[...]都是“惰性”单子,即它们不执行任何操作,而是修改它们传递的值。 <...>无论传递的参数如何,总是返回零。同时[...]总是返回参数次数-1。 带有解释的示例程序 如果您从未使用Brain-Flak编程,那么最好使用描述的操作来查看一些示例程序。 ({}{}) 这会将堆栈中的前两个数字相加。每个都{}从堆栈中弹出一个值,然后(...)将其和推回。 ({}[{}]) 同样,这将从堆栈中减去堆栈中的第二个项目。就像之前每个都{}弹出一个值一样,但是[..]第二个值前后会导致它被添加。再次(...)推动总和。 ({}<{}>) 这将删除堆栈中的第二个值,并保持最高值不变。它的工作方式与最后两个一样,只不过第二个值被静音,<...>因此推入仅将第一个值推回。 (({})) 这将在堆栈顶部复制第二个值。它通过弹出堆栈顶部并{}获取其值来执行此操作,(..)然后先将其推回其值求值。第二个(...)取第一个返回的值,并将其推入堆栈。创建第二个副本。 任务 给定一个整数,n创建一个堆栈干净的Brain-Flak代码段,该代码段将当前堆栈的顶部乘以n。 您被允许使用以下Brain-Flak操作 (...) -> Push Monad, Pushes the result of …


12
没有免费的午餐
...或者在那里? 您的挑战是解析我的午餐账单,其中包含基本价格,小费,折扣,优惠券和其他费用,并找出我的午餐是否在$ 0或以下。如果这是输入: 12.34 15 tip 25 discount 1.5 extra 2 coupon 那么输出可能是false。运作方式如下: 12.34 是底价。 15 tip表示将总数增加15%。 25 discount表示从总数中减去25%。 1.5 extra表示将总数加1.5。 2 coupon表示从总数中减去2。 可能有任何数量的小费,折扣,优惠券和其他功能,但始终会有一个基本价格。 然后我们(12.34 * 1.15) * 0.75 + 1.5 - 2为10.14 做输出。10.14大于0,因此我们输出false。我的午餐不是免费的。 规则 数 tip手段添加数%至总。 数字 discount表示从总数中减去数字百分比 数字 extra表示将数字加到总数中 数字 coupon表示从总数中减去数字 另一个例子: 10 20 tip 20 discount 2 …

24
囚徒困境v.3-Petri困境
一位疯狂的科学家刚刚创造出一种新细菌!他决定将其命名为Noblus Gentlemanus,观察其行为后。但是,他的细菌已经用完了食物,并宣战了,因为它们能够收获其他细菌的尸体以获取足够的食物来复制自身。该细菌有许多不同的亚种,在玩他们最喜欢的囚徒困境时有不同的策略。每个不同亚种都有5种细菌。在《囚徒困境》中,两个玩家中的每一个都同时选择缺憾或合作。如果一个玩家选择合作,而另一个选择默认,则默认者获得2分,而合作者则损失3分。如果双方选择合作,双方将获得1分。如果两个玩家都选择默认值,则两个玩家都将失去1分。 作为贵族绅士,这种细菌决定通过玩200轮漫长的囚徒困境游戏来打赢这场战争。每个决斗的失败者都会自杀,从而使胜利者得以自我克隆。如果打成平手,两种细菌都将保持存活,但两者均无法克隆。此外,一场比赛中的所有细菌都会将其点数的10%携带到下一场比赛中。克隆携带克隆它的细菌的各个点。同样,每轮细菌有十分之一的机会突变为另一种亚种,获得0分(如果我收到对此随机性的投诉,可以将其删除)。在细菌打出的决斗数量等于细菌的亚种数量乘以十之后,疯狂的科学家不小心掉落了细菌所在的培养皿,所有细菌都获得了新的食物来源,结束了决斗。这与普通的迭代囚徒困境竞赛不同,因为它涉及带有结转分数的1v1决斗,而不是简单地尝试总体上获得最高分数。这在给定策略的有效性方面有很大的不同。 每个细菌将在回合开始时以以下格式输入:(回合编号,当前点,敌人点,您之前的举动[以字符串形式,以字符“ c”表示合作,以字符“ d”表示缺陷) ],敌人先前的举动[格式相同])。 这里将输入四个样本策略。我实际上认为Defector可能会获胜,尽管它非常简单。 针锋相对 def titfortatfunc(counter, mypoints, enpoints, mylist, enlist): if counter==0 or enlist[counter-1] == "c": return "c" else: return "d" 随机选择 from random import choice def randompickfunc(counter, mypoints, enpoints, mylist, enlist): if counter == 199: return "d" else: return choice(["d", "c"]) 合作者 def cooperatorfunc(counter, …

1
二维编程
这个世界碰巧只有一个时间维度,这是一个有趣的意外,但不一定非要如此。很难想象具有2个或更多时间维度的世界,在这些世界中,您可以构建计算机并在其上运行软件,就像在这个世界中一样。 系统 这是一个用于在两个时间维度上运行Brainf * ck程序的系统: 两个时间维度是x和y。每个Brainf * ck程序都包含一个x半程序和一个ay半程序,例如,一个程序可以是 x: +>+ y: [-] 两个半程序都有各自的程序指针,但是它们共享一个磁带指针(即,它们都在磁带的同一单元上操作)。 时间是二维的,因此它由时刻网格组成: 沿x维度移动,x半程序执行一个时间步。沿y维移动,y半程序执行一个时间步。 因此,例如,假设磁带以[0] 0 0([]表示磁带指针)开始,而x / y程序为+和->-。该程序的执行如下所示: x y tape x-action y-action 0 0 [ 0] 0 0 + at 0 - at 0 1 0 [ 1] 0 0 (done) - at 0 0 1 [-1] …

20
消除空白行上的空白
嗯,这是我对Stack的另一自私使用。 作为Chromebook的所有者,我经常使用Cloud9使用的编辑器Ace IDE。它有很多用于处理多余空白的工具,但值得注意的是缺少一种:清除空白行。 今天的任务是,从一个地方输入,我可以将其复制粘贴到[ ;)],输出相同的东西,将所有空格和制表符保存在空白行上。 我将给出一些示例,其中#s表示要删除的空白字符。 输入1: if (this.Color !== 'blue') { ## this.Color = 'blue'; } 输出: if (this.Color !== 'blue') { [empty line] this.Color = 'blue'; } 输入2: function outputSomething(times) { for (var iter = 0; iter < times; iter++) { console.log('"# # " represents a tabulator'); // …

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.