编程拼图和代码高尔夫

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

2
固定牙套等
你的任务,你应该选择接受它,是要加的最低括号,括号,括号和数量做一个给定的字符串(只包含括号,括号,括号和)有正确的括号匹配。必须通过使成对的花括号之间具有最大距离来断开添加的符号的关系。您必须仅返回一个符合这两个规则的正确答案;如果存在进一步的关系,则可以按照您认为合适的任何方式断开它们。 例子: input output // Empty String is a legal input [ [] // Boring example [()] [()] // Do nothing if there's nothing to be done ({{ ({{}}) // NOT (){}{} (0 + 0 + 0). Maximum distance is 4 + 2 + 0, ({{}}) [([{])]} {[([{}])]} // NOT …

8
整数三角形和整数中位数
考虑一个三角形ABC,其中每边的长度均为整数(整数三角形)。限定一个中位的ABC是从一个顶点到相对的边的中点的线段。在下图中,红线段代表中位数。请注意,任何给定的三角形都有三个中值。 令n为某个正整数。多少个边长小于或等于n的非退化整数三角形至少有一个整数中位数? 挑战 编写一个程序,以计算给定最大边长n时具有至少一个整数中位数的整数三角形的数量。边长的顺序无关紧要,即<6,6,5>表示与<5,6,6>相同的三角形,并且应仅计数一次。排除退化的三角形,例如<1,2,3>。 计分 您的程序可以在您的机器上在60秒内为您的程序生成最大三角形数的n。得分最高的程序将获胜。我的机器是Sony Vaio SVF14A16CLB,Intel Core i5、8GB RAM。 例子 令T(N)为输入N的程序。 T(1) = 0 T(6) = 1 T(20) = 27 T(22) = 34 请注意,T(1)= T(2)= T(3)= T(4)= T(5)= 0,因为没有积分边的组合会产生积分中位数。但是,一旦达到6,我们可以看到三角形<5,5,6>的中位数之一为4,因此T(6)= 1。 还要注意,T(22)是出现重复计数的第一个值:三角形<16,18,22>的中位数为13和17(以及2sqrt(85))。 计算中位数 三角形的中位数可以通过以下公式计算: Current top score: Sp3000 - 7000 points - C

7
我应该把餐厅放在哪里?
您是一家餐厅的所有者。您将在笛卡尔的一个新区域中打开,那里只有一条主要道路,称为y轴。您要放置餐厅,以使与餐厅和该区域中每个房屋的总距离最小化。 输入: 输入将是 n, the number of houses house1 house2 house3 ... houseN 其中每个房子都是形式上的坐标x y。每个单位代表一公里。 您可以将输入作为字符串,也可以提供一个函数,将选择的任何格式的输入作为其参数。 输出:您餐厅的y坐标(请记住,它将位于y轴上)。实际上,它位于路边,但差异可以忽略不计。 从本质上讲,如果第n个房子是h_n和D是距离函数,那么你要找到k这样D(h_0, (0, k)) + D(h_1, (0, k)) + D(h_2, (0, k)) + ... + D(h_n, (0, k))被最小化。 请注意,距离的计算方式就像客户从他们的房屋到餐厅的直线一样。那是(x, y)到餐厅的距离sqrt(x^2 + (y - k)^2)。 输出应精确到至少2个小数位。 输出可以打印为字符串,也可以从函数返回。 输入/输出示例: Input: 2 5.7 3.2 8.9 8.1 Output: …

6
打印字符串而不共享字符
编辑:允许重复使用空格。 您的任务是用相同的语言编写n个程序(或函数或函数体,而不使用参数或函数名)。第k个程序应以小写标准英语(带有可选的尾随换行符)输出(基数)k。因此,第一个程序应输出one,第二个程序应输出,two依此类推twenty-one。对于具有两个部分的数字,应使用连字符()隔开。 但是您提交的程序中没有两个程序可以共享非空白字符或做有用工作的空白字符。例如,如果你的第一个程序就是"one",那么没有" o n和e可以再次在其他程序中使用。 您可以在两个或多个程序中使用空格字符(空格,换行符和制表符),前提是它们仅用作分隔符或缩进,而不自己做任何事情。因此,您不能以Whitespace语言重用它们,也不能在多个程序中以字符串形式使用它们。 您只能使用可打印的ASCII字符,制表符和换行符(包括CR和LF)。每个程序必须至少包含1个字符。 您的分数是1 /程序大小^ 1.5的总和。最高分获胜。您可以使用以下堆栈片段(或CJam代码)来计算分数: function updatescore(a){var l=a.value.split("\n"),s=0;for(var i=0;i<l.length;i++){var t=l[i].length;t-=t&&l[i][t-1]=="\r";if(t)s+=Math.pow(t,-1.5);}document.getElementById('result').textContent=s;} <textarea id="input" placeholder="Put your code here, one per line." style="width:100%;height:150px;box-sizing:border-box" oninput="updatescore(this)" onpropertychange="updatescore(this)"></textarea><div>Your score: <span id="result">0</span></div> 运行代码段隐藏结果展开摘要

4
订购40条
我们有40条相同宽度但不同高度的棍棒。有多少种布置可以将它们彼此相邻放置,以便当我们从右边看时看到10条,而当我们从左边看时又看到10条? 例如,这样的排序是: 黑棒是隐藏的,红色棒是从左看时可以看到的棒,蓝色棒是从右眼看时可以看到的棒,紫色的棒(即最长的棒)是可以看到的棒从双方。 作为测试用例: 如果我们有3个棍棒,那么从左边看2个,从右边看2个的订购数量是2 如果我们有5个棍棒,那么从左边看3个,从右边看3个的订购数量是6 如果我们有10个棍棒,那么从左边看4个从右边看4个的订购数量是90720

14
CodeGolf-忽略噪音#1
使用说明 Barry 并不是一个很好的后端开发人员,负责一个小型API,该API应该为您提供有关在客户商店中进行购买的信息。但是,他做得不好,您的老板告诉您在客户端进行修复。理想情况下,你应该接受逗号分隔值,如927,2,45,90对应于像item_id,item_amount,unit_price,total 在第一个难题中,我们只关心item_id,item_amount但是我们需要其他领域来介绍问题。巴里有时把事情混在一起,并返回噪声输出的一部分,他也得到了顺序不对,返回noise,noise,unit_price,total,item_id,item_amount。 你的任务 无论Barry是否正确返回它们,您都需要在地图(或类似结构)中存储对,item_id并item_amount在换行中以尽可能少的字符数打印每个元素。(存储不是强制性的,我们只关心输出) 样本输入(混合的正确格式和混乱格式) 103,2,50,100 106,1,900,900 459,40,150,300,67,2 4,20,30,6000 换句话说,输入将是&a,b,x,x或x,x,x,x,a,b我们在乎的地方。您需要提供代码,假设我们在csv的所有行中都有一个名为(或任何其他名称)的变量。abG 样品输出 103,2 106,1 67,2 //This one was messy 4,20 公差 答案有一定的容忍度。格式相似但遵循正确值的答案也将被接受。格式,如[a,b],(a,b)或者{a,b}是有效的,但是a,b是优选的。 尽管第一个难题的解决方法既简单又快速,但它的接受程度参差不齐,但我也觉得有些人也喜欢它。所以我现在要继续做高尔夫

6
实时字符串匹配
任务 任务是打入您选择的实时精确字符串匹配算法。 输入值 标准输入上提供两行文本,并用新行分隔。第一行包含“模式”,将只是从字母中提取的ASCII字符串a-z。 第二行包含较长的“文本”,也将只是从字母中提取的ASCII字符串a-z。 输出量 精确匹配发生位置的索引列表。您应该输出发生的每个比赛的开始位置。 规格 您的算法可以花费线性时间对模式进行预处理。然后,它必须从左到右读取文本,并为文本中的每个单个字符花费恒定的时间,并在出现任何新匹配项时立即输出。匹配当然可以彼此重叠。 算法 有许多实时精确匹配算法。例如,在KMP Wiki上提到了一个。您可以使用任意一个,但必须始终输出正确的答案。 我将保留每个语言领导者的表格,以便那些喜欢流行语言的人也能以自己的方式获胜。请说明您实施了哪种算法。 即时的 对于实时的含义似乎有很多困惑。这不仅仅是线性时间。因此,标准的KMP 不是实时的。问题中的链接明确指向KMP Wiki页面上有关KMP实时变体的部分。Boyer-Moore-Galil也不是实时的。这个理论性的问题/答案讨论了这个问题,或者只是谷歌“实时精确匹配”或类似的条款。

4
移位XORyption
编写一个程序或函数(或一组程序/函数),以给定以下规范来加密和解密数据: 加密 通过将每个字节彼此异或来对输入进行XOR哈希计算。 通过此哈希对输入的每个字节进行XOR。 将结果左移四位。 用XOR哈希的前四位填充左侧。 在XOR哈希的最后四位填充右侧。 例 给定的输入:"G0lf"(0x47306C66) 计算XOR哈希: 0x47 ^ 0x30 ^ 0x6C ^ 0x66 = 0x7D 通过哈希对每个字节进行XOR: 0x3A4D111B 预期结果(后移和垫): ()"s¤Ñ\x11½"0x73A4D111BD 规则 只要输入/输出是实际的字节,您的程序/函数就可以在您选择的高尔夫语言(字符串,字节数组等)中有意义的任何类型的输入/输出。例如,您可能不输出十六进制字符串。 加密和解密可以分为单独的程序(分数将是它们的总大小)或单个程序。单个方法可以采用参数进行加密还是解密。 预计加密输入至少为1个字节。 解密输入至少应为2个字节。 不可打印字节不需要在输出中转义。

19
反句
挑战的目标是接收输入并输出该输入,但句子顺序相反。输入示例: Hello friend. What are you doing? I bet it is something I want to do too! 示例输出: I bet it is something I want to do too! What are you doing? Hello friend. 从示例中可以看出,您的程序必须处理问号,感叹号和句点。您可以假设每个句子都有标点符号,而下一个句子之前没有空格。只要可读即可,尾随空格/换行符就可以。最短的代码获胜。 祝好运! 编辑:您可以假定句子中没有引号或括号,但是如果您使代码能够处理这两个词,则将得到-5字节 parens / quotes的示例输出: "Hello, " she said. (I didn't know what she was …
15 code-golf 

2
建立老鼠迷宫的程序
您已被聘为研究助理,并被要求创建一个小程序来构建老鼠迷宫。老鼠盒始终为62x22,并具有老鼠的入口(a)和出口(A),如下所示(输入1): #######a###################################################### # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #################################################A############ 您的程序必须在方框中填充块(#),为老鼠留下路径,如下所示(输出1): #######a###################################################### ####### ###################################################### ####### ###################################################### ####### …
15 code-golf  grid  maze 


2
我如何在生活中获得更多的Klotski?
我真的很喜欢滑动拼图,但是最近,我没有时间去做。因此,我需要一个程序来解决滑动砖块难题,特别是Klotski难题。 您的输入将采用以下格式: ####### #001gg# ##.222# .###### 其中#代表墙壁,.代表开放区域,g代表目标,相邻数字代表不同的方块。您可以假设: 不会超过10个街区 不会有两个号码相同的方块 所有街区将被围墙包围 网格是矩形 该0块是大到足以覆盖所有的目标方格。 有一个有效的解决方案 您需要返回一系列移动步骤,以放置0方块,使其覆盖所有目标方格。方块不能穿过墙壁或其他方块。对于上述难题,适当的顺序是 2L,1R,1R,1D,0R,0R,0R while代表将2方块向左移动1方块,1方块向右移动2方块(在球门顶部),然后向下移动1方块,再0向右移动3方块。 实际上,有几个序列可以解决上述问题,并且产生其中的任何一个都是可以接受的。您的解决方案应该是最佳的,这意味着它应该产生一个序列,以尽可能少的步骤解决难题。 序列应如上打印,但可以用逗号,换行符或空格分隔。我不在乎是否有逗号或空格。您应该在合理的时间内产生输出(在以下难题中最长为120秒)。 难题1: ..####.. ..#00#.. ###00### #......# #.1122.# ##3124## .#3344#. .##55##. ..#gg#.. ..####.. 难题2: ###### #1002# #1002# #3445# #3675# #8gg9# ###### 难题3: .####. ##1g## #22g3# #4255# #4.56# #.006# #7008# ###### 难题4: .####. ##00## #.00g# …

5
用小于运算符表示所有16个布尔函数
对于两个二进制变量A和B,有16个不同的布尔函数: A B | F0 | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | F13 | F14 | F15 ----------------------------------------------------------------------------------------- 0 0 | 0 | 0 | 0 | 0 | 0 | 0 …

12
生成SUDSI序列
所述SUDSI序列(ス米,d。差分,s ^ WAP,我 ncrement)是一个奇怪的整数序列,似乎表现出相当混乱行为。可以如下生成: 令S为自然数的无限列表:1 2 3 4 5 6 ...。让小号我表示一个索引的我的第i个元素小号。因此,最初, S 1为1,S 2为2,依此类推(没有S 0)。 从S 1和S 2开始 ... 计算它们的总和: sum = S1 + S2 计算它们的绝对差(较大的值减去较小的值): diff = |S1 - S2| 交换S中两个值的总和和差值:swap(Ssum, Sdiff) 递增您正在使用的S的索引。因此,下一次您将计算S 2和S 3的和与差,之后的时间将是S 3和S 4,依此类推。 无限重复此过程。 这是应用此过程时S的前几个阶段。方括号[]包围将要求和和求差的两个值。 原始S: [1 2] 3 4 5 6 7 8 9 …

4
ASCII冰淇淋
编写一个程序或函数,该程序或函数采用正整数N,并打印或返回N×N ASCII艺术字串,其上半部分是由组成的半圆(,下半部分是由组成的下指三角形V,并且用作填充的空格。 换句话说,制作一个ASCII冰淇淋蛋筒:(N = 17的输出) ((((( ((((((((( ((((((((((((( ((((((((((((( ((((((((((((((( ((((((((((((((( ((((((((((((((((( ((((((((((((((((( VVVVVVVVVVVVVVVVV VVVVVVVVVVVVVVV VVVVVVVVVVVVV VVVVVVVVVVV VVVVVVVVV VVVVVVV VVVVV VVV V 例子 这是N = 1至5的输出。请注意,对于奇数N,三角形始终必须是较大的一半。 V (( VV ((( VVV V (( (((( VVVV VV ((( ((((( VVVVV VVV V 这是N = 101 pastebin。 这是一个非公开的Python 3参考实现: N = int(input()) …

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.