编程拼图和代码高尔夫

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

30
10张CHR $(205.5 + RND(1)); :使用PHP转到GOTO 10(或其他任何方式)
此问题是从Stack Overflow 迁移而来的,因为可以在Code Golf Stack Exchange上回答。 迁移 7年前。 刚刚与同事进行了一次“振奋”的对话,以讨论以下BASIC语句的简洁性: 10 PRINT CHR$(205.5+RND(1)); : GOTO 10 这是本书的标题,将简单地打印/和\字符序列,在两者之间随机交替,从而产生类似于以下内容的模式: (图片来自http://www.flickr.com/photos/rndmcnlly/5058442151/sizes/o/in/photostream/) 考虑到PHP的特殊性,我们想知道用PHP编写相同内容的最紧凑的方式是什么,并提出了以下建议: while(1) { echo chr(47 + 45 * rand(0,1)); } chr(47)是一个/字符,而chr(92)是一个\。因此,该声明echo chr(47 + 45 * rand(0,1));将随机地在两者之间交替出现,即引起恶心。 用您选择的语言编写最短的程序或函数,以输出一个无限随机的字符\和/字符序列,其中每个字符被选择的可能性均等。

15
地形字符串
这是一些示例输入,因此我可以解释问题所在: ((1 2)(3 (4 5) moo)) (i (lik(cherries)e (woohoo))) 可以将这行文字视为一些山脉的地形图。每组括号表示一个高度单位。 如果我们从侧面“查看”,以便垂直看到山脉,我们将看到: 4 5 cherries woohoo 1 2 3 moo lik e i 给定这些地形图之一,请像上面的输出一样以垂直比例输出地图。将地图中的不同项目与下一个项目的字符数分开。例如,输出之间有4个空格moo和i。同样,moo和之间的输入中有4个字符i。 以最少的字符数执行此操作的代码将获胜。

23
找到主要因素
在此任务中,您必须编写一个程序,该程序可以计算数字的素数。输入为自然数1 <n <2 ^ 32。输出是采用以下格式的数字素数的列表。如果指数为1,则必须省略。仅输出质数。(假设输入为131784): 131784 = 2 ^ 3 * 3 * 17 ^ 2 * 19 不需要使用相同数量的空格;可以在适当的地方插入空格。您的程序应在不到10分钟的时间内完成输入。字符数最短的程序获胜。

30
重塑For循环[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Code Golf Stack Exchange 的主题。 3年前关闭。 For 循环在许多语言中广泛使用,但是如果没有语言支持,您将怎么办? 创建的方式来执行基本for循环,而无需使用任何重复结构(for,foreach,while,do,等等)。 像这样设置您需要复制的基本for循环 for(i=0;i<1000;i++) 您必须能够在不使用重复结构的情况下复制它。它还必须以您的语言执行将在循环体内的代码。eval允许使用任何形式,尽管它可能无法自行执行for循环。 您可以通过将代码打印i100次来测试您的代码,将此测试用例添加到答案的末尾以与他人验证您的代码。 对于它到底是什么没有任何限制,它要做的就是复制for循环。 优胜者将根据其选择时的投票决定。

26
有一个老太太
您的目标是编写一个程序,以完全按照此处显示的方式打印以下诗歌: There was an old lady who swallowed a fly. I don't know why she swallowed that fly, Perhaps she'll die. There was an old lady who swallowed a spider, That wriggled and iggled and jiggled inside her. She swallowed the spider to catch the fly, I don't know why …

30
字符串X是字符串Y的子序列吗?
给定字符串X和Y,请确定X是否为Y的子序列。空字符串被视为每个字符串的子序列。(例如''和'anna'是的子序列'banana'。) 输入项 X,可能为空,区分大小写的字母数字字符串 Y,可能是空的区分大小写的字母数字字符串 输出量 True或False(或等效项),正确指示X是Y的子序列。 I / O实例 X Y output '' 'z00' True 'z00' 'z00' True 'z00' '00z0' False 'aa' 'anna' True 'anna' 'banana' True 'Anna' 'banana' False 标准 最短的程序获胜,这取决于源代码的字节数。 示例程序 与此相关的帖子中有几种可以改编的程序。
23 code-golf  string 

11
这个数字是秘密斐波那契吗?
背景 你们大多数人都知道斐波那契数是什么。根据Zeckendorf定理,有些人可能知道所有正整数都可以表示为一个或多个不同的斐波那契数之和。如果整数的最佳Zeckendorf表示形式中的项数n本身是斐波那契数,我们将其称为n“秘密”斐波那契数。 例如: 139 = 89 + 34 + 13 + 3 This is a total of 4 integers. Since 4 is not a Fibonacci number, 139 is not secretly Fibonacci 140 = 89 + 34 + 13 + 3 + 1 This is a total of 5 integers. Since …

6
分解高斯整数
一个高斯整数是一个复杂的数字,其实虚部是整数。 像普通整数一样,高斯整数可以以独特的方式表示为高斯素数的乘积。这里的挑战是计算给定高斯整数的素数。 输入:高斯整数,不等于0,也不是单位(即1,-1,i和-i不能作为输入)。使用任何明智的格式,例如: 4-5i -5 * j + 4 (4,-5) 输出:高斯整数列表,它们是质数(即,没有一个可以表示为两个非单位高斯整数的乘积),并且其乘积等于输入数。输出列表中的所有数字都必须是平凡的,即不能为1,-1,i或-i。可以使用任何明智的输出格式。它不必与输入格式相同。 如果输出列表中有多个元素,则可能有几个正确的输出。例如,对于输入9,输出可以是[3,3]或[-3​​,-3]或[3i,-3i]或[-3​​i,3i]。 测试用例,(从此表中获取;每个测试用例2行) 2 1+i, 1-i 3i 3i 256 1+i,1+i,1+i,1+i,1+i,1+i,1+i,1+i,1+i,1+i,1+i,1+i,1+i,1+i,1+i,1+i 7+9i 1+i,2−i,3+2i 27+15i 1+i,3,7−2i 6840+585i -1-2i, 1+4i, 2+i, 3, 3, 6+i, 6+i 不允许使用用于分解高斯整数的内置函数。但是,允许通过内置函数分解普通整数。

30
完全是素数的素数测试
编写一个程序,该程序将测试指定数字的素数,并将输出作为布尔值给出(True是素数)。您的主要测试可以(但不一定)对数字1有效。 要注意的是:您的程序本身必须求和一个质数。将每个字符(包括空格)转换为其Unicode / ASCII值(表)。然后,将所有这些数字相加,得出程序的总和。 例如,采用我在Python 3.3中编写的不太好的程序: q=None y=int(input()) for x in range(2,int(y**0.5)+1): if y%x==0: q=False if not q: q=True print(q) 如果将所有字符转换为相应的Unicode / ASCII值,则会得到: 113 61 78 111 110 101 10 121 61 105 110 116 40 105 110 112 117 116 40 41 41 10 102 111 114 32 120 …

13
进行长型签名
挑战 查找最长具有100个字节且类型签名最长的表达式。 规则 允许任何具有类型推断的静态类型语言 该类型必须是无歧义的,但否则可能包括没有定义实例的类型。例如Num [a]和Eq [a]是允许的,即使没有定义的实例 除了使用STDIN / STDOUT编译程序所需的最低要求外,没有其他导入 不允许无限类型 如果一个答案有多个表达,则只有一个可以参与评分。例如,尽管composition的类型签名为(.) :: (b -> c) -> (a -> b) -> a -> c,得分为20,但包含25个副本的答案(.)\n的得分为20,而不是500 表达式最多为100个字节 分数是类型签名中的字符数,不包括函数名称和任何空格。例如,f :: (a -> b) -> a -> b得分为12 最高分获胜! 例子 尽管允许使用其他语言,但是以下示例位于Haskell中: Score: 112 map.map.map.map.map.map.map.map.map.map.map.map.map.map.map.map.map.map.map.map.map.map.map.map.map f :: (a -> b) -> [[[[[[[[[[[[[[[[[[[[[[[[[a]]]]]]]]]]]]]]]]]]]]]]]]] -> [[[[[[[[[[[[[[[[[[[[[[[[[b]]]]]]]]]]]]]]]]]]]]]]]]] Score: …

13
你可以去酒吧吗?
背景 现在是星期五下午晚些时候,您和您的朋友决定在当晚晚些时候去酒吧,但是在去酒吧之前,您应该先喝点饮料。但是,事情迅速升级。您的朋友Shaddock Pamplemousse在本周初赢得了彩票,并决定将带不同饮料的板条箱带到板条箱上。酒馆的安全性非常严格,如果您在进屋之前过度消费,则不允许进入。你们都是程序员-所以您认为一切都会变得很好。 挑战 如果您超出/低于合理的发布限制,则需要对酒精度计进行编程,以输出真/假。在下酒馆之前,您需要输入您在晚上stdin阅读测量程序所消费的数量和饮料类型。如果输出不正确,则说明您超出了发布限制,请留在家里。如果输出错误,那您就很好了。 输入项 大于1的整数0表示您的体重(以千克为单位),后跟换行符。此输入之后是一系列的一位数的数字和饮料,格式如下: <amount><amount type>o<beverage type> 对于一瓶啤酒,外观如下: 1Bob 每个输入用空格分隔。 输入规格 每种饮料都有一个与之对应的单位。如果您消耗的单位数多于体重除以2的重量,则不再可以选择酒吧。 (这可能反映也可能不反映现实) 以下是有效的饮料以及饮料中相应的酒精单位: 啤酒:b,1单位 能量饮料:e,0单位 辣酱:h,2单位(浓汤) 汁(由有机水果等): j,0单位 朗姆酒:r,6单位 龙舌兰酒:t,7单位 伏特加:v,6单位 葡萄酒:w,3单位 有不同的金额类型: 瓶子: B 箱: C 玻璃: G 桶: K 啜: S 每种数量类型都有一个乘数,用于乘以其中所含饮料的酒精含量: 瓶子: 3 箱: 25 玻璃: 2 桶: 50 啜: 0.2 输出量 如果消耗的量高于/低于体重除以2 …

1
什么时候长颈鹿不是长颈鹿?
我希望在“ Programming Puzzles&Code Golf”中可以找到这种“谜语”。 举例说明以下C#方法返回的情况false: public class Giraffe : Animal { public bool Test() { return this is Giraffe; } } 规则:上面的代码行不能以任何方式更改,但是您可以将代码放入应用程序中,以便编译“项目”并调用该方法。运行时,该方法必须返回false。我想到的解决方案不会在运行时或类似的“异国情调”事物中发出自己的IL,这是一个普通的实例方法调用。

19
迪克斯特拉的挑战
为纪念APL成为今年50岁的互动工具而颁发 背景 肯·艾弗森(Ken [Iverson])在1963年8月于新泽西州普林斯顿举行的机械语言结构工作会议上发表了他的论文《程序语言形式化》。(巴克斯,库里,迪克斯特拉,弗洛伊德,艾弗森,纽厄尔,玻璃市,威尔克斯)。该文件还记录了演讲后的讨论,最后在Ken和[Edsger] Dijkstra之间进行了交流,其中Ken对Dijkstra问题的答复是单线的。 挑战 您将如何表示一个更复杂的操作,例如,矩阵M中所有元素的总和等于相应的行索引和列索引的总和? 编写一个代码段或表达式(不需要完整的程序或函数)以计算给定整数矩阵中每个元素的总和,该整数等于其索引的总和。或者,如FryAmTheEggman所说:给定一个矩阵中号的元素一个 IJ返回每个的总和一个 IJ其中一个 IJ = I + J。 您可以假定矩阵已经在变量或存储位置中,或者可以将其用作参数或输入。您可以使用基于0或1的索引。 测试用例 0 用于空矩阵 2 0基于0的索引或2基于1的索引 1 5 2 9 4 2 5 9 6 2基于0或10基于1 0 3 0 4 0 4 1 4 4 3 1 2 -2 4 -2 -1 11 3 -1 …

2
表情符号自动贩卖机
看不到表情符号?请点击这里。 您将模拟自动售货机。这些项目是56种不同的表情符号,可以表示为两个替代UTF-8字符,从🍅(U + D83C U + DF45)到🍼(U + D83C U + DF7C)。在HTML中,这些表情符号可以UTF-16形式表示为&#x1F345到&#x1F37C。在基数10中,第一个UTF-8字符的值为55356。第二个字符的值的范围是57157至57212。这是一个生成所有相关表情符号的CJam程序。为避免混淆,此挑战将以字符而不是字节来评分。有些表情符号是2个字符,有些是3个字符。http://www.lettercount.com将为您提供准确的计数以应对这一挑战。 定价💵💵💵 有8种不同的价格类别: $ 1.00:🍅🍆🍇🍈🍉🍊🍋 $ 1.50:🍌🍍🍎🍏🍐🍑🍒 $ 2.00:🍓🍔🍕🍖🍗🍘🍙 $ 2.50:🍚🍛🍜🍝🍞🍟🍠 $ 3.00:🍡🍢🍣🍤🍥🍦🍧 $ 3.50:🍨🍩🍪🍫🍬🍭🍮 $ 4.00:🍯🍰🍱🍲🍳🍴🍵 $ 4.50:🍶🍷🍸🍹🍺🍻🍼 显示自动售货机 这是程序启动时和购买后用户所看到的。您可以使用常规数字代替表情符号数字,但是表情符号数字的优点是与其他表情符号的宽度相同。如果您使用表情符号数字,则可以从乐谱中减去14个字符,因为表情符号数字各为3个字符。 1️⃣2️⃣3️⃣4️⃣5️⃣6️⃣7️⃣ A 🍅🍆🍇🍈🍉🍊🍋 B 🍌🍍🍎🍏🍐🍑🍒 C 🍓🍔🍕🍖🍗🍘🍙 D 🍚🍛🍜🍝🍞🍟🍠 E 🍡🍢🍣🍤🍥🍦🍧 F 🍨🍩🍪🍫🍬🍭🍮 G 🍯🍰🍱🍲🍳🍴🍵 H 🍶🍷🍸🍹🍺🍻🍼 如果用户输入G5,则选择🍳。输入E6选择🍦。 …
23 code-golf 

27
重新排列顺序
介绍 让我们观察以下序列(非负整数): 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, ... 例如,让我们采用前三个数字。这些是0, 1, 2。此序列中使用的数字可以以六种不同的方式排序: 012 120 021 201 102 210 因此,假设F(3)= 6。另一个示例是F(12)。其中包含数字: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 或串联的版本: 01234567891011 为了找到重新排列此方法的方法,我们首先需要查看此字符串的长度。该字符串的长度为14。因此,我们计算出14!。但是,例如,那些人可以交换位置而不会破坏最终的琴弦。有2个零,所以有2个!在不破坏顺序的情况下消除零的方法。也有4个,所以有4个!切换方式。我们将总数除以这两个数字: 这个有14个!/(4!×2!) = 1816214400排列字符串的方式01234567891011。因此我们可以得出F(12)= 1816214400的结论。 任务 给定N,输出F(N)。对于那些不需要介绍的人。为了计算F(N),我们首先将前N个非负整数连接起来(例如,对于N …

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.