编程拼图和代码高尔夫

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

20
字母加农炮
发射炮弹,使其在飞行的第一个眨眼中由N树梢上升,在第二个眨眼中由N-1树梢等,直到到达其轨迹的最高点。然后,它每眨眼一次就掉下1、2等树梢,直到掉到地上。同时,炮弹以1个树梢/眨眼的恒定速度水平移动。 您的任务是使用来自英语字母表的连续字母绘制轨迹。如果字母用完了,请从重新开始'A'。编写函数或程序。输入是整数N(1≤N≤15)。输出可以是任何合理形式的字符矩阵,例如换行符分隔的字符串或字符串列表。字母可以全部为小写或全部为大写。允许额外的前导和尾随空格。禁止出现标准漏洞。代码越短越好。 in: 5 out: OP N Q M R L S K T J U I V H W G X F Y E Z D A C B B C A D in: 1 out: AB

30
创建一个魔术8球
小时候,我的朋友有一个神奇的8号球,我们会问这个问题,看看这个问题的命运是什么。 挑战 您面临的挑战是编写一个程序(或函数),在运行(或调用)时,从以下可能的答案中输出(或返回)随机答案。(随机为:each output should have a nonzero chance of occurring but they do not need to meet any other criteria) 魔术8球的可能答案是(不区分大小写): It is certain It is decidedly so Without a doubt Yes definitely You may rely on it As I see it, yes Most likely Outlook good Yep Signs …

21
容易相乘的数字
您的任务是确定两个数字是否容易相乘。这意味着,从乘法步骤和加法步骤来看,它们的以10为基数的long乘法在位值之间没有任何进位(重新组合)。当每一对数字相乘等于9或更少且每列的总和等于9或更少时,就会发生这种情况。 例如,331并且1021很容易相乘: 331 x 1021 ------ + 331 662 0 331 ------ 337951 如果我们以其他顺序相乘,也是如此(一如既往): 1021 x 331 ------ + 1021 3063 3063 ------ 337951 但是,431并且1021也不容易相乘,在指示的列之间发生进位: 431 x 1021 ------ + 431 862 0 431 ------ 440051 ^^^ 同样,12并且16也不容易相乘,因为即使相乘没有发生进位,在相乘12 * 6得到get 72时也会发生结转。 12 x 16 ---- + 72 12 ---- 192 …

22
引爆一根弦
给定任何字符串,以三角形的形式打印它,其中文本沿每个对角线上下移动。例如,输入的"Hello World"应输出: d l r d o l W r d o l o W r d l o l l o W r d e l o l H l o W r d e l o l l o W r d l o l o W r …

18
26位歌手,26个字母
根据RollingStone的统计,以下是有史以来 26位最出色的歌手: Aretha Franklin Al Green Ray Charles Robert Plant Elvis Presley Mick Jagger Sam Cooke Tina Turner John Lennon Freddie Mercury Marvin Gaye Bob Marley Bob Dylan Smokey Robinson Otis Redding Johnny Cash Stevie Wonder Etta James James Brown David Bowie Paul McCartney Van Morrison Little Richard Michael Jackson …

30
Code Golf:您自己的宠物ASCII蛇
因此,我给自己写了一条单线纸,在控制台上打印了一条蛇。有点有趣,我想知道如何压缩我的代码... 这是一个(简短的)示例输出: + + + + + + + + + + + + + + + + + + + + 规格如下: 在每行中,一个非空白字符(随您喜欢)将被打印到控制台,最初在其左侧填充29至31个空格。 每次迭代,都会在这三个动作之间做出随机决定 填充量减少1 填充量保持不变 填充量增加1 这样做30次,以在控制台上打印一条30段长的蛇。 以字节为单位的最短答案将获胜。

30
反向阵列求和
您的程序应将数组作为输入。 数组: 永远是一维的 只包含整数 可以为空 程序应反转数组,然后将元素加到原始数组中,例如: 输入: [1, 2, 3] 原版的: [1, 2, 3] 反转: [3, 2, 1] [1, 2, 3] + + + [3, 2, 1] [1+3, 2+2, 3+1] 输出: [4, 4, 4] 测试用例: #In #Out [8, 92], [100, 100] [1, 2, 3], [4, 4, 4] [5, 24, 85, …

30
整数矩阵的行列式
给定一个平方整数矩阵作为输入,输出矩阵的行列式。 规则 您可以假设矩阵中的所有元素,矩阵的行列式以及矩阵中元素的总数在您的语言可表示的整数范围内。 允许输出分数为0的十进制/浮点值(例如42.0代替42)。 允许使用内置函数,但是建议您包括不使用内置函数的解决方案。 测试用例 [[42]] -> 42 [[2, 3], [1, 4]] -> 5 [[1, 2, 3], [4, 5, 6], [7, 8, 9]] -> 0 [[13, 17, 24], [19, 1, 3], [-5, 4, 0]] -> 1533 [[372, -152, 244], [-97, -191, 185], [-53, -397, -126]] -> 46548380 [[100, -200, …

30
将字符串乘以数字!
前一阵子关于将字符串相乘存在一个挑战。它向我们展示了如何不仅可以将数字相乘,而且还可以将字符串相乘。但是,我们仍然无法正确地将数字乘以字符串。已经尝试过这样做,但这显然是错误的。我们需要解决这个问题! 你的任务: 编写一个将两个输入(一个字符串和一个整数)相乘的函数或程序。要将字符串乘以整数(适当),请将字符串拆分为字符,将每个字符重复等于整数的次数,然后将字符重新粘在一起。如果整数为负数,则在第一步中使用其绝对值,然后反转字符串。如果输入为0,则不输出任何东西(乘以0等于零)。 输入: 一个仅由可打印的ASCII字符和换行符以及一个整数(可能为负数)组成的字符串。 输出: 字符串乘以整数。 例子: Hello World!, 3 --> HHHeeellllllooo WWWooorrrlllddd!!! foo, 12 --> ffffffffffffoooooooooooooooooooooooo String, -3 --> gggnnniiirrrtttSSS This is a fun challenge, 0 --> Hello World!, 2 --> HHeelllloo WWoorrlldd!! 得分: 这是代码高尔夫球,最低字节数获胜!

22
建立我的城市
编码人员一直在尝试将数组平整为无聊的一维实体,这让我很难过。 您的任务是展开任意字符串,输出漂亮的城市天空景观。 考虑以下字符串: aaabbbbbccqrrssstttttttPPw 这样看起来更好: tt tt bb tt bb tt aabb sstt aabbcc rrssttPP aabbccqqrrssttPPww (好的,是的,重复的字母使它们看起来更像城市天际线)。 输入一个字符串,复制匹配字符(不一定是字母)的每个小节,然后为我建一座城市! 最短的代码字节获胜。 我实际上以为自己已满足要求,但要回答一些问题: 它必须在地面上 如果需要,您可以有更多的天空(空白行,周围空白处)-但建筑物之间不可以 字母可以在字符串内重复使用(相同的体系结构,不同的位置) 这些字母被假定为ASCII,但是那些支持其他编码(UTF8等)的字母将具有更多特色

30
撤消数字范围
给定一个数字n,创建从0到的范围非常简单n-1。实际上,许多语言都以内置方式提供此操作。 以下CJam程序读取一个整数,然后打印出这样的范围(请在线尝试!): ri, 请注意,它打印出没有分隔符的数字。 挑战 您的任务是逆转此过程。您应该编写一个程序,给定一个代表范围的字符串,该程序返回用于产生该范围的数字。 技术指标 给出的数字没有任何分隔符。 您可以假定该字符串形成有效范围。 您可以为范围使用基于0或1的索引。 您可以假设正确的输出将永远不会超过32,767(因此有效输入的长度永远不会超过152,725)。 您可以假设正确的输出将始终为正(因此您不必处理0或负)。 这是代码高尔夫球,因此最短的竞争性答案(以字节为单位)获胜。 测试用例 0索引: 0123 -> 4 0 -> 1 0123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 -> 101 1索引: 1234 -> 4 1 -> 1 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 -> 100

17
给我缠绕一些蛇!
给定一个输入整数n,绘制一条数字蛇,即一个n x n由数字组成的网格,该数字1通过n^2以下方式相互缠绕: 输入n = 3: 7 8 9 6 1 2 5 4 3 输入n = 4: 7 8 9 10 6 1 2 11 5 4 3 12 16 15 14 13 输入n = 5: 21 22 23 24 25 20 7 8 9 10 19 6 1 …
34 code-golf 

8
读取ASCII文字
受Golf启发,我使用了ASCII字母,对此挑战(几乎)是直接逆运算。 任务: 取一串ASCII文字文本,然后将文本内容输出为常规ASCII文本。 输入: ASCII艺术字的字符串。 输入将仅包含ASCII字符#,空格和4或5个换行符的实例(结尾的换行符是可选的)。所有行的长度相同。(也就是说,最后一个ASCII字母后缀空格。)如果需要,可以使用其他一些可打印的ASCII字符代替#输入。 输入将包含ASCII字母A-Z和ASCII空格(5x5的空白块)。没有标点符号。只有一行ASCII美术文字(实际5行)。将没有尾随或前导的ASCII艺术空间,也没有相邻的ASCII艺术空间。 字母大小为5x5个字符。每个字母之间有1x5的间隔。单词之间的间隔是5x5的空白块(每边+ 1x5的间隔,因为它只是另一个字母)。在结尾或开头将没有1x5空格,只有在ASCII字母之间。 输出: 包含文本的字符串,为ASCII字符A-Z+空格。如果您的解决方案更容易些,则输出也可以小写。混合大小写也是允许的。 ASCII字母: ### #### ### #### ##### ##### ### # # ##### ##### # # # # # # # # # # # # # # # # # # # # # # # ## ## ##### #### …

6
在Lambda中分配的Python解决方法
这是使用Python打高尔夫球的提示问题。 在Python打高尔夫球中,提交通常是定义为lambda的函数。例如, f=lambda x:0**x or x*f(x-1) 计算 x 的阶乘。 lambda格式有两个主要优点: f=lambda x:...或的样板lambda x:...比def f(x):...return...或短x=input()...print... 可以使用递归调用以很少的字节开销进行循环。 但是,lambda具有一个很大的缺点,即只允许一个表达式,没有语句。特别是,这意味着没有类似的分配c=chr(x+65)。当一个人有一个长表达式需要将其值引用两次(或更多)时,这是有问题的。 类似E=enumerate的赋值可以在函数外部或作为可选参数,但前提是它们不依赖于函数输入。可选参数f=lambda n,k=min(n,0):...失败,因为n在定义时k评估输入时尚未定义输入。 结果是有时您会因为在lambda中重复一个长表达式而感到厌烦,因为替代方案是一个较长的非lambda。 lambda s:s.strip()+s.strip()[::-1] def f(s):t=s.strip();print t+t[::-1] 收支平衡点约为11个字符(详细信息),超过此字符您将切换到a def或program。将此与通常的长度为5的收支平衡点进行比较以得到重复的表达式: range(a)+range(b) r=range;r(a)+r(b) print s[1:],s[1:]*2 r=s[1:];print r,r*2 其他语言也有解决方法,例如Octave。有一些已知的Python技巧,但它们使用时间长,笨拙和/或用途有限。一种用于在lambda中模拟分配的简短通用方法将彻底改变Python高尔夫。 Python高尔夫球手有哪些方法可以克服或解决此限制?当他们看到一个长表达式在lambda中重复两次时,他们应该想到什么潜在的想法? 我的这个提示问题的目标是深入研究此问题,并: 编目并分析高尔夫变通方法以在lambda中进行假分配 探索新的线索以寻求更好的方法 每个答案都应说明解决方法或潜在的领先优势。
34 code-golf  tips  python 

30
从1到n的数字交织,相同的数字反转
一个简单的: 取小于1000 的正整数n,并输出从1到n的整数与从n到1的整数交织在一起。您必须连接数字,以便它们之间没有任何定界符出现。 测试用例: n = 1 11 n = 4 14233241 n = 26 12622532442352262172081991810171116121513141413151216111710189198207216225234243252261 n = 100 110029939849759669579489399210911190128913881487158616851784188319822081218022792378247725762675277428732972307131703269336834673566366537643863396240614160425943584457455646554754485349525051515052495348544755465645574458435942604161406239633864376536663567346833693270317130722973287427752676257724782379228021812082198318841785168615871488138912901191109299389479569659749839921001 这是代码高尔夫球,因此每种语言中以字节为单位的最短提交胜出。鼓励解释。

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.