编程拼图和代码高尔夫

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

18
画一个坎String的弦
(受此挑战启发。) 假设我们有一个字符串ABBCBA。我们可以说,之间存在上升A和B,为B如下A; 我们可以说B和之间有一个过渡B,没有任何变化;最后我们可以说C和之间有一个落差B。我们可以这样画一个图: A B B C B A Rising: o o Continuing: o Falling: o o 没有标签,并最小化空白: o o o oo 这是输入的预期输出ABBCBA。 您可以使用任何非空白字符替换o输出中的字符。此外,每列之间可以选择有一个额外的空间,如下所示: o o o o o 输入内容将至少包含三个字符。该字符串将完全由大写字母组成,但是您可以改用小写字母。 测试用例 TEST CASE LINE 1 LINE 2 LINE 3 HELLOWORLD o oo o o o o oo TESTCASE oo o …

10
四路交叉口发电机
这是四向交叉的ASCII艺术: | | | | | | | | | | | | | -----+-----+----- | | - - -| |- - - | | -----+-----+----- | | | | | | | | | | | | | (请注意,水平道路的高度为3行,而垂直道路的宽度为5列。这是出于审美原因,因为是矩形字体。) 您的挑战是产生这种ASCII艺术。但是,正如我确定的大家所知道的,并不是每个交叉路口都有在每个方向上行驶的道路。这个特定的路口走了NESW,但是某些路口可能走了,例如NW: | | | | | | | | | …

1
找出Android锁定模式
假设您看到您的朋友在他们的Android手机中输入了他或她的密码。您不记得他们是如何制作图案的,但是您仍然记得图案的外观。作为您关心的朋友,您想知道他们的密码有多安全。您的工作是计算形成特定图案的所有方式。 Android模式如何运作 模式是在3x3的节点网格上绘制的。在一种模式中,无需访问屏幕即可访问一系列节点。他们访问的每个节点都通过一条边连接到前一个节点。要记住两个规则。 您最多只能访问一个节点 边缘可能无法通过未访问的节点 请注意,尽管通常很难执行,因此在实际的android锁组合中并不常见,但可以像Knight一样移动。即,可以从一侧移动到不相邻的拐角处或以另一种方式移动。这是采用此举的两种模式示例: 这是正在执行的动画Gif。 解决模式 典型的模式可能如下所示: 对于这种简单的模式,有两种方法可以绘制两种模式。您可以从两个松散的一端开始,然后穿过突出显示的节点到达另一个节点。尽管对于许多模式而言都是如此,但对于人类通常采用的模式而言,并非对所有模式都如此。 考虑以下模式: 有两种立即可识别的解决方案。从左上方开始的一个: 还有一个从底部中心开始: 但是,因为一旦选择了一条线,就允许它通过一个点,因此从顶部中间开始有一个附加的花样: 这个特定的模式有3个解决方案,但是模式可以有1到4个解决方案之间的任何位置[需要引用]。 以下是每个示例的一些示例: 1。 2。 3。 4。 输入输出 节点可以表示为零到九之间的整数,它们的等效字符串或a到i(或A到I)的字符。每个节点必须具有这些集合之一中的唯一表示。 解决方案将由包含节点表示形式的有序容器表示。节点的顺序必须与传递顺序相同。 模式将由节点对的无序容器表示。每对代表一条开始连接该对中两个点的边。模式表示不是唯一的。 您将通过标准输入方法将模式表示作为输入,并通过标准输出方法输出创建相同模式的所有可能解决方案。 您可以假设每个输入将至少具有一个解决方案,并将连接至少4个节点。 如果您愿意或被语言选择所迫,则可以选择使用有序容器代替无序容器。 测试用例 节点按以下模式排列: 0 1 2 3 4 5 6 7 8 让我们{...}成为一个无序的容器,[...]成为一个有序的容器,然后(...)成为一对。 以下输入和输出应匹配 {(1,4),(3,5),(5,8)} -> {[1,4,3,5,8]} {(1,4),(3,4),(5,4),(8,5)} -> {[1,4,3,5,8]} {(0,4),(4,5),(5,8),(7,8)} -> {[0,4,5,8,7],[7,8,5,4,0]} {(0,2),(2,4),(4,7)} …

21
镜子中的镜子
二维编程语言通常具有镜像命令,例如/和,\以重定向网格上的指令指针: >>>>\ v v <<<</ 在此挑战中,您将获得一个传入方向和一个镜像,并且需要确定传出方向。 规则 传入方向将被指定为字符之一,NESW而镜像将被指定为/或\。您可以按任何顺序收到这些。您必须使用大写字母。 您可以采用任何方便的格式输入,包括两个字符的字符串,在字符之间使用一些分隔符的字符串,列表中的一对字符,甚至一对单例字符串。如果确实使用带分隔符的字符串,则分隔符不能使用任何字符NWSE\/。 输出应为一个字符NESW或单个字符的字符串。 您可以编写程序或函数,并使用我们的任何标准方法来接收输入和提供输出。 您可以使用任何编程语言,但是请注意,默认情况下,这些漏洞是禁止的。 这是代码高尔夫球,因此以字节为单位的最短有效答案为准。 测试用例 您只需要处理8种可能的输入,因此没有理由不对所有代码进行测试: N / --> W N \ --> E E / --> S E \ --> N S / --> E S \ --> W W / --> N W \ --> S

30
解码chmod
挑战 给定一个三位数的八进制权限号,输出它授予的权限。 chmod 在UNIX OS上,使用以下chmod命令可以更改文件许可权。使用chmod的方法很少,但是我们今天将重点讨论的是使用八进制权限。 权限编号中的三个数字代表一个不同的人: 第一位代表用户的权限 第二位数字表示该组的权限 最后一位代表他人的权限 接下来,每个数字代表一个权限,如下所示: Key: number | permission 7 | Read Write and Execute 6 | Read and Write 5 | Read and Execute 4 | Read only 3 | Write and Execute 2 | Write only 1 | Execute only 0 | None …

14
自动化OEIS
我们在这里看到了很多挑战,要求从OEIS创建函数来创建序列。尽管这些挑战很有趣,但作为一名程序员,我看到了自动化的机会。 您的挑战是制作一个程序,该程序采用序列的索引(例如A172141)和某个整数n(例如7),并从适当的网页中提取适当的值。 输入输出 如前所述,您的程序应采用序列索引和某个值n作为输入,并输出该序列中的第n个项。您接受序列B文件中的任何索引。如果索引大于B文件中列出的最大索引,则您可能会引发异常或输出您选择的内容(测试用例中没有)。允许使用标准的输入和输出方法。 网络使用限制 除https://oeis.org和http://oeis.org之外,您不应访问任何其他网站。这包括网址缩短器,您自己的个人网站以及此问题本身。如果您想访问其他网站,并且认为允许这样做并非不公平,则可以发表评论,我将进行仲裁。 计分 这是一个代码挑战,因此在其源代码中使用最少字节的程序将获胜。不允许出现标准漏洞。 测试用例 假设您的计算机具有正确的Internet连接并且OEIS服务器已启动并且正在运行,则以下输入和输出应该对应。 A172141, 7 -> 980 A173429, 4 -> 276 A190394, 6 -> 16 A002911, 11 -> 960 A052170, 3 -> 24 A060296, 8 -> 3 A178732, 5 -> 27 A000001, 1 -> 1 A000796, 314 -> 3 A001622, 162 -> 8 …

21
保持非零及其邻居
摘自Stack Overflow的这个问题。也感谢@miles和@Dada为解决某些极端情况提供建议的测试输入。 挑战 给定一个整数值数组,请删除所有不包含某个非零值的零。 等效地,如果条目为非零或为立即接近于非零值的零,则应保留该条目。 保留的条目应在输出中保持其在输入中的顺序。 例 给定 [2 0 4 -3 0 0 0 3 0 0 2 0 0] 应删除的值用标记x: [2 0 4 -3 0 x 0 3 0 0 2 0 x] 所以输出应该是 [2 0 4 -3 0 0 3 0 0 2 0] 规则 输入数组可能为空(然后输出也应该为空)。 输入和输出格式像往常一样灵活:数组,列表,字符串或任何合理的格式。 …

30
字母转数字和数字转字母
挑战 在此挑战中,您必须将数字作为输入并输出相应的字母,反之亦然。(1 <=> A,2 <=> B)等 1 -> A 2 -> B ... 26 -> Z A -> 1 B -> 2 ... Z -> 26 规则 这是代码高尔夫球,因此以字节为单位的最短代码获胜。 输入将仅由来自任一大写字母的A到Z或从整数1到26包容。 允许尾随空格(空格和换行符)。

22
四分位数均值
任务 给定(以任何方式)排序的浮点数据集,返回(以任何方式并在正确值的1‰之内)四分位数均值。 一种可能的算法 丢弃数据点的最低和最高的四分之一。 计算剩余数据点的平均值(总和除以计数)。 注意:如果数据集大小不能一分为四,则必须权衡子集共享的数据点。请参阅下面的示例评估2。 评估示例1 给定{1,3,4,5,6,6,7,7,8,8,9,38} 数据计数是12,所以我们除去最低和最高3数据点:{ 1,3,4, 5,6,6,7,7,8,8,9,38 } 其余6个数据点的平均值:(5 + 6 + 6 + 7 + 7 + 8)/ 6 = 6.5 评估示例2 给定{1、3、5、7、9、11、13、15、17} 计数为9,因此每个季度都有2¼个数据点:{ 1,2,(0.25×5),(0.75×5),7,9,11 ,(0.75×13),(0.25×13),15,17 } 其余4.5个数据点的平均值:(0.75×5 + 7 + 9 + 11 + 0.75×13)/ 4.5 = 9

29
子串总和集
介绍 让我们来观察此阵:[3, 2, 4, 1, 1, 5, 1, 2]。 每个元素显示必须加总的子字符串的长度。让我们看一下上述数组的第一个元素: [3, 2, 4, 1, 1, 5, 1, 2] ^ 第一个索引处的元素是3,因此我们现在取一个长度为3的子字符串,其索引与起始位置相同: [3, 2, 4] 求和时,结果为9,因此子字符串总和集合的第一个元素为9。 我们对数组中的所有元素执行此操作: 3 -> [3, 2, 4] 2 -> [2, 4] 4 -> [4, 1, 1, 5] 1 -> [1] 1 -> [1] 5 -> [5, 1, …

29
订购清单
摘要 给定一个整数列表,返回每个整数在排序时以其结尾的索引。 例如,如果列表为[0,8,-1,5,8],则应返回[1,3,0,2,4]。请注意,两个8保持彼此相对的顺序(排序是稳定的)。 换句话说,对于列表中的每个元素,返回列表中的元素数量:小于所选元素OR(等于元素AND出现在所选元素之前) 索引必须以0(而不是1)开头。编辑:给定较大的回推,我将允许基于1的索引。 测试用例: 0 -> 0 23 -> 0 2,3 -> 0,1 3,2 -> 1,0 2,2 -> 0,1 8,10,4,-1,-1,8 -> 3,5,2,0,1,4 0,1,2,3,4,5,6,7 -> 0,1,2,3,4,5,6,7 7,6,5,4,3,2,1,0 -> 7,6,5,4,3,2,1,0 4,4,0,1,1,2,0,1 -> 6,7,0,2,3,5,1,4 1,1,1,1,1,1,1,1 -> 0,1,2,3,4,5,6,7 1,1,1,1,1,1,1,0 -> 1,2,3,4,5,6,7,0

22
ASCII艺术反射
在此挑战中,将为您提供一个文本块,并且您需要对文本进行反射。 输入: 要反映的字符串。文本不能作为其元素为文本行的数组提供。例如,"ab\ncd"并且['a','b','\n','c','d']是允许的,但['ab','cd']还是[['a','b'],['c','d']]没有。您可以假定所有行都具有相同数量的字符(在需要时用空格填充)。 一个布尔值,其中True指示Y反射并False指示X反射 这两个输入可以任何顺序传递。 输出: 反映的字符串。字符不会改变,只会改变位置。生成的图像块应与左上角对齐(第一行和第一列必须分别包含非空格字符)。允许尾随空格(在任何行上)。 测试用例: False o / --|/ | / \ / o /|-- | \ / True o / --|/ | / \ / \ | --|/ o / True text text False text txet True P P C G G C P P False …

12
7段差异
我认为这里的大多数人都知道数字的7段显示是什么: _ _ _ _ _ _ _ _ | | | _| _| |_| |_ |_ | |_| |_| |_| | |_ _| | _| |_| | |_| _| 我们可以将两个数字之间的7段差(7SD)定义为需要切换以从一个切换到另一个的段数。例如,介于和之间的7SD 为5(需要切换三个水平段和下面两个垂直段),而介于6和8之间的7SD为1。12 此外,我们可以将两个数字之间的7SD定义为其相应数字之间的7SD之和。如果一个数字长于另一个数字,我们假设它们是右对齐的,然后添加显示更大数字的其他最高有效数字所需的段数。例如,考虑介于12345和之间的7SD 549: x: 1 2 3 4 5 y: 5 4 9 7SD: 2+5+2+0+1 = 10 给定n,您的任务是计算介于n和n + …

24
后置数组排序
输入: 包含三个整数的数组:0,1并且2以任意顺序(即[2, 0, 1]) 长度大于等于2的字符串仅包含字母(大写和小写)和数字(即a1B2c3) 输出: 基于数组,我们对字符串进行排序并输出。 这是如何运作的? 该阵列表示的顺序的优先级a-z,A-Z并且0-9,所述第一感0; 第二存在1; 第三是2。 然后可以根据该字符串对字符串的各个字符进行排序。 例: 数组: [2, 0, 1] 串: a1B2c3 基于数组,我们知道我们的顺序优先级是0-9a-zA-Z。 基于此,我们可以转换并输出字符串:123acB。 挑战规则: 对于数组,您可以选择使用0索引或1索引输入,[3, 1, 2]如果您更喜欢使用1索引的数组,那么也可以使用有效输入。 字符串(输入和输出)仅包含有效字符:abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789。 如果你的语言不支持数组(或者,如果你选择),您可以自由使用字符串而非数组的第一个参数(即012,[0,1,2]等)。 一般规则: 这是代码高尔夫球,因此最短答案以字节为单位。 不要让代码高尔夫球语言阻止您发布使用非代码高尔夫球语言的答案。尝试针对“任何”编程语言提出尽可能简短的答案。 标准规则适用于您的答案,因此允许您使用STDIN / STDOUT,具有适当参数的函数/方法,完整程序。你的来电。 默认漏洞是禁止的。 如果可能的话,请添加一个带有测试代码的链接。 另外,如有必要,请添加说明。 测试用例: [2, 0, 1] & a1B2c3 -> 123acB [2, 1, 0] & aAaA909UuHWw9gh2 -> …

21
与邻居交换位
任务描述 给定一个整数,将其第(2k-1)个和第2k个最低有效位交换为所有k> 0的整数。这是OEIS中的序列A057300。 (假定该数字具有“无限多个”前导零。实际上,这仅意味着在奇数长度的数字前添加一个0位。) 这是code-golf,所以最短的代码(以字节为单位)获胜。 测试用例 0 -> 0 1 -> 2 9 -> 6 85 -> 170 220 -> 236 1827 -> 2835 47525 -> 30298

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.