编程拼图和代码高尔夫

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

4
带有弹跳线的XY框,在Z处有一个标记
长期潜伏在这里的第一次海报。 编写一个包含3个输入的程序:X,Y和Z。 X =跨(列) Y =下降(行) Z =位置标记 然后,程序应在X上和Y上向下打印可视网格。该网格可以由“ +”以外的任何字符组成。每个“位置”都有一个索引号,从坐标1处的1开始,从1开始计数,然后一直向下直到结束。 X和Y始终至少为3,Z永远不会大于X * Y。 Z将代表该位置,并在该位置以及左,右,上和下1个字符上打印为“ +”。例如: + +++ + 最后,如果+字符将截取边缘(最上,最左,最右和/或最下边缘),则+应当沿同一轴弹回并从另一侧溢出。 示例:输入= 5、5、13 ----- --+-- -+++- --+-- ----- 输入= 10、10、10 -------+++ ---------+ ---------+ ---------- ---------- ---------- ---------- ---------- ---------- ---------- 输入= 10、10、21 ---------- +--------- +++------- +--------- ---------- ---------- ---------- ---------- ---------- ---------- …

5
那是一座奇怪的山!
灵感来自显示一连串小山,上面有个奇数!通过@sygmei。 当您可以拥有一个巨大的山脉时,为什么还要拥有一连串的山脉? 编写一个使用输入数字并打印每个奇数直到输入数字的山峰的程序。 (其中“西南”表示directly below and to the left,“东南”表示directly below and to the right) 每个数字都将在其/西南方和\东南方。它从1顶部开始,下一个数字将位于a的/西南或a的东南\。下一个数字将出现在最接近顶部和最左侧的行中。 对于多位数字,只需将第一个数字放在正确的位置即可,紧随其后的是其他数字,并且只有第一个数字应位于此位置\并/从中出来。 高达1或2的山仅是: 1 / \ 最多3或4的山仅是: 1 / \ 3 / \ 对于25或26: 1 / \ 3 5 / \ / \ 7 9 11 / \ / \ / \ 13 15 17 19 …

5
确定最佳巡航控制选项
巡航控制系统具有3个不同的选项,可移动手柄以设置要行驶的速度。 对您:增加1速度。 向上:将速度提高到10的下一个倍数(例如20-> 30、32-> 40) 向下:将速度降低到10的下一个倍数(例如20-> 10、32-> 30) 输入值 2个整数:第一个是起始速度,第二个是您想要的速度,非负值以及您喜欢的任何形式(数组,两个参数等) 任务 确定使用手柄达到所需速度的最佳方式,并以正确的顺序打印出动作。 规则 如果您可以选择拉近还是向上(例如从39到40),则可以选择其中一个,但在类似情况下,请选择任何选项 您可以使用任何3个不同的(最好是可见的)符号来区分输出中的移动(例如T,U和D)。 这些符号可以用新行,空格等分隔,但不必 以下是一些测试案例: start speed, desired speed --> output 30, 40 --> U 30, 43 --> UTTT 43, 30 --> DD 51, 39 --> DDDTTTTTTTTT 29, 30 --> T or U 29, 50 --> TUU or …

2
赛马的一天
背景 上世纪90年代末/ 00年代初,Flash Web Design非常酷,以至没有一个完整的Flash网站或至少没有动画小部件的人都无法生存,我受雇在Flash / Actionscript中开发“赛马查看器”,以80年代电子游戏风格的动画形式呈现,因此网站的访问者不仅可以阅读比赛结果,还可以通过动态动画观看比赛结果!哇!令人印象深刻! 他们向我提供了一个CSV文件,其中包含所有比赛的详细信息:开始和到达的顺序,赛马名称,车手姓名,奖品等。我的Flash应用程序为每次比赛读取该文件,并显示上述动画。 如今,Flash支持已大大下降,因此我们必须恢复为ascii-art! 任务 您的任务是创建一个完整的程序或函数,以从标准输入中读取CSV格式的比赛数据,并输出该比赛的ascii艺术表示形式,如下例所示。 输入 带有2个字段的CSV数据:1)开始顺序;2)到达完成时间的时间格式1.13.4(1分钟,13秒,十分之四秒)。如果时间报告R表明该马由于事件,跌倒或其他原因而退赛(未完成比赛)。注意:两匹或更多匹马的到达时间可能相同,在这种情况下,它们共享到达位置。 1,1.13.4 2,1.13.0 3,R 4,1.12.7 5,1.11.5 6,1.13.4 7,1.12.1 8,1.17.9 输出值 对于每个CSV行,输出如下所示的赛马场: 1_|______________4(1.13.0)___________________________ 赛马场由以下人员组成: 1 这是马匹的起跑顺序。 _|_垫片在哪里|,终点线在哪里。 50 x _表示十分之一秒。 5(1.13.4)即到达位置,然后是到达时间。这必须考虑到马之间的时差。例如:您将第一个到达的时间定位在终点线上1.11.5,第二个到达的时间1.12.1,相差1.12.1 - 1.11.5 = 6十分之一秒,因此第二匹马应定位在第6个字符上,依此类推。如果时间差超过十分之一秒(或5秒),则必须将马匹放在最后。如果马是R(退缩),则相同。 因此,上面CSV数据的整个运行轨道应为: F=Finish line 1_|____________________________5(1.13.4)_____________ 2_|______________4(1.13.0)___________________________ 3_|__________________________________________________R 4_|___________3(1.12.7)______________________________ 5_1(1.11.5)__________________________________________ 6_|____________________________5(1.13.4)_____________ 7_|_____2(1.12.1)____________________________________ 8_|__________________________________________________6(1.17.9) 012345678901234567890123456789012345678901234567890 无需添加F=Finish line,最后一行0123456789...仅用于说明目的。 …

5
有多少有效数字?
给定一个数字作为输入,请确定它具有多少个有效数字。该数字应作为字符串,因为您必须进行一些特殊的格式化。您很快就会明白我的意思(我认为)。 如果满足以下至少一项要求,则数字为签名。 非零数字始终有效。 两个有效数字之间的任何零都是有效的。 小数部分中的最终零或尾随零仅是有效的。 如果没有小数位,则所有数字都是有效的。 当只有零时,除最后一个零外的所有零都被视为前导零 输入值 数字的字符串或字符串数​​组。它的末尾可能有一个小数点,后面没有数字。它可能根本没有小数点。 输出量 有多少个签名。 例子 1.240 -> 4 0. -> 1 83900 -> 3 83900.0 -> 6 0.025 -> 2 0.0250 -> 3 2.5 -> 2 970. -> 3 0.00 -> 1
10 code-golf  string  math 

4
计算周长密度矩阵
介绍 的周长密度矩阵是一个无限的二进制矩阵中号定义如下。考虑一个(从1开始)的索引(x,y),并用M [x,y]表示由角(1,1)和(x,y)跨越的矩形子矩阵。假定除M x,y之外的所有M [x,y]值(索引(x,y)的值)已经确定。然后,值M x,y是0或1中的任何一个,这会使M [x,y]的平均值更接近1 /(x + y)。如果是平局,请选择Mx,y = 1。 这是子矩阵M [20,20],为清楚起见,用零代替了零: 1 . . . . . . . . . . . . . . . . . . . . . . . . 1 . . . . . . . . . . …
10 code-golf  matrix 

16
等等...我又要说什么?
当老师叫我说话时,我常常忘记我想说的话。您可以让我成为解决此问题的工具吗? 要求: 该程序必须如下循环: 首先,输入 如果输入为空,则打印最后存储的问题。 否则,将输入存储为问题。 笔记: 如果没有问题存储,输入将永远不会为空。 澄清:该程序不需要存储多个问题。 我最初希望它存储多个,但是在许多人误解了这个问题之后,我进行了更改。 请记住,这是code-golf,所以字节数最少的代码将获胜。
10 code-golf  string 

1
脑力激荡图像
介绍 Braincopter是一种深奥的Brainf ***衍生物,可将Brainf ***程序编码为图像。作为2D语言,它使用两个附加命令。它们顺时针和逆时针旋转指令指针(最初指向右)。Braincopter非常类似于Brainloller,不同之处在于代替使用不同的颜色作为不同的命令,它代之以计算基于每个像素的RGB值的命令。 Braincopter根据公式计算每个像素 的命令N = (65536 * R + 256 * G + B) % 11,其中N是命令编号。从命令编号到Brainf ***命令的映射如下: 0 > 1 < 2 + 3 - 4 . 5 , 6 [ 7 ] 8 rotate instruction pointer to the right (clockwise) 9 rotate instruction pointer to the left …

2
Corrcey我的庄严
引言 你们中的一些人可能已经意识到使用手机时我是马虎打字机。这就是为什么我要您编写一个纠正我的错字的程序。 粉笔 给定一个拼写错误的单词,输出我打算写的所有可能的单词。 错字 我输入错误的主要原因是我打错了按键,并且经常打到隔壁的按键。以下是我的键盘布局: q w e r t y u i o p a s d f g h j k l z x c v b n m , [ space ] . 请注意,最下面一行, [ space ] .将永远不会在此挑战中使用 出于某种原因,我只会在水平方向上犯错误:我永远不会碰到n而不是j,但是我可能会碰到f而不是d。 例如,我最终可能将单词sloppy拼写为: akioot 每个键我都离开的地方。 但是,请不要忘记,我不一定会对单词中的每个字母都犯错。 以斯普勒 假设输入为: vid …
10 code-golf 

20
动画寻找中间
给定一个非空字符串,请继续删除第一个和最后一个字符,直到获得一个或两个字符。 例如,如果字符串为abcde,则程序应显示: abcde bcd c 但是,如果为abcdef,则应在两个字符处停止: abcdef bcde cd 尾随换行符和每行末尾的尾随空格是可选的。您可以有任意多个,也可以没有。 测试用例 ABCDEFGHIJKLMNOPQRSTUVWXYZ -> ABCDEFGHIJKLMNOPQRSTUVWXYZ BCDEFGHIJKLMNOPQRSTUVWXY CDEFGHIJKLMNOPQRSTUVWX DEFGHIJKLMNOPQRSTUVW EFGHIJKLMNOPQRSTUV FGHIJKLMNOPQRSTU GHIJKLMNOPQRST HIJKLMNOPQRS IJKLMNOPQR JKLMNOPQ KLMNOP LMNO MN ABCDEFGHIJKLMNOPQRSTUVWXYZ! -> ABCDEFGHIJKLMNOPQRSTUVWXYZ! BCDEFGHIJKLMNOPQRSTUVWXYZ CDEFGHIJKLMNOPQRSTUVWXY DEFGHIJKLMNOPQRSTUVWX EFGHIJKLMNOPQRSTUVW FGHIJKLMNOPQRSTUV GHIJKLMNOPQRSTU HIJKLMNOPQRST IJKLMNOPQRS JKLMNOPQR KLMNOPQ LMNOP MNO N A -> A AB -> AB 请记住,这是code-golf,因此字节数最少的代码将获胜。
10 code-golf  string 

3
C#是主要问题
这个编程难题的灵感来自于昨天在这里提出但又被作者删除的另一个问题。 挑战: 使用Visual C#(或您喜欢的C#IDE)创建可执行二进制文件(Windows .EXE或Linux二进制文件),该文件将以下文本打印到标准输出中: Main() is the main method of C# programs! ...而不使用任何源文件中出现的4个连续字母MAIN! 笔记: 如果您的源代码包含文本remainder(例如),则它包含4个连续的字母MAIN,但是如果包含4个字母,则mxain不再是连续的,因此mxain将被允许​​。 除了C#IDE之外,您不能运行任何程序,也不能更改C#IDE的设置来运行其他程序(但可以正常运行的程序,例如C#编译器)。 否则,您可以简单地说:“我使用C#IDE编写Pascal程序,并在C#项目的“预构建”步骤中调用Pascal编译器。 这太简单了。 可以使用“插件”(或类似插件)进行扩展的IDE用户,或具有内置二进制文件编辑器(十六进制编辑器)的用户,将比其他C#IDE的用户拥有太大的优势。 因此,也不应使用这些功能。 明确允许使用其他非ASCII编辑器(例如对话框窗口编辑器)! 用户使用函数名称中的反斜杠提出这样的原始问题,就像这样:static void M\u0061in()由于其他用户已经阅读了此答案,因此将不再接受该答案! 用户询问是否允许将.EXE文件简单地输入到源代码编辑器中,并将文件另存为“ .exe”而不是“ .cs”。答:我认为这不可能,因为有效的Windows和Linux二进制文件都包含NUL字节。但是,如果找到可以通过这种方式创建的有效二进制文件,则您将获得有效的解决方案。 该站点的名称是“ Programming Puzzles & Code Golf”-这是“ Programming Puzzles & Code Golf”,而不是“ Code Golf”:挑战是要在所有其他用户之前找到可行的解决方案,而不是找到比所有其他用户都短的解决方案解决方案。 因此,描述有效解决方案的第一篇文章胜出! 祝好运! 顺便说一句:我有一个在Visual C#Express 2010下工作的解决方案。

6
可构造的n边形
可构造的n-gon是具有n个边的常规多边形,您仅可以使用罗盘和未标记的标尺来构造。 如高斯所说,唯一可构造n角的n是任意数量的不同费马素数和2的幂的乘积(即n = 2^k * p1 * p2 * ...,k是一个整数,并且每一个都p具有不同的费马素数)。 费马素数是可以用正整数表示的F(n)= 2 ^(2 ^ n)+1的素数。唯一已知的费马素数是0、1、2、3和4。 挑战 给定一个整数n>2,说出n-gon是否可构造。 规格 您的程序或函数应采用一个整数或代表该整数的字符串(以一进制,二进制,十进制或任何其他基数表示),并返回或打印真实或虚假值。 这是代码高尔夫球,因此最短的答案为准,因此存在标准漏洞。 相关OEIS 例子 3 -> True 9 -> False 17 -> True 1024 -> True 65537 -> True 67109888 -> True 67109889 -> False
10 code-golf 

9
超级折叠号码
我们已经在这里定义了折号。 但是现在我们将定义一个超级折叠数。超级折叠数字是一个数字,如果折叠足够的次数,它将最终小于2的幂。折叠的方法与折叠数问题稍有不同。 折叠算法如下: 以二进制表示 例如5882 1011011111010 将其洒入三个分区。前半部分,后半部分和中间数字(如果它的位数为奇数) 101101 1 111010 如果中间数字为零,则该数字不能折叠 反转后半部分并叠加在前半部分上 010111 101101 将数字添加到位 111212 如果结果中有2,则不能折叠该数字,否则新数字是折叠算法的结果。 如果数字可以折叠为连续的一串,则该数字为超级折叠数字。(所有折号也是超级折号) 您的任务是编写一个接受数字的代码,如果该数字是“超级可折叠”数字,则输出一个真实值,否则为“伪造”。您将在程序的大小上得分。 例子 5200 转换为二进制: 1010001010000 分成两半: 101000 1 010000 中间是一个,因此我们继续叠加两半: 000010 101000 添加了它们: 101010 没有二分之一,所以我们继续分成两半: 101 010 折: 010 101 111 结果是111(十进制为7),所以这是一个超级折叠数。 测试用例 前100个超级折号是: [1, 2, 3, 6, 7, 8, 10, 12, …

1
在一个独特的难题中扫描准六边形
作为一个可怕的拉丁学生,几年来,我学会了讨厌拉丁。然而,我有一件事是爱。 拉丁丑闻。 扫描是确定特定诗词的计量标准的行为。对于拉丁语,这意味着将行中的每个音节划分为“轻”或“重”。 在拉丁语中,丑闻有很多规则。但是,与英语不同的是,拉丁语扫描是相当常规的,并且通常不需要任何拉丁语词汇或语法知识。对于这个问题,我们将使用这些规则的简化子集(真实的拉丁文没有整齐的规范)。 在开始之前,韵律必须的Elid。Elision是在单词之间插入音节以简化发音的过程。(例如,“他是”->“他是”)。与英语不同,拉丁语省略遵循非常好的规则。 如果下一个单词以元音开头,则省略以单词元音结尾的单词的最终元音。 诺埃斯特EST->诺埃斯特 以元音后跟“ m”结尾的单词也是如此。 FIDUM AGRICOLAM-> FIDAGRICOLAM 单词首字母“ h”后跟一个元音,出于简化目的,被视为单个元音,并且在被省略时始终会被丢弃。 MULTAE HORAE-> MULTORAE 要么 MULTAM HORAM-> MULTORAM 清除后,我们可以开始扫描。扫描到特定的仪表。应对这一挑战的计量器是dactylic hexameter。乳状六边形有六个“脚”,每只脚由两个或三个音节组成。音节的长短取决于元音。前五个脚的每一个要么是一个长音节的dactyl,然后是两个短的音节,要么是一个spondee,两个长音节。最后一脚是长脚,后跟脚尖(短脚或长脚,对于此问题,您不必确定是哪一个)。 拉丁语中的元音可以短也可以长 夹在两个元音之间的“ i”是一个辅音。(即“ j”) 单词后面跟元音(例如Iactus)开头的“ i”也是辅音 “ q”之后的“ u”也是辅音(即“ v”) Diphthongs(ae,au,ei,eu,oe和ui)由两个元音组成,但是算作一个元音,并且总是很长 与下一个元音之间有两个或多个辅音的元音总是很长 对于先前的规则,在“ b”,“ c”,“ d”,“ g”,“ p”或“ t”之后的“ l”或“ r”不算作辅音 “ x”算作两个辅音 “ ch”,“ ph”,“ th”和“ …

1
用有效数字评估表达式
给定一个表达式,您的任务是评估它。但是,您的答案显示的位数不能超过必要的位数,因为这给人的印象是比实际情况更精确。 一个数字具有的有效位数是用科学计数法表示时具有的位数,如果存在小数点,则在末尾包含零。例如,1200有2个有效数字,因为它是,1.2*10^3但1200.有4个有效数字和1200.05个有效数字。 当将两个数字相加时,结果应四舍五入到与最低有效数字最左边的数字相同的位数。例如,1200 + 3 = 1200(自1200以来四舍五入到数百位)1200.01 + 3 = 1203,和4.59 + 2.3 = 6.9。请注意5四舍五入。该规则也适用于减法。0四舍五入到那个地方。请注意,加法和减法不取决于有效位数。例如,999 + 2.00 = 1001因为999四舍五入到一个位,而2.00四舍五入到百分之一;一个舍入到较少位数的位数是999,因此结果1001.00也应舍入到那个位数。同样,300 + 1-300精确等于1,但是300会四舍五入到百位,因此最终结果也应该四舍五入到百位,得出0。300. + 1-300.将等于1。另一方面。 当将两个数字相乘或相除时,请四舍五入到数字的有效位数,即最低有效位数。例如,3.839*4=20由于精确值,15.356四舍五入到20以来4,只有一个有效数字。同样,100/4=30由于两个数字都有一个有效数字,但是100./4.00=25.0由于两个数字都有3个有效数字。0被定义为具有1个有效数字。 表达式将只包含*,/,+,和-,(和括号)。应当遵循操作顺序,并且每次操作后都应将结果四舍五入。如果在一系列加法或减法或一串乘法与除法中遗漏了括号,则在完成所有运算后四舍五入。例如,6*0.4*2 = 5(一个有效数字),而0.4*(2*6)=0.4*10=4和(6*0.4)*2=2*2=4。 输入:一个字符串,其表达式包含()*/+-和数字。为简化起见,-将仅用作减法运算符,而不表示负数;但是,答案可能仍然是否定的,并且需要-作为前缀。 输出:表达式的结果,求值并四舍五入为正确的位数。请注意,这25对于不正确25.0。 测试用例: 3 + 0.5 --> 4 25.01 - 0.01 --> 25.00 4*7*3 --> 80 (4*7)*3 --> 90 (8.0 + 0.5)/(2.36 - …
10 code-golf  math 

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.