编程拼图和代码高尔夫

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

5
将人字形转换为固线
编写一个仅包含空格,换行符和尖括号的字符串的程序:<,>(chevrons)。输出一串空格,换行符和斜杠:/,\((soliduses),其形状与输入相对应,但顺时针旋转四分之一圈,并在原始输入的每一行之间插入一列空格(出于美观目的)。 例如,如果输入为: <> 输出将是这样的: /\ \/ 如果输入是这样的: ><<<> <>< 输出将是这样的: \/ /\ /\ \/ /\ /\ /\ \/ 如果输入是这样的: >> << <> <> < >< 输出将是这样的: /\ \/ \/ \/ \/ /\ /\ /\ /\ \/ /\ 请注意,在最后两个示例中,原始输入行之间如何有一列空格。 您可以编写一个完整的程序,该程序以任何常用方式(命令行,stdin)获取输入并打印输出,或者您可以编写一个带有字符串参数的函数来打印或返回输出。 输入中不需要空格的前导行和尾随行或列在输出中出现。另外,只要结果形状正确,输出中的任何位置都可以有任意数量的前导和/或尾随空格和/或换行符。换一种说法, ascii艺术的翻译并不重要,只有形状及其相互之间的关系才重要。 您可以选择假设输入的末尾有换行符。 以字节为单位的最短代码获胜。

23
州和首都
给定一个字符串作为输入,如果它是州资本,则输出其资本为美国的州,如果它为州,则输出其国家的资本,或者Arstotzka都不是。 例子: Austin -> Texas Alaska -> Juneau The Nineteenth Byte -> Arstotzka 所有首都及其各自的州: Baton Rouge, Louisiana Indianapolis, Indiana Columbus, Ohio Montgomery, Alabama Helena, Montana Denver, Colorado Boise, Idaho Austin, Texas Boston, Massachusetts Albany, New York Tallahassee, Florida Santa Fe, New Mexico Nashville, Tennessee Trenton, New Jersey Jefferson, Missouri Richmond, …

4
为我播放一首歌
挑战 给定吉他制表法,您必须输出该制表符代表的歌曲。这可能是计算机的扬声器或音频文件(.wav,.mp3,.midi,.aiff等)的声音。还将有第二个输入用于计时。 这些选项卡可以通过文件输入,也可以直接输入到STDIN。该选项卡将采用ASCII格式。 规格 所有选项卡均适用于6支标准E调弦的六弦吉他:E2(82.41 Hz),A2(110.00 Hz),D3(146.83 Hz),G3(196.00 Hz),B3(246.94 Hz),E4(329.63 Hz)。 您必须满足的唯一技术(除了正常采摘之外)是: 弯曲(永远是半色调弯曲) 锤击 脱下 向上/向下滑动 由于您无法合成静音字符串的声音,因此请x视为-。 弯曲时,再次输出从未弯曲到弦到弯曲再到未弯曲的完整过渡。 第二个输入将是选项卡上每个符号表示的时间(以秒为单位)。例如: 输入: e|--- B|--- G|--- D|--- A|--- E|--- 使用Timing时0.5,因为有几3列符号(但没有注释),所以输出的音频文件为(3*0.5=1.5)1.5秒静默。 示例标签 1- 体重(杰克·怀特(Jack White),吉米·佩奇(Jimmy Page + The Edge)版) e|----3-----3---3----2---------3--------------------| B|----3-----3---3----3--1-1----3--------------------| G|----0-----0---0----2--0-0----0--------------------| D|----0-----0---2-------2-2----0--------------------| A|----2-----0---2-------3-3----2--------------------| E|----3-----2---x----2--x-x----3--------------------| 2- 闻起来像青少年的精神 e|--------------|---------------|-------------|-------------| B|--------------|---------------|-------------|-------------| G|-----8h10-----|-8-8b----6--5--|-6--5--------|-------------| D|-10--------6--|---------------|-------8-6-8-|-8b----6--5--| A|--------------|---------------|-------------|-------------| E|--------------|---------------|-------------|-------------| 3- …

2
连接字母
您应该编写一个程序或函数,该程序或函数接收一个以字符串表示的字符块,并输出或返回一个类似的字符串,在该字符串中,字母的相邻字母相互连接。 视觉示例(以的形式input => output): b d b d |\ /| | \ / | => | X | | / \ | e |/ \e c a c a 细节 输入将是一个包含空格,换行符以及每个第一N个小写字母正好一个的字符串。1 <= N <= 26 输入的行将用空格填充,以创建一个完整的矩形块。 字母表中相邻的每对字母将在同一行,列或对角线上,并应使用来连接直线\ / | or -。(该行的长度可能为0。) 应处理以下两行重叠类型: / and \ become X | and - …

28
迭代部分和
整数列表[a 1,a 2,a 3,...,a n ]的部分和为 s 1 = a 1 s 2 = a 1 + a 2 s 3 = a 1 + a 2 + a 3 ... s n = a 1 + a 2 + ... + a n 然后,我们可以获取部分和[s 1,s 2,s 3,...,s n ]的列表,然后再次计算其部分和以生成新列表,依此类推。 …

7
飞机上的有效蛇
受到Vi Hart的视频之一启发(这些视频充满了潜在的挑战想法) 蛇由相同长度的线段组成,每个线段之间的连接可以是直的,也可以是90度的。 我们可以通过记下一条滑行器(它所需要的转弯方向(直/左/右))来编码这样一条蛇(最多旋转一次,具体取决于初始方向)。从左上方开始,指向右侧 -+ +--+ SR RSSR | +-+ | S RSL S +--+ --+ LSSL SSR 将由滑行者代表 SRSLSSLRLRSSRSRSS 当然,一条平面蛇不能相交(如中的SSSSLLLSS),这将导致可怕的像素化游戏结束。 您的任务是确定滑行器是否有效(导致至少一个自相交) 输入 的字符串由字母构成的SLR与2 < length < 10000 输出 的东西Truthy如果它是一个有效的滑行和东西Falsey如果它不是。 测试用例 __Valid__ SSLSLSRSRSSRSSSLLSSSRRLRSLRLLSSS SRRLSLLRRLLSLRRSRLLRSRRLLRRSRLLSSLLRSRRLLRRSRLLRSRRLSLLRRLLSLRR (A hilbert curve) RLLRSRRLSLLRRLLSLRRSRLLRSRRLLRRSRLLSSLLRSRRLLRRSRLLRSRRLSLLRRLLSLRRSRLLRSRRLLRRSRLLSSLLRSRRLLRR SRRSRSRSSRSSRSSSRSSSRSSSSRSSSSRSSSSSRSSSSSRSSSSSSRSSSSSSRSSSSSS (Spiral) SSSSSSSSSSLSSSSSSSLSSSSSSSSLSSSSSLSSSSSSLSSSLLRRLLRRLLSLSSSRRSSSSRSSSRSSSSSSRSSSSSRSSSSSSSSRSSSSSSSRSSSSSSSSS (bigger, squigglier spiral) LRSLLRLSRSLLSRLSLRSLSSSLRRSSLSRRLRSRLRLSLRLLRLRSSLSLRLRSRSSSSSLSRRLSLSSSRRLRLRLRLRRLLSSLSSSRRLRLRLRLRLSLSSSSSSSSSSSSSRLRLLRLRLRLRLRLRLRLSLSSSLSLSLL __Invalid__ SRRLSLLRRLLSLRRSRLLRSRRLLRRSRLLLLRSRRLLRRSRLLRSRRLSLLRRLLSLRR SRRLSLLRRLLSLRRSRLLRSRRLLSRSSSRSSSSSSSRSRSSSSSSSRRLLRRSRLLRSRRLSLLRRLLSLRR SRRSRSRSSRSSRSSSRSSSRSSSSSSSSSSRSSSSRSSSSSRSSSSSRSSSSSSRSSSSSSRSSSSSS SSSSSSSSSSLSSSSSSSLSSSSSSSSLSSSSSLSSSSSSLSSSLLRRLRLRRLLSLSSSRRSSSSRSSSRSSSSSSRSSSSSRSSSSSSSSRSSSSSSSRSSSSSSSSS …

14
颜色的色调
您将获得颜色的RGB值。您的任务很简单:以最简单的定义计算色相。 假设具有最高,中间和最低值的通道是X,Y,Z(分别是红色,绿色或蓝色),其值分别是x,y,z。此颜色的色相为(h(X)-h(Y))*(1 +(xy)/(xz))/ 2 + h(Y),其中: h(red) = 0 (or 360 if one of X or Y is blue) h(green) = 120 h(blue) = 240 输入由3个从0到255的整数组成,这些整数不完全相等(以任何一致的顺序)。输出可以是浮点数,也可以是向上或向下取整的整数,而不必保持一致。如果输出的整数部分为0或360,则可以打印其中一个。 您不能为颜色空间转换(包括诸如在处理图像时进行隐式转换)调用内置函数。 这是代码高尔夫球。最短的代码胜出。 例子 Input: 0 182 255 Output: 197 (or 198) Input: 127 247 103 Output: 110 Input: 0 0 1 Output: 240 Input: …
23 code-golf 

3
堆叠勾股三角
背景 毕达哥拉斯三角形是直角三角形,其中每个边的长度是一个整数(即,边的长度形成毕达哥拉斯三重): 使用这个三角形的边,我们可以附加两个不完全一致的毕达哥拉斯三角形,如下所示: 只要我们认为合适,就可以继续使用此模式,只要没有两个三角形重叠并且连接边的长度相等即可: 问题是,在给定的空间中,我们可以容纳多少个非一致的毕达哥拉斯三角形? 输入 您将通过函数参数,STDIN,字符串或任何您喜欢的变量接收两个整数作为输入,W和H。整数可以以十进制,十六进制,二进制,一元(祝您好运,Retina)或任何其他整数基数形式接收。您可能会认为max(W, H) <= 2^15 - 1。 输出 您的程序或函数应计算一个不重叠的连接的非一致勾股勾勒三角形的列表,并输出一组三个坐标的列表,其中一组坐标通过线连接时形成勾股勾勒三角形之一。坐标必须是我们空间中的实数(x必须在区间中,[0, W]并且y必须在区间中[0, H]),并且距离应精确到机器精度。三角形的顺序和每个坐标的确切格式并不重要。 必须有可能从一个三角形“行走”到其他任何一个,仅跨过相连的边界。 使用上述图作为一个例子,让我们的输入是W = 60,H = 60。 然后,我们的输出可能是以下坐标列表: (0, 15), (0, 21), (8, 15) (0, 21), (14.4, 40.2), (8, 15) (0, 15), (8, 0), (8, 15) (8, 0), (8, 15), (28, 15) (8, 15), (28, …

23
没有条件语句的查找
这项挑战的灵感来自对Arduino微控制器进行编程。我有6个LED和6个按钮连接到板上的各种引脚。在代码中,每个按钮和LED都分配有一个ID号(1-6)。使用switch语句查找与ID号对应的针号(范围为0-13)。纯粹出于娱乐目的,我想知道是否switch可以使用算术/其他函数规避这些ES,以使将来的代码维护人员感到恐惧。 挑战 提供以ID号(整数)为参数并返回6个LED和/或6个按钮的引脚号(整数)的功能,而无需使用条件语句(no if,no switch和no三元)。 LED的返回值: ID Pin 1 3 2 5 3 6 4 9 5 10 6 11 返回按钮的值: ID Pin 1 2 2 4 3 7 4 8 5 12 6 13 奖金挑战 提供一个具有ID号(整数)和第二个参数(任何类型)的单一功能,该参数指示是否请求LED或按钮引脚,并返回相应的引脚(整数)。 规则 这不是特定于Arduino的挑战。使用任何语言,做任何你想要的。 编辑:在steveverril的建议下,这现在是高尔夫挑战赛。 祝好运! (如果您仍在阅读:虽然按编程标准显然是荒谬的和任意的,但映射是基于Arduino Micro的引脚排列的。引脚0和1保留用于串行通信,LED分配给6个编号最小的PWM功能引脚,按钮将分配给其余的引脚)

18
相似形状
相似的数字 两个矩形相似,如果他们双方的比例是相同的。 考虑这两个矩形;一个高5行,宽11个字符的矩形: =========== =========== =========== =========== =========== 以及一个高10行,宽22个字符的矩形: ====================== ====================== ====================== ====================== ====================== ====================== ====================== ====================== ====================== ====================== 这些形状相似,因为它们的边的比例相同。正式地说(hhh是最短的一面,www是最长的一面): h1w1=h2w2h1w1=h2w2 \frac{h_1}{w_1} = \frac{h_2}{w_2} 您也可以这样做: h1h2=w1w2h1h2=w1w2 \frac{h_1}{h_2} = \frac{w_1}{w_2} 挑战 编写一个程序或函数,该程序或函数采用一个“主要”矩形和一些“其他”矩形,并打印“其他”中的哪些类似于“主要”。 输入 形状和形状列表。每个形状由2个非零正整数组成,分别表示矩形的宽度和高度。例如,这: (4,2), (3,9) 表示两个矩形,分别是4x2和3x9。但是,您可能希望输入的确切格式。 输出 “其他”形状的索引类似于“主要”形状。您可以选择索引是基于0还是基于1,以及输出的确切格式和顺序。 样例程序 在Python中: main = eval(raw_input()) # The main rectangle. rects = eval(raw_input()) …

2
帮我拖延我的电脑维修!
真正的(悲惨的)灵感为您带来了挑战。最近,键盘上的数字行有些零星。按键1-9有时可以工作-但其他时候则无济于事。作为一个狂热的程序员,这太可怕了!(看到那个感叹号吗?这就是您知道它们现在正在起作用的方式。)我不仅经常需要数字本身,而且还需要符号!@#$%^&*(也是完全无效的一半!作为一名C程序员,我对解决这个问题更感兴趣,而不是花时间在忙于编写代码以修复笔记本电脑的忙碌工作上。在过去的几周中,慢慢地,我的代码中的所有数字文字都被替换为十六进制,这样我就不必四处寻找要复制和粘贴的数字。但是,如果没有数字键,有些数字很难输入1-9。例如,数字1不能这么简单地以十六进制形式编写,因此1我将代码中的s 替换为0xF - 0xE。受影响的唯一键1-9,所以我保持充分利用像符号+,-和/。但是,我不能使用乘法或括号,因为*并且(经常被打破。这导致了您的挑战。 输入项 一个整数,n以stdin或您的语言等效。如果需要,该整数可以在换行符或其他空白字符之前或之后。或者,您可以通过命令行参数接收输入。 您的程序应正确响应负输入,并且至少可以处理32位带符号整数。 输出量 您的程序应以某种可观察的形式输出最短的(以非空白字符表示)可能的方式,以n一个或多个十六进制值的和,差或除的形式写入数字。解决此问题的方法不止一种,并且没有要求您偏爱任何等长输出的要求。 输出应采用以下形式:A % A % A...where A是一个0x仅包含数字的十六进制值A-F a-f,并且%是符号之一-+/。让我们/描述整数除法,而不是浮点数。 (请注意n,按照惯例,当首先评估从左到右的除法,然后是从左到右的加法和减法时,输出结果应该是。) 测试用例 输入输出 1 0xF - 0xE(或0xF-0xE或0xB-0xA或0xd - 0xc或0xF/0xF) 15 0xF 255 0xFF 30 0xF + 0xF 计分和规则 这是代码高尔夫球。您的初步得分是源文件中的字节数。 您不得使用来源中的任何数字1-9。 您可以!@#$%^&*(在来源中使用符号,但是每个符号的得分都会受到+20的惩罚。 您的程序可以由带有n参数的函数代替,只要该函数产生某种形式的可读输出即可。函数的返回值不计为输出。 不允许出现标准漏洞。 最低分获胜!祝好运! 我是否在格式化/查询/明晰度方面搞砸了?让我知道!这是我第一次提交该网站!

9
格式化类似Lisp的语法
背景 (根据真实的,令人费解的故事) 在我的时间里,我经常玩Lisp和类似语言。我已经与他们一起书写,运行它们,对其进行了解释,对其进行了设计,并让机器为我为它们编写了……如果有什么困扰着我,那就是Lisp不符合我的特定格式样式。 不幸的是,每当复制和粘贴代码时,一些文本编辑器(cough XCode cough)都会剥离我漂亮的制表符和空格。 (A (B (C) (D)) (E)) (哪里ABCDE有任意函数) 一些文本编辑器将此可爱的代码分割到了下面: (A (B (C) (D)) (E)) 真是一团糟!这是不可读的! 帮帮我吗? 挑战 您在此挑战中的目标是采用一系列功能,这些功能以换行符分隔,格式如下所述,并返回更加美观的布局,突出可读性和优雅性。 输入 我们将Farity N参数的函数定义为类似于以下内容的构造: (F (G1 ...) (G2 ...) (G3 ...) ... (GN ...)) G1, G2, ..., GN自身的功能在哪里?一个arity 0函数A很简单(A),而arity 2函数B的形式是(B (...) (...)) 您的代码应在每个函数的前导括号之前(第一个函数除外)以一个换行符作为一系列函数来输入输入。上面的示例是有效输入。 您可以假设: 括号是平衡的。 一个函数缩进的次数永远不会超过250次。 每个函数都用括号括起来: () 函数名称将仅包含可打印的ASCII字符。 …

22
精确计算(3 + sqrt(5))^ n
今天,您的目标是找到给定非负整数n的整数a和b,使得: 您应该编写一个带有参数n并以您选择的格式输出a和b的程序或函数。 有标准漏洞。另外,您打算自己使用基本算术来实现上述问题。因此,您可能不使用内置的精确代数功能,有理数或实现非平凡数学构造的函数(例如Lucas序列)。 以字节为单位的最短代码获胜。 输入/输出示例: 0→1,0 1→3,1 2→14,6 3→72 32 4→376,168 5→1968,880 6→10304,4608 7→53952,24128 8→282496,126336 9→1479168,661504

3
放置卡尔卡松瓷砖
棋盘游戏 在棋盘游戏“ Carcassonne ”中,玩家通过匹配边缘来放置瓷砖,并通过创建较大的连续地形获得最高分。以下是(大致)游戏中包含的图块的类型和数量: #01 x4 #02 x5 #03 x8 #04 x2 #05 x9 #06 x4 #07 x1 #08 x3 #09 x3 #10 x3 #11 x4 #12 x5 #13 x3 #14 x3 #15 x2 #16 x5 #17 x5 #18 x2 #19 x3 #20 x1 #21 x5 #22 x2 #23 x1 …

1
你能听到我吗?
背景 您是软件帝国的有钱人。您的时间值得很多金钱。因此,您必须始终以最有效的路线行驶。但是,作为主管,您会花费大量时间参与重要的电话通话。绝不要打断电话,这是至关重要的,因此您绝不能穿越没有电池服务的区域! 挑战 您将得到一个三元组列表,每个元组代表一个蜂窝塔的位置和功能。作为示例,[50, 25, 16]将代表位于<x,y> = <50, 25>其周围的半径为16的圆的蜂窝塔。请牢记此清单,您必须以最短的距离从起始位置<0, 0>到达目的地的目的地<511, 511>,而不会丢失电池服务。这是代码高尔夫球,所以最短的代码获胜! 输入输出 您可以自由地将输入操作为易于阅读的形式,例如在文件中,或者使用STDIN通过使用STDIN的嵌套数组eval等。您可以对输入进行硬编码,只要您的代码可用于其他输入即可:好。用于硬编码输入的确切字符将不计算在内,但变量名称和赋值字符将被计算在内。您不应该假设输入是按任何特定顺序排列的,也不应该假设每个基站都与问题有关。如果您有任何疑问,请发表评论,我会尽力澄清。 输出将是一个坐标列表,标记点,这些点在按顺序连接时将形成出口的路径。精度只需要四舍五入到最接近的整数,如果您的输出示例比我的输出示例低1-2个单位,那就很好。我在下面提供了图片以澄清这一点。 祝你好运! 例子 input: [ 32, 42, 64] [112, 99, 59] [141, 171, 34] [157, 191, 28] [177, 187, 35] [244, 168, 57] [289, 119, 20] [299, 112, 27] [354, 59, 58] [402, 98, 23] [429, 96, …

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.