编程拼图和代码高尔夫

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

21
仅包含这些数字的最小n位素数
您将需要生成带有n数字的最小素数,并且它仅包含list中指定的数字k。 例子: 输入: 4 1 2 为此,您必须生成带有4数字的最小素数,并且该素数必须仅包含数字1和2。 输出: 2111 输入: 10 0 4 7 输出: 4000000007 输入: 6 5 5 5 5 5 5 5 5 5 5 1 5 5 5 5 5 5 5 5 5 5 输出: 115151 您可以保证输入将始终采用您指定的格式,并且如果输入无效(例如,输入为一位n,而没有k),则可以执行任何操作。 如果不存在此类输入解决方案,则允许您的程序执行以下任一操作: 打印 banana 抛出错误 永远跑 还要别的吗 由于这是代码高尔夫,请尝试以最短的代码为目标。 输入可以是您指定的任何格式。例如,如果您希望您的输入与以下任何一种一样,那就很好。 …

3
安排泡泡
注意,挑战是从math.stackexchange询问的问题复制而来的。 最近,我掌握了一些吹泡泡的技巧。首先,我会像这样吹泡泡: 但是事情开始变得奇怪了: 一段时间后,我吹了一些怪异的气泡: 吹完数百个甚至数千个这样的气泡后,我的额头突然出现问题:给定n个气泡,您可以用几种不同的方式排列它们?例如,如果n = 1,则只有1种排列。如果n = 2,则有2种排列。如果n = 3,则有4种排列。如果n = 4,则有9种排列。 这是4个气泡的9个排列: 在吹完所有这些奇妙的泡泡之后,我决定与您分享点算他们的安排的乐趣。因此,这是您的任务: 目标 编写一个程序,函数或类似的程序,计算可以排列n气泡的方式。 输入项 n,气泡数。n> 0 输出量 排列这些气泡的方式的数量。 获奖标准 如果我们能在您的代码周围吹泡泡,那真的很酷。您编写的代码越小,执行起来就越容易。因此,使用最少字节数编写代码的人将赢得比赛。 额外的信息 信息系统

10
符号矩阵乘法
有很多不同的方法来解释矩阵乘法。我会坚持一个数字,因为我相信这里的大多数人都熟悉它(这个数字非常具有描述性)。如果您需要更多详细信息,建议您访问Wikipedia文章或WolframMathWorld上的说明。 简单说明: 假设您有两个矩阵A和B,其中A是3×2,而B是2×3。如果对矩阵AB或BA进行矩阵乘法,将得到以下结果: 挑战: 用您的语言实现符号矩阵乘法。您将采用两个矩阵作为输入,其中矩阵中的每个元素都由一个非空白ASCII字符(代码点33-126)表示。您必须输出这些矩阵的乘积。 有关输出的规则: 两个条目的乘积之间不应有任何符号。这ab不a*b,a·b,times(a,b)或者类似的东西。这aa,不是a^2。 项的总和之间应有一个空格(ASCII码点32)。这a b不a+b,plus(a,b)或者类似的东西。 这两个规则的基本原理是:矩阵中所有非空白字符都可以用作符号,因此将它们用作数学符号会很麻烦。所以,你可以正常写成a*b+c*d会ab cd。 您可以选择条款的顺序。ab cd,dc ab并cd ba在数学上来说是相同的,所以你可以在这里选择的顺序了。只要在数学上正确,顺序就不必一致。 有关矩阵格式的规则: 矩阵可以以任何您喜欢的格式输入,除了在行之间没有定界符的单个字符串(这是因为输出将被完全弄乱)。两个矩阵必须以相同的格式输入。以下所有示例都是输入和输出矩阵的有效方法。 "ab;cd" <- This will look awful, but it's still accepted. "a,b\nc,d" [[a,b],[c,d]] [a, b] [c, d] 我知道这允许许多看起来很杂乱的格式,但是挑战在于要乘以矩阵而不是格式化输出。 一般规则: 您可以假设输入有效。在给定尺寸下,矩阵乘法始终是可能的。 只有两个矩阵。 您可以假设矩阵是非空的 接受内置函数(但由于格式要求,可能有点麻烦)。 当然,如果需要,您当然可以在输入中使用转义符(\'而不是')。 任何标准的输入和输出方法都可以。 测试用例: 所示的两个输入矩阵之间有一条空线。输出显示在之后Output:。当有两个输出矩阵时,这只是显示其他可以接受的输出。 测试用例#1 Inputs: [a] [b] Output: [ab] [ba] …


28
将ASCII表重新创建为ASCII表
通常,在进行代码搜寻时,我想知道某个字符的ASCII值是什么。我最喜欢的快速查找所有可打印ASCII字符的资源之一是ASCIItable.com。这有一个非常漂亮的图像,它不仅显示可打印的ASCII字符及其值,而且还显示不可打印和扩展的字符以及十六进制,八进制和HTML的值: 当今的挑战是将ASCII表重新创建为ASCII表而不是图像。为简化起见,我们将不使用控制字符(低于32的字符),而仅显示十进制值和字符。换句话说,您面临的挑战是编写打印或返回以下文本的完整程序或函数: Dec Chr | Dec Chr | Dec Chr ---------------------------------- 32 Space | 64 @ | 96 ` 33 ! | 65 A | 97 a 34 " | 66 B | 98 b 35 # | 67 C | 99 c 36 $ | 68 D | 100 …

2
最快的迷你手枪奎宁
迷你Flak是的一个子集脑高射炮语言,其中<>,<...>和[]操作是不允许的。严格来说,它不能与以下正则表达式匹配: .*(<|>|\[]) Mini-Flak是Brain-Flak的最小已知图灵完整子集。 不久前,我能够用Mini-Flak制作Quine,但是它太慢了,无法在宇宙的生命周期中运行。 因此,我对您的挑战是使Quine更快。 计分 要对代码评分,请在代码@cy末尾添加一个标志,然后使用该标志在Ruby解释器中运行(使用ruby解释器在线尝试)-d。您的分数应打印到STDERR,如下所示: @cy <score> 这是程序终止之前所经过的周期数,两次运行之间相同。由于每个周期的运行时间大致相同,因此您的分数应与运行程序所需的时间直接相关。 如果Quine太长而无法在计算机上合理运行,则可以手动计算周期数。 计算周期数不是很困难。循环数等于运行的单子数加运行的nilad数的2倍。这与用一个字符替换每个nilad并计算总共运行的字符数相同。 评分示例 (()()()) 得分为5,因为它有1个单子和3个尼拉德。 (()()()){({}[()])} 得分为29,因为第一部分与以前相同,得分为5,而循环包含6个单子和2个得分为8的尼拉德。循环运行3次,因此我们计算其得分为3次。 1*5 + 3*8 = 29 要求 您的程序必须... 至少2个字节 在Brain-Flak中使用-A标志执行时打印其源代码 不匹配正则表达式 .*(<|>|\[]) 提示 该起重机高射炮解释是断然比Ruby解释器快,但缺少一些功能。我建议您先使用Crane-Flak测试您的代码,然后在您知道它可以工作时在ruby解释器中对其评分。我也强烈建议不要在TIO中运行您的程序。TIO不仅比台式机解释器慢,而且还会在大约一分钟后超时。如果有人在TIO超时之前设法获得足够低的分数来运行他们的程序,那将是非常令人印象深刻的。 [(...)]{}且(...)[{}]工作与<...>但不违反受限源要求 如果您想了解如何应对这一挑战,可以查看Brain-Flak和Mini-Flak Quines。

26
整数的数字硬度
要找到整数的数字硬度,请使用二进制表示形式,并计算可以删除前导和尾随的次数,1直到它以a开头或结尾为止0。去除的总位数是其数字硬度。 这是一个冗长的解释-因此,让我们用一个可行的例子来分解它。 在此示例中,我们将使用数字3167。在二进制文件中,这是: 110001011111 (请注意,在转换为二进制文件的过程中,应确保去除前导零) 它不是以开头或结尾0,因此我们删除了1对位: 1 1000101111 1 还有一个: 11 00010111 11 但是现在开始时有一个0,所以我们不能再删除1对了。总共4个比特我们除去,所以4是数字硬度3167。 但是,对于可以写为2 n -1表示正n的数字(即仅包含1二进制表示形式),永远不会达到0,因此可以删除所有位。这意味着硬度只是整数的位长。 挑战 您的任务是编写一个程序或函数,给定一个非负整数n >= 0,该程序或函数将确定其数字硬度。 您可以提交执行I / O的完整程序,或提交返回结果的功能。您的提交应适用n于您的语言的标准整数范围内的值。 测试用例 如果其中任何一个不正确,或者您想建议添加任何极端情况,请通知我。 0 -> 0 1 -> 1 8 -> 0 23 -> 2 31 -> 5 103 -> 4 127 -> 7 1877 -> 2 …

6
对游戏男孩的有效打字
许多旧的Game Boy游戏经常需要用户输入字符串。但是,没有键盘。这是通过向用户显示“键盘屏幕”来解决的,如下所示: 该“字符指针”将开始于字母A的用户将导航到与所需的字符d-垫的四个按钮(UP,DOWN,LEFT和RIGHT),然后按BUTTON A将其追加到最终字符串。 请注意: 网格环绕,因此UP在字母A上同时按下可将您带到T。 附加字母后,“字符指针”保持不变 挑战 上面的键盘具有更改大小写的选项,并且形状不规则。因此,为简单起见,在此挑战中,我们将使用以下键盘(右下角为ASCII char 32,一个空格): A B C D E F G H I J K L M N O P Q R S T U V W X Y Z . 在这样的键盘上打字非常慢-因此,为了简化操作,您的任务是编写一个程序,该程序告诉用户以最快的方式键入给定字符串的方法。如果有多种最快的方法,则只需要显示一种即可。 输出密钥应为: > 对于 RIGHT < 对于 LEFT ^ 对于 UP v …

19
查找可排序的年份
2013年有一个有趣的属性:数字在排序时是连续的(0123)。让我们将这种类型的数字称为可排序数字:一个非负整数,其基数为10的数字在排序后是连续的。不幸的是,这种情况要到2031年才会再次发生,然后直到2103年才会再次发生。您的挑战是编写一个程序或函数,当通过任何标准方法给定非负整数时,该程序或函数将输出或返回下一个可排序的数字。 规则 输入和输出必须以10为底。 输出可以采用任何合理的格式(数字文字,字符串文字,单项数组等)。 您的代码必须在1分钟内为最多98764的所有输入产生正确的输出。 测试用例 0 -> 1 1 -> 2 9 -> 10 10 -> 12 11 -> 12 99 -> 102 233 -> 234 234 -> 243 243 -> 312 2016 -> 2031 2031 -> 2103 2103 -> 2130 2130 -> 2134 2134 -> 2143 9876 -> …

12
第n个分子
您可以创建所有有理数0 <r≤1的列表,方法是先按分母然后按分子顺序列出: 1 1 1 2 1 3 1 2 3 4 1 5 1 2 3 4 5 - - - - - - - - - - - - - - - - - 1 2 3 3 4 4 5 5 5 5 6 6 7 7 …

16
解码Baby-talk!
当婴儿张开嘴时,他们不仅在吐胡言乱语。他们实际上是在使用高度先进的,可证明成人身份的密码... 婴儿说话密码 婴儿说话时,看起来像是gogooa gagooook aagaaoooy 每个空格分隔的部分代表一个字符(因此,上面的示例代表3个字符)。 要解密一个部分,我们必须计算它包含的As和Os的数量。但是,我们只计算与另一个元音相邻的那些。例如,“ gag”中的A不计算在内,但“ gaog”中的A和O均计算在内。 计算上面的示例如下所示: Section | Num Os | Num As gogooa | 2 | 1 gagooook | 4 | 0 aagaaoooy | 3 | 4 然后,我们使用这些值将输入转换为Polybius正方形上的纯文本。这是英文字母的5x5表示形式,省略了“ J”(请注意,在婴儿交谈中,表中使用0计数规则): 0 1 2 3 4 0 A B C D E 1 F G H I …

8
可视化数组
给定任意深度的数组,请使用+-|每个子数组周围的边框绘制其内容。这些是加号,减号和垂直管道的ASCII字符。 例如,如果数组为[1, 2, 3],则绘制 +-----+ |1 2 3| +-----+ 对于嵌套数组,例如[[1, 2, 3], [4, 5], [6, 7, 8]],绘制 +-----------------+ |+-----+---+-----+| ||1 2 3|4 5|6 7 8|| |+-----+---+-----+| +-----------------+ 对于参差不齐的数组,例如[[[1, 2, 3], [4, 5]], [6, 7, 8]],绘制 +-------------------+ |+-----------+-----+| ||+-----+---+|6 7 8|| |||1 2 3|4 5|| || ||+-----+---+| || |+-----------+-----+| +-------------------+ 请注意,绘制后还有更多空间[6, …

2
排列任意矩形以填充空间
这些矩形可以填充矩形空间吗? 给定一堆矩形,系统会询问您是否可以将它们安排为填充矩形空间。 眼镜 给定一堆任意m x n矩形;0 <= m, n <= 1000,确定是否可以对其进行排列,以使其完全覆盖矩形区域而没有任何孔洞或重叠。矩形不能旋转,每个矩形只能放置一次。 输入项 只要输入给出某种2维尺寸列表,此输入就非常灵活。例如,以下两个都是有效的: 按空格分隔,返回 1 2 1 5 4 5 3 6 尺寸表 [[1, 2], [1, 5], [4, 5], [3, 6]] 输出量 各种true / false值,例如true / false,0/1,T / F,True / False等。如果要使用不太明显的输出方法,请在答案中指定。 例子 测试用例1 输入: 1 1 1 5 2 6 …

9
尽快计算永久物
面临的挑战是编写最快的代码来计算矩阵的永久性。 n-by- nMatrix A=(ai,j)的永久变量定义为 在此S_n表示的所有排列的集合[1, n]。 作为一个例子(来自维基): 在这个问题中,矩阵都是正方形的,只有值-1和1在其中。 例子 输入: [[ 1 -1 -1 1] [-1 -1 -1 1] [-1 1 -1 1] [ 1 -1 -1 1]] 常驻: -4 输入: [[-1 -1 -1 -1] [-1 1 -1 -1] [ 1 -1 -1 -1] [ 1 -1 1 -1]] 常驻: …

13
作弊多项选择测试,第2部分
这是续集这种由挑战阿德南。如果您喜欢这个挑战,那么您也很可能会喜欢另一个挑战。看看这个! 多选题测试包含8个问题,每个问题有4个选择,可能会有答案:BCADBADA。转换为四个不同的数组,如果当前字母是答案,则为true和false,它将看起来像这样 Q#: 1 2 3 4 5 6 7 8 B C A D B A D A A: [0, 0, 1, 0, 0, 1, 0, 1] B: [1, 0, 0, 0, 1, 0, 0, 0] C: [0, 1, 0, 0, 0, 0, 0, 0] D: [0, 0, 0, …

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.