编程拼图和代码高尔夫

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

2
删除一些并计数
考虑所有2^n不同长度的二进制字符串,n并假设n > 2。您可以b < n/2从每个二进制字符串中删除确切的位,而n-b保留剩余长度的字符串。剩余的不同字符串数取决于您删除的位。假设您的目标是保留尽可能少的其余不同字符串,那么此挑战是编写代码以计算作为的函数可以保留的剩余数量n。 示例n=3和b = 1。您只能留下两个字符串11和00。 对于n=9,b = 1,2,3,4我们有70,18,6,2 对于n=8,b = 1,2,3我们有40,10,4 对于n=7,b = 1,2,3我们有20,6,2 对于n=6,b = 1,2我们有12,4 对于n=5,b = 1,2我们有6,2 这个问题最初是由我于2014年在MO上提出的。 输入输出 您的代码应采用一个整数,n并为b从b = 0和递增的每个值输出一个整数。 得分 在基于Linux的PC上n,您的代码b < n/2在不到一分钟的时间内完成所有代码的最高分。如果出现平局,则b您的代码将获得最大的n胜利。在这一准则也为最大值最快的代码领带断裂的情况n和b决定。如果时间相差一秒或两秒以内,则第一个发布的答案将获胜。 语言和图书馆 您可以使用任何喜欢的库语言。因为我必须运行您的代码,所以如果它是免费的(例如在啤酒中)并且可以在Linux中工作,则将有所帮助。

12
查找纵火犯的摇篮曲
想象一下一个纵火犯在城镇中走来走去,并按照一种非常特定的方式挑选受害者(或者,想象一下一只蜜蜂在花园里飞来飞去,并按照一种非常特定的方式挑选花朵进行花粉授粉)。假设城镇是一个N×N矩阵,其中N是大于或等于2的整数。纵火犯从左上角开始,依次将房屋M点设置在房屋前方(其中M是他们当前所在房屋的编号),同时按顺序更改每次火灾后房屋的移动方向东⟶南⟶西⟶北⟶东⟶南...依此类推。该摇篮曲纵火犯的价值是使他们离开城镇的M值(即,他们在停止憎恶之前所参观的最后一所房屋)。通过示例更容易理解。以以下矩阵为例: 3 2 3 2 7 3 1 4 1 6 2 5 3 1 1 4 4 3 2 4 1 1 1 1 1 我们从左上角开始,所以M = 3(X标记纵火犯的当前位置和先前位置): X 2 3 2 7 3 1 4 1 6 2 5 3 1 1 4 4 3 2 4 1 …

8
互相攻击皇后区
假设一个8x8的棋盘用任意两个不同的值表示,一个值是一个空的正方形,另一个值是一个皇后。在以下示例中,我将0用作空白方块,将1用作皇后。例如: 是(谁)给的 1 0 1 1 1 0 0 0 1 0 1 0 1 0 1 1 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 0 0 1 1 0 0 1 0 1 1 0 0 0 1 0 0 0 …

30
正交对角台阶
在2D矩阵中导航是一个常见的问题。我们已经看过很多次了,以后还会再见。因此,让我们帮助未来,开发最短的解决方案,以在2D矩阵中生成所有八个可能的步骤。 挑战 您的代码必须以任何顺序输出以下8对-1,0,1: (0,1) (0,-1) (1,0) (-1,0) (1,1) (1,-1) (-1,1) (-1,-1) 规则 没有输入。 输出顺序不相关 输出灵活。对数字只需要区分即可 这是代码高尔夫球,因此最短答案以字节为单位

24
文件权限
文件权限 代码高尔夫球 改编自UIL-计算机科学编程免费答案问题“ Carla”,适用于2018年学区。 介绍 在类似UNIX的操作系统中,每个文件,目录或链接均由“用户”“拥有”,该“用户”是“组”的成员,并且具有由十个字符的字符串表示的某些“权限”,例如“ drwxrwxrwx”。第一个字符为“ d”,“-”或“ l”(目录,文件或链接),后跟三组“ rwx”值,表示“读,写,执行”权限。第一组是用户的权限,中间是组的权限,第三组是该对象的其他所有人的权限。 这些权利中的任何一项均被拒绝的许可由“-”代替“ r”,“ w”或“ x”表示。例如,样本目录许可权字符串将为“ drwxr--r--”,指示用户的完整目录权限,但指示组成员和所有其他用户的“只读”权限。 每个“ rwx”组合也可以用八进制值(0-7)表示,其中最高有效位表示读取许可,第二高有效位表示写入许可,最低有效位表示执行许可。 挑战 给定一个由以下四个字符组成的代码字符串:“ D”,“ F”或“ L”,然后是一个三位数的八进制整数值(例如664),输出表示许可值的10个字符串指示。 输入项 您的程序或函数可以从标准输入中读取输入(将输入四个字符,可以选择后面跟换行符),也可以将输入作为参数传递。 您的程序可以接受大写或小写输入,但必须一致(所有输入均为大写或所有输入均为小写)。 输出量 您的程序必须输出结果的十个字符的字符串,该字符串表示以上面指定的确切格式表示的权限值。允许拖尾空格。 测试用例 输入:F664输出:-rw-rw-r-- 输入:D775输出:drwxrwxr-x 输入:L334输出:l-wx-wxr-- 输入:F530输出:-r-x-wx--- 输入:D127输出:d--x-w-rwx 计分和规则 禁止使用标准孔。 适用标准规则。 请提供链接以测试您的代码以及说明。 这是代码高尔夫球,因此最短答案以字节为单位!
26 code-golf 

19
简单的字符串反射
让我们从定义字符串中字符的反射开始: 给定一个字符串,该字符串具有不同的小写字母字母,且不带空格,例如abcdefg,则将字符串中的字母反射c(不更改任何其他字母的顺序)定义为字符串中的新位置,以使字母的数量最初现在,它右边的字母是它左边的字母数。 因此,信的反射c中abcdefg会abdecfg。说明:的右边有4个字母c,现在,的左边有4个字母c。 其他示例: 反映性格e中myfriend就会形成串myefrind 反映性格a中axyz会形成串xyza。 反映性格b中abc会形成串abc。 反映性格d中d会形成串d。 反映性格e中ef会形成串fe。 有关更多信息或尝试一些测试用例,这是我用C ++编写的(有点长)程序。 挑战 给定一个带有不同小写字母的字符串,请按字母顺序遍历每个字符,然后将其“反映”在字符串中。 说明:字符串中的字母来自a-z,没有空格,字母是唯一的,字符串的长度至少为1个字母,最长为26个字母。 例子 输入:dcba。输出:dcba。 原因:首先,应反映a字母,因为它是字母中最早出现的字符串中的字符。你会得到adcb。然后,反映b字母中紧随其后的以获得badc。然后,反映c得到cbad,然后d得到dcba。 输入:myface。输出:fyecma。 提示:按顺序浏览字母a, c, e, f, m, y。 输入:a。输出:a。 输入:acb。输出:bac。 输入:cwmfjordbankglyphsvextquiz。输出:ieabhqzugdltkfnvpjxsormycw。 计分 输入和输出可以通过任何方便的方法给出。 完整的程序或功能都是可以接受的。如果是函数,则可以返回输出而不是打印输出。 禁止出现标准漏洞。 这是代码高尔夫球,因此所有常见的高​​尔夫规则都适用,并且最短的代码(以字节为单位)获胜。 发布后约100小时接受。 现任优胜者 显示代码段 <style>body { text-align: left !important} #answer-list { padding: 10px; width: 290px; float: left; } #language-list …
26 code-golf  string 

30
打印上一个答案!
这是一个答案链挑战,其中每个答案都基于前一个答案。不输入任何内容,您将向该线程输出最新提交。 我强烈建议按最旧的排序,然后跳到最后一页以找到最新的答案。 计分 优胜者将根据分数系统进行选择。 每个用户的每个有效提交都获得1分。 但这是有趣的部分: 如果您提交的内容(以字节为单位)比上一个答案(您的输出)短(以字节为单位),那么您的提交分数将乘以字节差。 话虽如此,您的答案不必短于上一个。 获胜者是拥有最高总积分的用户,并且将在此线程上闲置2周后被选中。 规则 每个新答案必须使用唯一语言,请在发布答案之前检查以下列表。 如果您刚刚发布,则必须至少等待1个小时才能提交新答案。 您可能不能连续提交两个答案,您必须等待另外两个提交,然后才能发布新答案。 当然,不允许出现标准漏洞 语言的不同版本(例如Python 1,Python 2和Python 3)被视为不同的语言。 输出到标准输出或您的语言输出文本的标准 您的代码不得产生任何错误 检查以确保在您编写自己的答案时没有人提交答案,如果是,请调整并重新提交您的代码。 请确保您的答案有效 您的输出将是前一个答案,并且仅是前一个答案。允许空格和换行符,条件是输出仍按以前的语言运行。 请检查您的输出以确保其正确运行。 笔记 我想鼓励您使用深奥的语言来使事情变得有趣 我也想鼓励添加TIO链接,以简化测试和验证。 开工 我将通过发布一个非常简单的Python 1脚本开始这一挑战: print 1 下一次提交应完全打印此代码。 格式化 请按以下格式设置您的信息: Answer Number - (language) [code] (preferably a TIO link) [Submission Score] [notes, explanations, whatever you …

9
2D阵列中最大的矩形
输入项 板子:字母的2D容器(矩阵,列表列表等),例如: ["B", "C", "C", "C", "C", "B", "B", "C", "A", "A"], ["B", "A", "C", "B", "B", "A", "B", "B", "A", "A"], ["B", "C", "B", "C", "A", "A", "A", "B", "C", "B"], ["B", "B", "B", "A", "C", "B", "A", "C", "B", "A"], ["A", "A", "A", "C", "A", "C", "C", "B", …

3
高尔夫免费午餐
在给定汇率表的情况下,找到最大获利的交易所序列。 例如,考虑货币的一个 riary(你的本国货币),乙 AHT,Ç EDI和d,其中从一个到另一个率(任何交易率已经征收后)由(行,列)在入门给出ENAR汇率表如下: TO A B C D A 0.9999 1.719828 4.509549 0.709929 F B 0.579942 0.9999 2.619738 0.409959 R O C 0.219978 0.379962 0.9999 0.149985 M D 1.39986 2.429757 6.409359 0.9999 显然,用A交换A并不是一个好主意,因为这张桌子会很乐意向您收取任何费用。 不太明显,但在此表中是正确的,将A交换为任何其他货币,然后再次交换回去会造成损失: via B: 1.719828 × 0.579942 = 0.997400489976 via C: 4.509549 × 0.219978 = 0.992001569922 …

12
扩大压缩的脑裂
此挑战是2018年4月LotM挑战以及Brain-flak 2岁生日的一部分 我在考虑编码Flask程序的最有效方法是什么。由于只有8个有效字符,因此显而易见的事情是将每个字符映射到3位序列。这肯定是非常有效的,但是仍然很多余。我们可以利用脑剥落代码的某些功能来缩短编码。 全部由2个匹配的方括号表示的nilads实际上充当单个信息单元,而不是2。如果我们用单个字节字符替换每个方括号,这将使编码小得多而不会丢失任何数据。 这个不太明显,但是monad 的结束字节也是多余的。您认为您可以猜出'?'以下代码段中的字符代表什么吗? {(({}?<>?<>? 如果我们假设输入的内容是有效的大脑标志,那么每个问号只有一个选项。这意味着我们可以明确地使用close monad字符来表示每个结束括号。这具有使字符集保持较小的附加好处,如果我们想使用霍夫曼编码,这将大有帮助。由于接近的monad字符很可能会成为最常见的字符,因此可以用一点来表示,这非常有效。 这两个技巧将使我们通过以下算法来压缩脑筋代码: 用替换monad的每个右括号|。换句话讲,将每个未在开头匹配之前的右方括号替换为小节。所以... (({})<(()()())>{}) 会成为 (({}|<(()()()||{}| 用它的封闭支架替换所有的尼拉丁。因此,其中没有任何内容的匹配方括号将使用以下映射: () --> ) {} --> } [] --> ] <> --> > 现在我们的最后一个示例变为: ((}|<()))||}| 删除尾随|字符。因为我们知道小节的总数应等于({[<字符总数,所以如果末尾缺少小节,我们可以推断出它们。因此,例如: ({({})({}[()])}) 会成为 ({(}|(}[) 今天的挑战是逆转这一过程。 给定一串只包含字符的压缩后的Flask,将其(){}[]<>|扩展为原始的Flak代码。您可以假设输入将始终扩展为有效的大脑标志。这意味着输入的前缀中|最多不会包含({[<字符。 输入将不包含结尾|字符。这些必须从上下文中推断出来。 与往常一样,您可以提交完整的程序或函数,并且输入/输出格式是允许的。并且由于这是一个代码高尔夫,因此您的代码将按源代码的长度(以字节为单位)进行评分,分数越小越好。 测试用例 这是一些测试用例。如果您想要更多,可以使用此python脚本和Brain-Flak Wiki生成自己的测试用例,这是大多数测试用例的来源。 #Compressed code #Original code ()))) (()()()()) ([([}()||||(>||{(})|>|}{((<}|||>}|}>} ([([{}(())])](<>)){({}())<>}{}{((<{}>))<>{}}{}<>{} ({(}|(}[)|||} ({({})({}[()])}{}) …

30
往上走!
给定整数N,请执行以下步骤:(以9为例)。 接收输入N。(9) 将N从base10转换为base2。(1001) 每增加1。(2112) 将结果视为base3并将其转换回base10。(68) 返回/输出结果。 输入项 可以以任何合理的数字格式接收。 您只需要处理N> 0的情况。 输出量 以数字或字符串形式返回,或打印到stdout。 规则 这是代码高尔夫球,以字节为单位的最短代码获胜。 禁止默认漏洞。 测试用例 1 -> 2 2 -> 7 5 -> 23 9 -> 68 10 -> 70 20 -> 211 1235 -> 150623 93825 -> 114252161

1
三维象棋
为了捍卫某人的莫名其妙的决定,人们经常说那个人在每个人的头顶上方,下着“ 3D国际象棋”。现在,您就有机会下3D象棋! 规则 3D Chess有很多变种,但是对于这个挑战,我已经做好了自己的准备。我的版本与常规国际象棋一样,除了棋子位于立方体而不是正方形内,并且现在具有更大的运动尺寸。为了使这一挑战变得简单,没有典当也没有铸造。 件运动 (指南针方向是指在标准棋盘上发生的移动,“向上”和“向下”是指在3D棋盘上垂直移动)。 国王 -在给定的回合上可以移动26个正方形:N,NE,E,SE,S,SW,W,NW; 以及上,下和上/下+指南针方向之一。 女王 -可以朝国王的方向移动,但只要她想朝这些方向移动即可。 车鸦 -可以在6个方向上移动:N,E,S,W,向上和向下, 毕晓普 -有旅行的8个triagonal方向:NE +上/下,SE +上/下,SW +上/下,NW +向上/向下 骑士 -一个轴移动2个空间,然后再移动1个空间。就像普通的国际象棋一样,骑士是唯一可以超越其他棋子的棋子。 零件测试仪 使用此代码段查看不同块在3D板上的移动方式(提示:*Test只需根据距块的绝对距离,即可查看JS中的功能,以快速确定正方形是否为有效移动。): const color = "Black"; const pieces = ["N","B","R","Q","K"]; const urls = ["https://image.ibb.co/gyS9Cx/Black_N.png","https://image.ibb.co/dknnzc/Black_B.png","https://image.ibb.co/kb3hXx/Black_R.png","https://image.ibb.co/hGO5kH/Black_Q.png","https://image.ibb.co/jApd5H/Black_K.png"]; var dragPiece; var size = 3; var index = 0; function start() { Array.prototype.add …

30
实施惰性删除排序
这个挑战已经描述了dropsort。但是,我有点懒,我真的只需要对数组进行比以前更多的排序,就不必一直对它进行排序了。 在“丢弃排序”中,我们将每个元素丢弃的数量要少于之前的任何元素。在“延迟删除排序”中,我们删除的每个元素都小于严格位于其前面的元素。 这是一个例子。考虑以下数组: 8 6 9 9 7 2 3 8 1 3 让我们标记每个元素少于之前的元素。 8 6 9 9 7 2 3 8 1 3 ^ ^ ^ ^ 注意,既没有3标记,也没有标记8。它们都比它们左侧的单个元素大。 完成算法,除去标记的元素,我们得到: 8 9 9 3 8 3 这基本上看起来更加排序。金田 我很懒。 您可能已经推断出,您的任务是实现此算法。 输入是1到9之间的至少1个正整数的数组,因此您也可以使用数字字符串。 这是代码高尔夫球,最少字节获胜! 其他测试用例: 1 1 1 2 3 1 2 3 …

22
稀释整数和
可以通过在二进制扩展的两位之间插入a 来稀释正整数0。这意味着- n位数字具有n-1稀释度,稀释度不一定全部不同。 例如,对于12(或1100以二进制形式),稀释为 11000 = 24 ^ 11000 = 24 ^ 10100 = 20 ^ 在此挑战中,我们将取所有稀释液的总和,不包括原始数量。因为12,取24, 24, 20结果的总和68,因此68的输出也应该是12。 挑战 给定一个正整数n > 1作为输入,输出/返回如上所述的稀释总和。 例子 in out --- --- 2 4 3 5 7 24 12 68 333 5128 512 9216 规则 可以假定输入和输出适合您语言的本机整数类型。 输入和输出可以任何方便的格式给出。 完整的程序或功能都是可以接受的。如果是函数,则可以返回输出而不是打印输出。 禁止出现标准漏洞。 这是代码高尔夫球,因此所有常见的高​​尔夫规则都适用,并且最短的代码(以字节为单位)获胜。

6
辐射探测器!
防辐射程序是一种程序,其中如果删除了代码中的任何字符,该程序仍将起作用。对于这个问题,我们将编写一个程序来检测何时被照射。 编写一个程序或函数,当删除任何单个字节时,结果程序将输出该字节,并且仅输出该字节。(您可以多次输出该字节,只要不输出其他字节) 规则: 该程序必须包含至少2个不同的字节。(没有仅0的解决方案;) 原始程序做什么都没关系 无需阅读自己的源代码。 该代码将以最大字节数获胜的不同字节数计分。例如,abc= 3分,ababba= 2分,abc获胜。 决胜局是较小的字节数,其后是较早的提交时间 祝好运!

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.