编程拼图和代码高尔夫

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

1
一间镜子
(此挑战非常相似,但当前的挑战具有更多的复杂性。) 想象一下一个二维房间,墙壁上镀有平面镜。 突然,一束光束射入房间,那里缺少一堵墙!光束在房间周围跳舞,被壁镜反射,最终再次离开房间。 逻辑 您将得到5个变量:W,H,X,Y和Z ^。 现在,它们是什么意思? W,H是房间(包括墙壁)的大小,W是宽度,H是高度。 X,Y是壁上有孔的坐标。您可以假定它始终位于墙地砖上。坐标从0开始,X轴指向右,Y轴指向下。 Z是单个字符,代表\或 光线进入房间的方向/。 这个房间必须由以下字符组成: | 用于水平墙 - 用于垂直墙 + 对于角落 示例:(W = 7,H = 4) +-----+ | | | | +-----+ 现在我们有了一个房间,让我们摧毁其中一个墙砖,这样一束光束就会落入房间。光束是对角线,由\和/字符表示。 让我们用\光束替换X = 2,Y = 0处的墙砖。 +-\---+ | | | | +-----+ 入射光沿对角线穿过整个房间,直到碰到镜墙。如果碰到墙壁,方向将沿着墙壁的轴反转,并且光束继续前进。 +-\---+ |\ \/\| | \/\/| +-----+ 在此示例中,光束到达撞击墙角的位置,这会导致光束完全反转并一直向后传播,最终离开房间。 你的任务 …

23
易二元三角形
给定一个正整数作为输入n>=1,输出n以下三角形的第一行: 1 1 0 1 0 0 1 0 0 1 1 1 0 1 1 1 0 0 0 0 1 0 0 0 0 1 1 1 1 1 0 1 1 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 …

21
平行四边形一个数字
既然我们知道如何正确地对一个数进行平方和三角化,我们将学习如何对一个数进行平行四边形绘制。要对数字进行平行四边形绘制,我们首先将其堆叠在其自身顶部的次数等于其具有的位数,然后添加空格使其成为平行四边形,从而将其布置为平行四边形。因此123将形成: 123 123 123 现在我们获取每个水平和垂直数字,并将它们相加123+123+123+1+12+123+23+3,等于531,即的平行四边形123。 你的任务: 编写一个程序或函数,当给定数字作为输入时,返回该数字的平行四边形。 输入: 非负整数,或由字符串表示的非负整数。 输出: 整数的平行四边形。 测试用例: 1234567 -> 10288049 123 -> 531 101 -> 417 12 -> 39 得分: 这是代码高尔夫,以字节为单位的最低分数获胜!
18 code-golf  number 

3
当斐波那契遇见皇后
(灵感来自Helka对我在聊天中随机配对“ chess”和“ Fibonacci”标签的反应) 斐波那契 所述斐波那契数是在数学上更公知的序列,其中每一个数字是通过将前两个数相加组成之一。以下是零索引序列的定义: f(0) = 0 f(1) = 1 f(n) = f(n-1) + f(n-2) 这样就产生了序列0, 1, 1, 2, 3, 5, 8, 13, 21, ...(OEIS链接)。在此挑战中,我们将仅关注严格的正值(so 1, 1, 2, 3, ...),您可以选择零索引或单索引,但是请在提交时说明。 通过使用f(n)大小连续的正方形并将其边缘对齐在一起,斐波那契数可以用于平铺瓷砖。通过将正方形以当前正方形的“右-上-左-下”样式放置正方形,以逆时针方式进行平铺。的部分平铺示例f(8)=21,其起始正方形用蓝色突出显示如下: 您可以看到f(1)=1作为开始的正方形(以蓝色突出显示),f(2)=1位于其右边的f(3)=2正方形,从此处开始的f(4)=3正方形,位于左边的正方形,依此类推。下一个正方形将被f(9)=21+13=34放置在底部。这是我们将在此挑战中使用的部分切片方法。 皇后 在国际象棋游戏中,最强大的棋子是皇后,因为它可以水平,垂直或对角线移动任意数量的空间。在下面的电路图中,带有黑色圆圈的正方形表示女王可以移动的位置: 我们将术语“ 覆盖率”定义为 给定女王/王后在空白板上的特定位置,并包括女王/王后自己的起始位置,女王/王后可以移动到的平方百分比与正方形总数的乘积。 对于上面的示例,女王的覆盖范围是28/64 = 43.75%。如果女王在右上角h8,则覆盖范围为22/64 = 34.375%。如果女王进来e7,范围将会是24/64 = 37.5%。 挑战 我们将使用上面演示的斐波那契平铺作为此挑战的棋盘。您将获得两个正整数作为输入,n和x: 该n代表平铺多大。上面的示例图块21的左侧为正方形,是n = 8自以来的大小f(8) …

6
Annannounccceeerr VOICCEEEE
编写一个函数,该函数采用字母和空格字符串(无需处理非字母),并执行ANNOUNCER VOICE转换算法,如下所示: 首先,全部大写。 对于每个字, 通过将每个字母增加三倍来延长每个辅音簇;除非单词以辅音簇开头,否则不要拉长该簇。例如,other应该成为OTTTHHHEEERRR但mother应该成为MOTTTHHHEEERRR。 将最终的元音加倍三倍,使其伸长。 在两种伸长情况下,如果您要使一个字母成三倍,请首先将其与两侧的重复字母合并。例如,hill应该成为HIIILLL和bookkeeper应该成为BOOKKKEEPPPEEERRR。 就此挑战而言,应y视为辅音。 澄清/简化:您可以假设每对单词之间用一个空格隔开,并且输入不包含连续的空格,并且输入将不是空字符串。 最短的代码胜出! 测试向量: > sunday sunday SUNNNDDDAAAYYY SUNNNDDDAAAYYY > mia hamm MIAAA HAAAMMM > chester alan arthur CHESSSTTTEEERRR ALLLAAANNN ARRRTTTHHHUUURRR > attention please ATTTENNNTTTIOOONNN PLEASSSEEE > supercalifragilisticexpialidocious SUPPPERRRCCCALLLIFFFRRRAGGGILLLISSSTTTICCCEXXXPPPIALLLIDDDOCCCIOUUUSSS > moo MOOO > Aachen AACCCHHHEEENNN > Oooh OOOHHH > grifffest GRIFFFEEESSSTTT > k …
18 code-golf  string 

5
密码破解者和编剧
假设您有一些文本,并且希望将其发送给您的朋友,但是您不希望其他任何人阅读。这可能意味着您想对其加密,以便只有您和您的朋友才能阅读它。但是,有一个问题:您和您的朋友忘记了加密方法的约定,因此,如果您向他们发送消息,他们将无法对其解密! 考虑了一段时间后,您决定只向您的朋友发送代码,以将消息和消息一起加密。您的朋友很聪明,因此他们很可能可以通过研究加密方法来弄清楚如何解密邮件。 当然,由于其他人可能正在阅读该消息,因此您希望选择一种加密方案,以使其尽可能难以破解(找出解密方案)。 警察的任务 在这个挑战中,警察将扮演作家的角色:您将设计一种将字符串转换为字符串的加密方案。但是,此加密方案必须是双射的,这意味着没有两个字符串必须映射到另一个字符串,并且每个字符串都可以通过输入映射到。它只需要一个输入即要编码的字符串。 然后,您将发布一些执行加密的代码,并使用您的代码详细说明的方案加密一条消息。 由于您是按字节付费发送消息,因此分数将是代码的长度加上密文的长度。如果您的答案被破解,您将获得无穷大。 一个星期后,您可以显示文字并将答案标记为“ 安全”。安全的答案是那些无法破解的答案。 强盗任务 强盗可以扮演作家的朋友,也可以扮演恶意的中间人(没有实质性的区别,但是您可以扮演角色,就像这样做更有趣)。他们将采用加密方案和密文,并尝试找出加密的消息。一旦他们找出了加密的消息,便会将其发布在评论中。(这个问题不会有单独的强盗线程。) 赢家将是裂缝最多的强盗。 这是一个破解解决方案的示例:

24
查找最近的二次数
双二次数是另一个整数的四次幂的数字,例如: 3^4 = 3*3*3*3 = 81 给定一个整数作为输入,输出最接近的二次数。 这是前15个双平方: 1, 16, 81, 256, 625, 1296, 2401, 4096, 6561, 10000, 14641, 20736, 28561, 38416, 50625 这是代码高尔夫球,因此每种语言中的最少字节数获胜 这是OEIS A000583

11
压缩稀疏矩阵
使用压缩的稀疏行(CSR,CRS或Yale格式)压缩稀疏矩阵。 这些都是相同的压缩形式(忽略新耶鲁)。 输入可以是任何二维数据结构(列表列表等):例如 [[0 0 0 0], [5 8 0 0], [0 0 3 0], [0 6 0 0]] 和输出应该有三个1D的数据结构(列表等),即表示输出A,IA和JA,例如 [5, 8, 3, 6] [0, 0, 2, 3, 4] [0, 1, 2, 1,] 维基百科描述了该过程: 数组A的长度为NNZ,并按从左到右的顺序从上到下(“行优先”)保存M的所有非零条目。 数组IA的长度为m +1。它由以下递归定义定义: IA [0] = 0 IA [i] = IA [i-1] +(原始矩阵第(i-1)行中非零元素的数量) 因此,IA的前m个元素将索引存储在M的每一行中的第一个非零元素的A中,而最后一个元素IA [m]存储NNZ,即A中的元素数,也可以认为是幻像行的第一个元素的A中的索引刚好在矩阵M的末尾。从元素A [IA …

30
比较我列表的平均值
获取列表的平均值(例如[2,6,7]) 获取列表的长度: [2,6,7] -> 3 汇总列表中的数字:2 + 6 + 7 = 15。 将总和除以他们的计数:15 / 3 = 5。 您应该比较两个正整数N和M列表的平均值,如果N的平均值较高,则返回一个值;如果M的平均值较高,则返回另一个值;如果出现平局,则返回另一个值。 I / O规则 允许所有标准的输入和输出方法。 输入值 您可以将输入作为两个单独的列表,一个嵌套列表或您认为适合该任务的任何其他内容。请指定格式。 输出量 提供的值必须是唯一的,并且必须至少包含一个非空白字符。此外,它们在运行之间必须保持一致(N的单个值,M的单个值,Tie的单个值)。请在您的答案中注明。值可以是非空字符串,布尔值,整数或任何您认为合适的值。 眼镜 列表的长度不一定相等。 您可以确保列表为非空。 测试用例 我选择了和值N wins,这是不言而喻的。M winsTie N,M->输出(平均值) [7],[6]-> N胜(N有7,M有6) [4,5],[4,4]-> N胜(N为4.5,M为4) [2,3,4],[4,5,6]-> M胜(N有3,M有5) [4,1,3],[7,3,2,1,1,2]->并列(均为2.666 ...) [100,390,1],[89,82,89]-> N胜(N有163.666 ...,M有86.666 ...) [92,892],[892,92]->领带(列表基本相同) [10,182],[12,78,203,91]->并列(均为96) 默认漏洞适用。鼓励解释!这是代码高尔夫球,因此以字节为单位的最短代码胜出!

18
“你好,世界!”(其他角色,第2部分)
作为《你好,世界》的第二部分 (每个其他字符),编写一个程序,使所有这三个程序都显示“ Hello,World!”:整个程序,程序的第1,第3,第5等字符,以及第2,第4,第6,等等 如果您的程序是: abc def 它应该输出“ Hello,World!”,但是应该输出 acdf 和 b e 内置的“ Hello,World!”没有解决方案。

29
数字块
输出/打印此文本块: 1234567890 2468013579 3691470258 4815926037 5049382716 6172839405 7306295184 8520741963 9753108642 0987654321 可接受的格式包括: 尾随换行符/空格 字符串清单 字符列表 整数列表清单 但是,整数列表是不可接受的,因为最后一行不是整数。 这是代码高尔夫球。以字节为单位的最短答案将获胜。有标准漏洞。

12
有理数的LCM
一组数字的最小公倍数(LCM)A是最小整数b,使得b/a对于所有的整数的整数a在A。此定义可以扩展为有理数! 任务 找到最小的正有理数, b使得它b/a是输入中所有有理数的整数。 a 规则 禁止出现标准漏洞。 您可以在输入中分别使用分子和分母,但不能使用双精度数,浮点数等。 输入可能没有完全减少。 您可以将分母为的整数输入作为有理数1。 允许将有理数提供给LCM / GCD内置文件的提交是允许的,但不竞争。 测试用例 In: 3 Out: 3 In: 1/17 Out: 1/17 In: 1/2, 3/4 Out: 3/2 In: 1/3, 2/8 Out: 1 In: 1/4, 3 Out: 3 In: 2/5, 3 Out: 6 In: 1/2, 3/4, 5/6, 7/8 Out: 105/2 这是代码高尔夫球,因此使用最少字节的提交会获胜!

11
扫一下元音!
注意:标题是故意拼写错误的。 给定字符串s,交换每2个单词的第一个元音运行。对于这个挑战,y被认为是元音。 例如,给定输入“ Great day sir”: 1. Input: "great day sir" 2. Identify pairs of words: "[great day] [sir]" (No word for sir to pair with) 3. Identify the first vowel runs in each word: "[gr[ea]t d[ay]] [s[i]r]" 4. Swap the vowel runs in each pair: "[gr[ay]t d[ea]] [s[i]r]" 5. …

14
全回文三角形
考虑一下字符串160615051。可以这样“三角化”: 1 606 15051 那么,每一行都是回文。还要注意,周长的每一侧也是回文: 1 | 1 | 6 | 6 | 1 | 1 | 15051 因此,该字符串可以认为是完全回文三角形。100在这种情况下,不必担心海拔高度,不必回文。 输入:从0x20到0x7E的可打印ASCII字符串。它可以是字符数组,单个字符串或ASCII码点的数组。您的输入将始终能够被三角剖分(即,其长度将始终是完美的正方形)。 输出:如果字符串是完全回文的三角形,则为真值,否则为假值。 测试用例 input => output 1 => true A => true AAAA => true nope => false {{}} => false 1101 => true 1011 => false 1202 => false 111110001 …

28
现在在监狱里
挑战 给定一个整数n(其中4<=n<=10**6)作为输入,使用下面示例中的符号创建一个ASCII艺术“监狱门” * ,该字体测量n-1字符宽和n字符高。 例 ╔╦╗ ╠╬╣ ╠╬╣ ╚╩╝ 使用的字符如下: ┌───────────────┬─────────┬───────┐ │ Position │ Symbol │ Char │ ├───────────────┼─────────┼───────┤ │ Top Left │ ╔ │ 9556 │ ├───────────────┼─────────┼───────┤ │ Top │ ╦ │ 9574 │ ├───────────────┼─────────┼───────┤ │ Top Right │ ╗ │ 9559 │ ├───────────────┼─────────┼───────┤ │ Right │ ╣ │ …

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.