编程拼图和代码高尔夫

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

1
绘制旋转风车
还记得您吹过的那些有趣的风车,它们一圈又一圈旋转吗?让我们编写一个! 风车将具有\ | / _绘制其中心和手臂的一组字符。一个可能的风车可能看起来像这样: | | |_ ___ ___|_| | | | 但是什么是不旋转的风车呢?没有乐趣!我们可以通过重新排列符号来使其旋转: / \ / \ / \/\ \/\ / \ / \ / 挑战在于创建一个程序,该程序需要三个整数并输出如下所示的风车。其中第一个是它具有的臂数,第二个是风车的臂的长度,第三个是它将顺时针旋转八分之一圈的次数。 您可以假设以下内容: 臂数始终为0、1、2、4或8。 所有的手臂将彼此等距隔开。 风车的初始位置将具有如下中心: _ |_| 如果臂数为1,则可以决定臂指向哪个方向。 如果臂数为2,则可以决定使臂垂直或水平指向。 您可以编写通过STDIN或命令行参数接受输入的完整程序,或通过函数参数接受输入的函数。您的程序必须显示一系列显示风车旋转的输出,每个输出至少由一个空行分隔。风车的中心不应移动超过一个空间。您可以根据需要输出任意数量的前导和尾随空格。 这里有些例子: 0 2 1 _ |_| /\ \/ 1 3 2 | | |_ …

29
每行的奎因
您的目标是创建一个可以无限打印的程序,并在每行之后添加一个新行。因此,如果您的程序是单行程序,那么它将在输出的每一行上重复执行。 例 程序: A 输出: A A A ... 规则 它必须是完整的程序,而不是摘要或功能。 该程序应永远循环,而不会出现堆栈溢出或递归限制错误。 输出是标准输出或最接近的替代输出。 不接受任何程序输入。 不允许出现标准漏洞,例如打开程序的文件或访问外部资源。空程序不允许作为标准漏洞。 如果您的程序代码以尾随换行符结尾,则这不算作成对字符之间的必要换行符,您必须打印另一个。 codegolf-最短的代码胜出!
30 code-golf  quine 

10
正弦文字
目标:编写一个程序或函数,以正弦形状打印输入字符串。 ASCII正弦波 这是正弦曲线的一个周期: ....... ... ... .. .. . . . . . . . . . . . . . . . .. .. ... ... ....... 请注意,每一列上只有一个点。 输入字符串中的每个字符将从左到右替换上面形状中的一个点。 输入中的空格必须像普通字符一样输出,代替点。 起始字符对应于上图中最左边的点。 这只是一个周期,输入的长度可能大于上面的点数。 输入值 输入是ASCII字符串,仅包含ASCII十进制32(空格)和ASCII十进制126(波浪号〜)之间的字符。 输入将始终仅是一行(没有换行符)。 可以通过STDIN,函数参数,命令行参数或任何类似方式进行输入。 输出量 输出必须完全按照给定的测试用例打印。 允许在行上使用尾随空格,只要具有这些尾随空格的行的长度不超过最长行(在其上最后一个字符的行)的长度即可。 不允许前导/尾随线。 测试用例 输入: ................................................. 输出: ....... ... ... .. .. …

8
甲壳虫的歌曲和六边形
编写两个三角形(即金字塔)形状的程序。 第一个应该是一个向上的文字三角形,其最小底边宽度为三个字符。所以它的结构像 X XXX 要么 X XXX XXXXX 要么 X XXX XXXXX XXXXXXX 或更大。每个都X将替换为实际代码中的字符,除了行终止符外,其他任何字符都可以(因此X可以为空格)。X必须将所有的都替换掉,并且需要保留有助于形成三角形的空格和换行符。 第二个程序必须具有与第一个程序相同的大小和形状,除了三角形将指向下方。 因此,如果您的第一个程序看起来像 X XXX XXXXX 然后你的第二个程序看起来像 yyyyy yyy y 每个y字符都是您需要在实际代码中填充的字符(可能与您的X代码不同)。空格和换行符在这里也必须保持不变。 您的任务是编写这些程序,以使它们各自输出(以stdout或最接近的替代音)甲壳虫乐队独特歌曲的标题,而不输入任何内容。这篇Wikipedia文章将作为我们披头士乐队的正式歌曲清单。输出应该是所列标题之一,例如I Want You (She's So Heavy)。 但是,即使有奇怪的三角形程序要求,这也很容易。因此,我们将从前两个程序组成另一个程序,该程序必须输出另一个歌曲名称。 通过组合两个三角形程序中每个程序的三个副本,我们可以创建形状像六边形的第三个程序。 如果您的第一个程序的基本宽度为3,则它将如下所示: XyyyX XXXyXXX yyyXyyy yXXXy 如果基本宽度为5,则它将如下所示: XyyyyyX XXXyyyXXX XXXXXyXXXXX yyyyyXyyyyy yyyXXXyyy yXXXXXy 该程序(与其他空格和换行符一起运行时)必须输出另一个甲壳虫乐队的歌曲标题,就像前两个程序一样。也: 您的三个程序必须输出不同的歌曲标题。 歌曲标题长度不得超过8个字符。 您只能选择之一Revolution,Revolution 1并且Revolution 9因为标题是如此相似。 …

7
哪些“朋友”角色确实是最好的朋友?
美国情景喜剧之友的六个主要演员均同意,在整个系列的整个过程中(至少在第二季之后),他们将获得相同的薪水。但这并不意味着他们都具有相同的播放时间,也不意味着它们在屏幕上彼此交互的时间相同。 在这个挑战中,您将编写一个程序来帮助确定哪些Friends朋友确实是最好的。 设定 考虑观看“ 朋友”的情节或场景,并准确记录每次相机拍摄期间谁在屏幕上显示多长时间。 我们将缩写每个字符的名称: C是钱德勒的 J是给乔伊的 M是给莫妮卡的 P是给菲比的 R是给瑞秋的 S是给罗斯的 然后,对于每个相机镜头(或角色每次进入/退出镜头),我们都会列出屏幕上的人物。例如: 504 CRS 200 J 345 MP 980 2000 CJMPRS 这就是说: 在504毫秒内,钱德勒,雷切尔和罗斯出现在屏幕上。 然后持续200毫秒,乔伊就呆了。 然后持续345毫秒,莫妮卡和菲比都在。 然后持续980毫秒,屏幕上没有显示6个主要角色。 然后两秒钟,所有的人都。 (这不是来自实际剪辑,而是由我组成的。) 请注意,以下内容是等效的: 504 CRS 1 J 199 J 345 MP 980 2000 CJMPRS 为了分析哪些字符组合具有最大的屏幕显示时间,我们查看了6个字符的所有64个可能子集,并总计了它们的屏幕显示时间。如果在拍摄镜头期间某个子集中的每个人都出现在屏幕上,即使其中的字符比该子集中的人物更多,该镜头拍摄的时间也会添加到该子集的总屏幕时间中。 空子集有一个例外-仅计算不包含6个主要角色的场景。 因此,以上示例的分析将是: 980 2504 C 2200 J 2345 …

30
在乘法表中对唯一数字进行排序
今天非常简单的挑战: 编写一个程序或函数,该程序或函数采用正整数N,并打印或返回出现在乘法表中的唯一数字的排序列表,该唯一表的行和列被乘数均在1到N之间(含1和N)。 该列表可以按升序(最小到最大)或降序(最大到最小)排序,并且可以任何合理的格式输出。 以字节为单位的最短代码胜出! 例 当N = 4时,乘法表如下所示: 1 2 3 4 ----------- 1| 1 2 3 4 | 2| 2 4 6 8 | 3| 3 6 9 12 | 4| 4 8 12 16 表格中的唯一编号为1, 2, 3, 4, 6, 8, 9, 12, 16。这些已经排序,所以 1, 2, 3, 4, 6, …

30
2个字符串的最长公共前缀
编写一个程序,将2个字符串作为输入,并返回最长的公共前缀。这是code-golf,所以最短字节的答案会获胜。 Test Case 1: "global" , "glossary" "glo" Test Case 2: "department" , "depart" "depart" Test Case 3: "glove", "dove" ""
30 code-golf  string 

9
唯一分开的像素
对于N x N的图像,请找到一组像素,以使不存在超过一次的分隔距离。也就是说,如果两个像素被隔开一定距离d,则它们是由恰好分离的仅两个像素ð(使用欧几里德距离)。注意,d不必是整数。 面临的挑战是要找到比其他任何人都更大的此类集合。 规格 无需输入-对于该竞赛,N固定为619。 (由于人们一直在问-数字619并没有什么特别之处。选择它的大小足够大,不可能提供最佳解决方案,而它又足够小,可以显示N by N图像,而Stack Exchange不会自动缩小该图像。显示的最大尺寸为630 x 630,因此我决定使用最大的质数,但不要超过该值。) 输出是用空格分隔的整数列表。 输出中的每个整数代表一个像素,以英语阅读顺序从0开始编号。例如,对于N = 3,位置将按以下顺序编号: 0 1 2 3 4 5 6 7 8 您可以根据需要在跑步过程中输出进度信息,只要可以轻松获得最终得分结果即可。您可以输出到STDOUT或文件,也可以输出到最容易粘贴到下面的堆栈代码判断中的任何内容。 例 N = 3 选择的坐标: (0,0) (1,0) (2,1) 输出: 0 1 5 获奖 分数是输出中位置的数量。在那些得分最高的有效答案中,最早的发布该得分的答案将获胜。 您的代码不必是确定性的。您可以发布最佳输出。 相关研究领域 (感谢Abulafia的Golomb链接) 尽管这两个问题都不相同,但是它们在概念上都相似,并且可能为您提供解决方法的思路: 哥伦布尺:一维情况。 Golomb矩形:Golomb直尺的二维扩展。对所有N求解NxN(平方)情况的一种变体,称为Costas阵列。 请注意,此问题所需的点不受与Golomb矩形相同的要求。通过要求从每个点到另一个的向量是唯一的,Golomb矩形从1维情况开始延伸。这意味着可以有两个点在水平方向上隔开2个距离,也可以在两个点之间垂直隔开2个距离。 对于此问题,标量距离必须唯一,因此水平间距和垂直间距都不能为2。此问题的每个解决方案都是一个Golomb矩形,但并非每个Golomb矩形都是一个有效的解这个问题。 上限 丹尼斯在聊天中很有帮助地指出 …

15
保证金太窄
大约在1637年左右,Pierre de Fermat在他的算术副本的空白处写道: It is impossible to separate a cube into two cubes, or a fourth power into two fourth powers, or in general, any power higher than the second, into two like powers. I have discovered a truly marvelous proof of this, which this margin is too narrow to …
30 code-golf  number 

6
使用斜线绘制希尔伯特曲线
的希尔伯特曲线是可以被表示为空间填充的分形Lindenmayer系统与连续世代看起来像这样: 由于http://www.texample.net/tikz/examples/hilbert-curve/用于图像。 目标 编写尽可能短的程序(以字节为单位),该程序从stdin取一个正整数n并仅使用正斜杠,反斜杠,空格和换行符将n阶Hilbert曲线绘制到stdout。 例如,如果输入是1输出,则必须为 \ \/ 如果输入是2输出,则必须为 / \/\ /\ \ / /\/ \ \ \/ 如果输入是3输出,则必须为 \ /\/ / /\ \/\ \ \ /\ / / / / / \/ \/\ \ \/\ /\ \ \/ / / / /\/ /\/ / \ \ \ \/\ \/ \/\ …

12
向计算机科学的先驱们问好
选择您最喜欢的著名计算机科学家或计算机科学先驱,他们出生于1942年或更早(1943年标志着“第一台”计算机的诞生)。他们应该有一个Wikipedia页面或其他网站,其中列出了他们的出生年份,并说明他们的成就与计算机科学的关系。您可以选择与其他人相同的东西,但鼓励选择新的人。 取一个他们众所周知的名字。这很可能是他们的名字和姓氏,但如果更常见,则可能包含缩写或中间名。例如,对于托尼·霍尔都Tony Hoare和C. A. R. Hoare是可以接受的。 名称中的所有字符必须是可打印的ASCII。如果名称包含无法打印的ASCII字符,则选择近似值即可。例如Kurt Godel代替Kurt Gödel。 以名称中的唯一字符集(例如C. ARHoare)为例,并在科学家的出生年份之前将其向上移动到可打印的ASCII刻度,从一个~到另一个循环。(基本上以95为模添加出生年份。)这将为您(最可能)提供一组新的可打印ASCII字符。 例如,CAR Hoare于1934年出生,因此将每个字符都C. ARHoare移入1934年(34个mod 95)字符可得出ePBctj2$5(。 该堆栈片段将为您完成所有转移: function go() {var name = document.getElementById("name").value;var year = parseInt(document.getElementById("year").value);var unique = {};for (var i = 0; i < name.length; i++) { unique[name.charAt(i)] = true; } var result = ''; for (var char in unique) …

12
官方Ruby检查器
这是一个简单的ASCII艺术红宝石: ___ /\_/\ /_/ \_\ \ \_/ / \/_\/ 作为ASCII宝石公司的珠宝商,您的工作是检查新近获得的红宝石,并留下任何发现的缺陷的注释。 幸运的是,只有12种类型的缺陷是可能的,并且您的供应商保证没有任何一种红宝石会存在多个缺陷。 12个缺陷对应于更换12内中的一个的_,/或\红宝石的字符与一个空格字符()。红宝石的外围永远不会有缺陷。 缺陷根据内部字符在其位置留有空格的方式编号: 因此,缺陷为1的红宝石如下所示: ___ /\_/\ /_/ _\ \ \_/ / \/_\/ 缺陷为11的红宝石如下所示: ___ /\_/\ /_/ \_\ \ \_/ / \ _\/ 其他所有缺陷也是相同的想法。 挑战 编写一个程序或函数,该程序或函数采用单个可能有缺陷的红宝石的字符串。缺陷编号应打印或退回。如果没有缺陷,则缺陷编号为0。 从文本文件,stdin或字符串函数参数获取输入。返回缺陷编号或将其打印到标准输出。 您可以假设红宝石带有尾随换行符。您可能不会假定它有任何空格或前导换行符。 以字节为单位的最短代码获胜。(方便的字节计数器。) 测试用例 13种准确的红宝石类型,紧随其后的是预期产量: ___ /\_/\ /_/ \_\ \ \_/ / \/_\/ 0 ___ …

30
多次运行的数字
任务 找到一组数字,使二进制表示形式包含两个或多个1由至少一个隔开的游程0。 例如,对于4位长的数字: 0 0000 (no ones) 1 0001 (only one run) 2 0010 (only one run) 3 0011 (only one run) 4 0100 (only one run) 5 0101 Valid 6 0110 (only one run) 7 0111 (only one run) 8 1000 (only one run) 9 1001 Valid 10 1010 …
30 code-golf  binary 

26
整数标记成等级
给定正整数(0及以上,没有最大值),请遵循以下规则将其转换为等级: A = 100+ B = 90 - 99 C = 80 - 89 D = 70 - 79 E = 60 - 69 F = 59 and less. 这感觉有些无聊,因此+如果成绩为7,8或9,-则为a;如果分数为0,1或2,则为a。对于F和A情况,请忽略此等级。 一个例子: 输入: 65 输出: E 测试用例: 0 -> F 20 -> F 65 -> E 72 -> D- 75 -> …
30 code-golf 

9
计算阶乘的逆
编写最短的代码,该代码将接受大于1的任何实数作为输入,并输出其正反阶乘。换句话说,它回答“什么阶乘等于该数字?”的问题。使用伽玛功能作为描述阶乘扩展定义任意实数这里。 例如: input=6 output=3 input=10 output=3.390077654 因为3! = 6和3.390077654! = 10 规则 禁止使用内置的阶乘函数或伽马函数,或依赖于这些函数的函数。 该程序应该能够将其计算为5个十进制数字,并且具有理论上能够将其计算为任意精度的能力(它应该包含可以任意增大或减小以获取任意精度的数字) 允许使用任何语言,以字符中最短的代码为准。 我在这里做了一个有效的例子。看一看。

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.