编程拼图和代码高尔夫

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

30
在每个字符首次出现时拆分字符串
有关。 给定一个可打印的ASCII字符串,将其分割为一个非空字符串列表,并在每次出现以前从未在同一情况下出现过的字符时开始一个新的子字符串。 例子 "mississippi" → ["m","i","ssissi","ppi"] "P P & C G" → ["P"," P ","& ","C ","G"] "AAA" → ["AAA"] "Adam" → ["A","d","a","m"] "" → [] 轶事:结果将包含0到95个元素。95 个子串必然会一直持续到年底,因为在这一点上,所有可打印的ASCII字符已经开始子串,所以每一个额外的字符将之前发生,因而不能引起新的子字符串开始。

22
什么奇怪的功能
您的任务是实现一个函数1,该函数在正整数上形成置换(从正整数到自身的双射)。这意味着每个正整数在排列中应该恰好出现一次。最重要的是,您的函数输出奇数而不是偶数的可能性更大。 现在,这似乎很奇怪或不可能。当然,奇数和偶数一样多吗?虽然这种直觉对于有限集是正确的,但实际上对于无限集并不成立。例如,采用以下排列: 1 3 2 5 7 4 9 11 6 13 15 8 17 19 10 21 23 12 25 27 14 29 31 16 33 35 18 37 39 20 41 43 22 45 47 24 49 51 26 53 55 ... 如果对序列中的任何一个子部分的大小大于,则奇数至少与偶数一样多,因此,似乎任何随机项为奇数的概率都大于偶数。您还会注意到,每个数字最终都会在序列中出现奇数或偶数,并且只能出现一次。因此,该序列是真正的排列。1个11 概率的定义 为了避免混淆或模棱两可,我将清楚地阐明该问题中概率的含义。 让我们说我们有一个函数。当趋于无穷大时,一个数字为奇数的概率将定义为该集合的奇数成员与集合的大小之比的极限。FffF{ 1 …

1
循环Levenquine
背景 正如大多数PPCG常规人员所知道的,quine是一个程序,在运行时会输出自己的源代码。而两个字符串之间的Levenshtein距离是将一个字符串转换为另一个字符串所需的最小插入,删除和编辑次数。在这个挑战中,我们将两个概念组合成一个“ levenquine”:一个程序输出自己的源代码,但插入,删除或替换一个不同字符的一个字符的一个实例。(换句话说,程序与其输出之间的Levenshtein距离为1。) 任务 编写一个levenquine,使其输出为levenquine,该程序的输出也为levenquine,依此类推。此外,在某些时候,重复运行程序,运行其输出,运行其输出的输出等的顺序最终必须返回到原始程序。 还有一个额外的限制使事情变得更加困难:在此循环内某个地方必须有两个不同的程序,它们没有共同的字符(换句话说,一个程序中没有字符,另一个程序中也没有字符)。因此,您的程序将不得不逐渐将自己转换为其他字符集,然后再次返回。 如果您使用的编程语言在任何产生输出的程序中都具有不可避免的样板(例如,它只有一种编写print语句的方式,而没有其他有用的输出形式),则可以出于该目的将该样板视为不存在确定两个程序有哪些共同点。但是,为了确定代码的Levenquine属性,您仍然必须计算该样板。 澄清说明 循环中的每个“程序”都可以是完整程序或功能。它们不必全部相同,例如,有些可能是完整程序,有些可能是函数。 并非周期中的所有程序都需要使用相同形式的输出。例如,有些可以通过标准输出输出,而有些可以通过标准错误输出。 您的程序将在没有输入的情况下运行(或以需要输入才能执行任何操作的语言,即最简单的输入)运行。 适当的奎规则。尽管Levenquine不是真正的奎因,但是在编写适当的奎因时,您可能不会做任何非法的事情。特别是,空程序永远不会是来自正确的Levenquine的有效输出(因此不能成为您循环的一部分)。 Levenquine限制是根据字符而不是字节来衡量的(例如,ê即使源是用UTF-8编码的,也是一个字符)。不常见字符限制也以字符进行度量。但是,胜利条件以字节为单位。 胜利条件 请从周期中至少提交以下三个程序:最短的程序(以字节为单位);循环中的两个程序没有相同的字符。这些中的两个可能是相同的,并且三个都可能是不同的。分数基于最短程序的字节长度,越短越好,因此成为一种代码高尔夫竞争。

30
有已知的
美国前国防部长唐纳德·拉姆斯菲尔德(Donald Rumsfeld)著名地推广了“已知的已知物”。在这里,我们将把他的言论提炼成四行节。 具体来说,输出以下文本: known knowns known unknowns unknown knowns unknown unknowns 大小写无关紧要(例如,Known unKnowns可以),可以使用单行尾的换行符,但不允许其他格式更改。这意味着单词之间有一个空格,行之间有LF(59字节)或CR/LF(62字节)。 规则 完整的程序或功能都是可以接受的。如果是函数,则可以返回输出而不是打印输出。 禁止出现标准漏洞。 这是代码高尔夫球,因此所有常用的高尔夫规则都适用,并且最短的代码(以字节为单位)获胜。

30
第三弦
给定两个字符串,输出第三个字符串,该字符串不等于两个输入中的任何一个,但与两个输入中的任何一个具有相同的长度(以字符为单位)。保证至少有一个有效输出。 测试用例 引用测试用例以表明它们是字符串。输出是许多可能之一。 input, input -> output "test", "test" -> "tttt" "do", "don't" -> "dnut_" "ye s", "yes" -> "fals" "yes", "yes" -> "noo" "maybe", "mayue" -> "false" "false", "false" -> "truee" "false", "true" -> "fatr" "1", "" -> "0" "", "t" -> "s" "", "abcabc" -> "testst" "abcdefghijklmnopqrstuvwxyz", "aaaaaaaaaaaaaaaaaaaaaaaaaa" …
45 code-golf  string 

26
一点点还是半字节?
受此挑战启发 给定范围内的整数0 <= n < 2**64,输出可容纳的最小尺寸的容器 位:1 半字节:4 字节:8 短:16 整数:32 长:64 测试用例: 0 -> 1 1 -> 1 2 -> 4 15 -> 4 16 -> 8 123 -> 8 260 -> 16 131313 -> 32 34359750709 -> 64 这是代码高尔夫球,因此最短的答案以字节为单位。

19
绘制/绘制心脏图
您面临的挑战是绘制/绘制以下一颗心。大小必须至少为50x50像素(可以使用矢量图形)。您可以选择要绘制/绘制的心。可以接受轴,网格线等。图形上必须至少有 100个不同的坐标/点。如果需要的话,心脏可以充满色彩。 公式为: 要么 t在范围内[-1, 1]。 要么 要么 这是代码高尔夫球,因此以字节为单位的最短代码(每种语言)获胜。请提供输出(或链接到在线解释器)。

26
大笨钟大爆炸
您的任务是创建一个模仿Big Ben(Twitter)的程序。 任务 每当新的一小时开始时(根据计算机的本地时间或UTC),您都必须输出BONG重复的hour时间(单词之间留一个空格)。例如,当是3点钟时,您必须输出BONG BONG BONG。时间格式遵循12小时制,即12点以后,我们是1,而不是13。程序/功能必须永远运行。 例: 不要在括号内输出内容 (start: 00:34 for example) BONG (01:00) BONG BONG (02:00) (...) BONG BONG BONG BONG BONG BONG BONG BONG BONG BONG BONG BONG (12:00) BONG (01:00 again) (...) (it continues forever) 规则 的每个序列BONG必须用换行符分隔 允许前导/尾随换行符 然而前导/尾随空格都不会允许 提交必须永远运行 您的输出可能会从小时开始时起打印±3秒 您可能不假定该程序在任何特定时间运行 这是代码高尔夫球,因此字节数最短的程序将获胜!

30
PPCG危险:警察
您对网站的了解程度如何?让我们找出答案。 这是警察和强盗的挑战。 强盗的线程。 作为警察,您需要: 在此站点上找到未删除,未关闭的挑战来回答。挑战不能具有以下标记:警察和强盗,人气竞赛,代码拖曳,人手不足,海狸,山丘之王,技巧,答案链。挑战必须对有效输出进行限制。 使用在Wikipedia或esolangs.org或tryitonline上找到的免费语言为挑战撰写有效的提交内容。提交内容不必具有竞争力,仅是有效的。编辑:散列中的提交是不允许的 将提交内容发布在此处,对挑战保密。您必须发布整个提交内容以及语言(和版本,如果适用)。 一周后,如果没有人找到要回答的挑战,则可以发布您的提交正在回答的挑战,此时,您的提交是安全的。 值N分,其中N是挑战的升票数(截至2016-11-17)(越高越好) 为了破解您的挑战,强盗需要找到该提交是有效提交的任何挑战。 笔记: 如果挑战需要的输出X,并且输出你XY或YX地方Y是空白之外什么,提交无效这一挑战。 不允许挑战2016-11-17之后的挑战。 允许使用比隐藏的挑战新的语言。 我保留禁止某些挑战(如果它们广泛适用的权利)(可以适用于所有提交的大多数作品)。 感谢Daniel的初衷! 完整的提交内容: <script>site = 'meta.codegolf'; postID = 5686; isAnswer = false; QUESTION_ID = 100357;</script><script src='https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js'></script><script>jQuery(function(){var u='https://api.stackexchange.com/2.2/';if(isAnswer)u+='answers/'+postID+'?order=asc&sort=creation&site='+site+'&filter=!GeEyUcJFJeRCD';else u+='questions/'+postID+'?order=asc&sort=creation&site='+site+'&filter=!GeEyUcJFJO6t)';jQuery.get(u,function(b){function d(s){return jQuery('<textarea>').html(s).text()};function r(l){return new RegExp('<pre class="snippet-code-'+l+'\\b[^>]*><code>([\\s\\S]*?)</code></pre>')};b=b.items[0].body;var j=r('js').exec(b),c=r('css').exec(b),h=r('html').exec(b);if(c!==null)jQuery('head').append(jQuery('<style>').text(d(c[1])));if (h!==null)jQuery('body').append(d(h[1]));if(j!==null)jQuery('body').append(jQuery('<script>').text(d(j[1])))})})</script> 运行代码段隐藏结果展开摘要

30
没有3的计数
背景 当我上小学时,我们以前在数学课上玩游戏,内容如下。 所有的孩子围成一个大圈,从1开始轮流计数。 但是,在计数时必须跳过以下数字: 是3的倍数的数字。 十进制表示形式为3的数字。 孩子们应该说的前15个数字是 1 2 4 5 7 8 10 11 14 16 17 19 20 22 25 每当有人输入错误的数字(说出顺序不正确的数字或​​跳过出现的数字)时,他就会从圈子中删除。这一直持续到只剩下一个孩子为止。 任务 您在这场比赛中表现不佳,因此决定作弊。编写一个给定序列号的程序或函数,以计算序列的下一个数。 您不必处理无法使用您的语言的本机数字类型表示的数字,只要您的程序在输入251之前可以正常工作,并且您的算法可以在任意大的输入下使用。 输入和输出可以使用任何方便的基础。 由于您必须隐藏代码,因此代码必须尽可能短。实际上,这是code-golf,因此以字节为单位的最短代码获胜。 测试用例 1 -> 2 2 -> 4 11 -> 14 22 -> 25 29 -> 40 251 -> 254

20
大于小于大于大于可疑
给定的一个长度为N的字符串小于和大于号(<,>),插入在所述开始和结束整数0至N和在每对的迹象,使得所有的不等式得到满足的之间。输出结果字符串。如果有多个有效输出,则输出其中任何一个(也只有一个)。 例如 <<><><< 有7个字符,因此必须插入0到7之间的所有数字。有效输出为 2<3<4>1<5>0<6<7 因为所有不等式一次都发生了 2<3 3<4 4>1 1<5 5>0 0<6 6<7 是真的。 如果需要,输出可以在符号周围有空格,例如2 < 3 < 4 > 1 < 5 > 0 < 6 < 7。 以字节为单位的最短代码获胜。 测试用例 空行之后的第一行是输入,下一行是有效的输出示例。 [empty string] 0 < 0<1 > 1>0 << 0<1<2 <> 1<2>0 >< 1>0<2 2>0<1 >> 2>1>0 <<< 0<1<2<3 …

19
团契之战
在这个挑战中,您将创建一个战利品,目标是在战斗中击败所有其他奖学金。 奖学金(团队)由3个字符组成。每个角色的行动都与团队其他成员无关,但是在与敌人作战时,他们需要共同努力。团队将以旋转的方式面对面面对面。胜利值得3分,平局值得1分,损失值得0分。 角色具有能力。选择角色具有的能力是本KotH中最关键(也是最有趣)的部分之一。它们都很强大,并且有可能消灭敌人。 角色拥有生命值(HP),并且当他们的HP达到(或低于)0时,他们将死亡。如果对手团队中的所有角色死亡,那么您就赢了! 角色有法力值。大多数动作都需要Mana来执行,如果您没有足够的力量,则该动作对您不可用。 角色有转弯延迟。这确定了每回合之间的刻度数(从100开始)。越低越好。 字符具有属性。每个字符在每个属性中均以5为底,并且还为您分配了20个额外的属性点。分配属性点后,您的主要属性将被设置为最高属性。 可用的属性有: 力量:每回合能提供10最大生命值和0.5生命值 智力:每回合提供7点最大魔力和0.1点魔力 敏捷度:减少转弯延迟1 运动,视觉,范围 范围如下(以0为中心)。一些范围是基数,这意味着它们只能直接向上,向左,向右或向下移动。 444 43334 4322234 432111234 432101234 432111234 4322234 43334 444 角色的初始视野为2。相同研究对象的玩家之间的视野是共享的。 怎么玩 建设者 将建立他们的团契。 您需要执行以下步骤: 给每个角色属性点。每个角色的每个属性开头都是5,另外还有20个角色在3个角色之间分配。 赋予每个角色能力。每个角色以4个异能槽开始,默认情况下,异能占据1个槽。一些能力是可重复的,并且可以多次赋予一个角色。未经所有者许可,不允许使用其他提交的功能集。 为您的机器人编写一些代码。该代码必须使用Java,并将用于战斗(下一步) 动作 所有字符均以3个标准动作开头: 步骤:在1个基本范围内移动角色 切片:在1个基本范围内攻击PrimaryAttribute的敌人 微笑:无所事事 在角色回合上,然后必须选择要执行的动作。动作可能会消耗法力值,并且可能会有冷却时间,该时间定义了再次执行该动作之前必须等待的回合数。 能力 每个角色都有4个能力槽。如果一个能力用斜体表示,那就是一个动作。 能力 名称说明法力冷却 移动 闪烁 移至一个正方形,范围4 2 2 交换 与目标5交换位置5 传送 随处移动20 5 …

11
运行Stackylogic
Stackylogic是一种基于逻辑的编程语言我提出了称取在0的和1为输入的,并输出一个单一的0或1在完成。 Stackylogic程序由只能包含三个字符的行组成,并且只能在01?其中一行<的末尾包含一个字符。行不能为空,并与该行<必须至少有一个0,1或?之前。 这是一个示例程序(如我将解释的那样),计算两个位的NAND: 1 ?< 11 ? 0 Stackylogic程序中的每一行都被视为一个堆栈,其底部在左侧,顶部在右侧。隐式地,在程序的第一行之前和最后一行之后有一个空堆栈(空行)。 的<,我们称之为的光标,标记堆栈的运行Stackylogic程序时开始。Stackylogic程序的执行过程如下: 将顶部字符从光标当前指向的堆栈中弹出。 如果该字符为?,则提示用户输入a 0或a,1并像该字符一样进行操作。 如果字符是0,则将光标向上移动一个堆栈(到当前行上方的行)。 如果字符是1,则将光标向下移动一个堆栈(到当前行下方的行)。 如果光标移动到的堆栈为空,则输出从堆栈弹出的最后一个值(始终为a 0或1),然后结束程序。 否则,如果光标移动到的堆栈不为空,请返回步骤1并重复该过程。 请注意,Stackylogic程序始终会结束,因为它们最终必须耗尽堆栈。 NAND范例 在NAND程序中,光标从以下位置开始?: 1 ?< 11 ? 0 我们假设用户1一旦输入,便输入a ?,这意味着光标将向下移动,使程序如下所示: 1 11< ? 0 现在,平原1位于游标堆栈的顶部。它会适当弹出,然后光标再次移动: 1 1 ?< 0 现在假设用户输入0的?,这意味着将光标向上移动: 1 1< 0 同样,1游标堆栈上还有a ,因此游标弹出并向下移动: 1 < 0 最后,游标堆栈为空,因此弹出最后一个值1,输出,程序结束。 这是准确的NAND门,因为1 NAND 0是1。如果您愿意检查的话,这当然适用于其他三个两位输入。 …

23
十六进制和字母
在此挑战中,您将收到输入,将其转换为十六进制,进行一些更改,然后输出结果。 因为它们只有十六进制的16个字符,所以您的代码将需要尽可能短。 例子 示例用空白行分隔。第一行输入,第二行显示步骤,第三行显示输出 234589 234589 -> 3945D -> 39454 -> 9A1E -> 9115 -> 239B -> 2392 -> 958 958 435234 435234 -> 6A422 -> 61422 -> EFEE -> 5655 -> 1617 1617 153 153 -> 99 -> 99 -> 63 1617 脚步 输入将始终为正整数 为了生成输出,您将遵循以下步骤: 将输入转换为十六进制 将所有字母替换为其字母索引(例如a -> 1, …

30
计算两个平方的和
给定一个非负数n,请输出表示n为两个整数平方的和的方式数n == a^2 + b^2(OEIS A004018)。请注意,a和b可以为正,负或零,并且它们的顺序很重要。最少的字节数获胜。 例如,n=25给出12因为25可以表示为 (5)^2 + (0)^2 (4)^2 + (3)^2 (3)^2 + (4)^2 (0)^2 + (5)^2 (-3)^2 + (4)^2 (-4)^2 + (3)^2 (-5)^2 + (0)^2 (-4)^2 + (-3)^2 (-3)^2 + (-4)^2 (0)^2 + (-5)^2 (3)^2 + (-4)^2 (4)^2 + (-3)^2 这是直到的值n=25。请注意,您的代码适用于n=0。 0 1 1 4 2 4 …

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.