Questions tagged «code-golf»

Code-golf是在最小的源代码字节中解决特定问题的竞赛。

8
寻找最大路径
给定一个正数的平方,自然数写一个程序,找到一条水平和垂直路径,沿着它们的数字总和最大。甲水平路径从第一列到最后去,并具有通过一个在每个步骤中,以增加其列位置。甲垂直路径从第一行进行到最后的,并具有由一个在每个步骤中,以增加其行位置。此外,水平路径中的行位置可以保持相同或沿任一方向改变一个,对于垂直路径也是如此。 为了说明这一点,以下可能是有效的路径: 以下路径将无效,因为它会向后退(并在某些地方保留在同一行): 以下路径同样无效,因为它一步一步将行位置更改了多个: 注意:解决方案应在可接受的时间内运行。 输入值 在标准输入上给出n行输入,每行输入n个以空格分隔的正整数。2≤ Ñ ≤40的每一行是由一个换行符终止。数字足够小,以至于最大和适合32位有符号整数。 输出量 水平和垂直路径的最大和(按此顺序),以单个空格分隔。 样品输入1 1 2 1 2 样品输出1 3 4 样品输入2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 1 1 1 1 1 1 1 1 …
12 code-golf 

8
奎因挑战我
挑战 在此任务中,您必须编写一个程序,将输入整数N (-1e9 <= N <0 && 0 <N <= + 1e9),然后计算T =(abs(N)%M + 1),如果N为正,然后从源头开始输出第T个字符,否则从源末尾输出第T个字符。 M是您的源大小(以字节为单位)。 示例:如果您的来源是:abcd efg/hi 输入: 2 输出: c 输入: -3 输出: g 输入: -9249678 输出: b 输入: -11 输出: i 约束条件 不要使用任何FILE操作 您可以使用任何选择的语言 尽量避免甚至不要使用1字节提交,因为它会破坏所有乐趣。 最短的解决方案获胜! 编辑:问题陈述已被修改,以便可以使用随机测试数据(和所有解决方案的相同数据)来判断解决方案,因此请相应地更新您的解决方案,对于给您带来的不便,我们深表歉意。
12 code-golf  quine 

9
分叉阶乘
这种高尔夫运动需要将阶乘计算分配到多个线程或多个进程中。 某些语言比其他语言更易于协调,因此与lang无关。提供了示例化的示例代码,但是您应该开发自己的算法。 比赛的目的是看谁能拿出最短的(以字节为单位,而不是秒)多核阶乘算法来计算N!根据比赛结束时的选票来衡量。应该有一个多核优势,因此我们要求它应在N〜10,000下工作。如果作者未能提供有效的解释说明选民如何在处理器/核心之间分配工作,则选民应投反对票,并基于高尔夫的简洁性投票。 出于好奇,请发布一些性能数字。在某些时候,可能会在性能与高尔夫得分之间进行权衡,只要符合要求,就选择高尔夫。我很想知道什么时候发生。 您可以使用通常可用的单核大整数库。例如,perl通常与bigint一起安装。但是,请注意,简单地调用系统提供的阶乘函数通常不会将工作分散在多个内核上。 您必须从STDIN或ARGV接受输入N,并向STDOUT输出N!的值。您可以选择使用第二个输入参数来为程序提供处理器/内核数,这样它就不会执行下面将要看到的事情:-)或者您可以为可用的2、4进行显式设计。 我将在下面发布自己的奇数球perl示例,该示例先前已提交给Stack Overflow下的使用不同语言的阶乘算法。这不是高尔夫。提交了许多其他示例,其中许多是高尔夫,但许多不是。由于采用类似共享的许可方式,因此可以随意使用以上链接中任何示例中的代码作为起点。 在我的示例中,性能由于许多原因而表现欠佳:它使用了太多的进程,太多的字符串/ bigint转换。正如我所说的,这是一个故意的奇怪例子。它将计算5000!在这里在4核计算机上不到10秒。但是,一个更明显的两个衬里for / next循环可以做5000个!在3.6s的四个处理器之一上。 您绝对必须做得比这更好: #!/usr/bin/perl -w use strict; use bigint; die "usage: f.perl N (outputs N!)" unless ($ARGV[0] > 1); print STDOUT &main::rangeProduct(1,$ARGV[0])."\n"; sub main::rangeProduct { my($l, $h) = @_; return $l if ($l==$h); return $l*$h if ($l==($h-1)); # arghhh - …
12 code-golf 

5
离解出版社
http://en.wikipedia.org/wiki/Dissociated_press Dissociated Press是一种从现有文本生成随机文本的算法。 该算法从在文本中打印任何N个连续的单词(或字母)开始。然后在每个步骤中,它搜索已经打印的最后N个单词(或字母)的原始文本中是否有随机出现,然后打印下一个单词或字母。 以功能或整个程序的形式实施Dissociated Press。最短的代码获胜。不要使用命令行或emacs脚本来调用原始的Dissociated Press程序。不要使用任何外部库。

13
进行数字回文
编写一个以数字作为参数的函数,并通过附加最小位数来使其成为回文。该数字最多为100位数字。 Sample Inputs 12 122 232 2323 1012121 Sample Outputs 121 1221 232 23232 101212101

14
完成对称图
您将获得四分之一的地图,该地图在x轴和y轴上对称,作为输入。该程序应打印完整的地图。 该地图可以包含以下字符:-+/\|.,并且应该按预期的方式将其打开。输入数据始终为矩形且较小。 例 $ cat in +--- |./. |/.. $ ./solution < in +------+ |./..\.| |/....\| |\..../| |.\../.| +------+ 最短的代码获胜。
12 code-golf  string 

3
编写JSON验证器
编写一个确定其输入是否为有效JSON的程序。 输入: ASCII文本:[\x00-\x7F]* 注意:如果ASCII有问题,请随时使用其他编码,但请在帖子中注明。 输出: Valid或Invalid。尾随换行符可以省略。 例: $ echo '{"key": "value"}' | ./json-validate Valid $ echo '{key: "value"}' | ./json-validate Invalid 规则: 不要使用JSON解析库。 允许使用部分正确的解决方案,但对此不以为然。 发布您的测试套件分数(见下文)。 在最短的正确的解决方案获胜。 请在您的程序上运行json-validate-test-suite.sh,然后发布分数。例: $ ./json-validate-test-suite.sh ./buggy-prog fail: should be invalid: [ 0.1e ] fail: should be invalid: [ 0.1e+-1 ] fail: should be invalid: [ 0.1e-+1 …
12 code-golf 

7
你下了多少雪?
我很抱歉。我们在内部打高尔夫球的过程中玩得很开心,但是需要澄清一些电子邮件,所以我希望我能第一时间抓到大部分。 问题 给定一个“模拟的”降雪快照(作为函数/方法的字符串,stdin或参数),请报告4个值:最小深度,最大深度,平均深度和持续时间。 这是一个格式化的示例来说明输入: * * ** ** * *** ** * * * -------- “ *”是一片雪花,“-”是地面。想象一下所有落在地上的“雪花”。这是最终的“快照”: * * ** * ** ******** -------- 您需要报告以下内容: 最小深度-计算最短的“桩”(在上面的示例中为1) 最大深度-计算最高的“桩”(在上面的示例中为4) 平均深度-所有“桩”的平均数量(在上面的示例中为1.9-舍入为十分之一) 持续时间-(每个“下降” = 1秒)-从第一个快照到最后一个快照的时间(3秒,在上面的示例中) 另一个例子供参考: * * * * * -------- 最终快照: * * *** -------- 输入 起始的“快照”将具有8个“行”,8个“列”,并用管道定界(管道将行分隔开)。例如(不包括引号): “ | | | | …
12 code-golf 

1
图中的最短路径
编写程序以绘制图形(从标准输入或文件中选择),并在图形中找到最短路径。 图形使用以下格式指定: A---S F--T | / \ | | / 5 0 |/ \| D----3--E A-Z: nodes in the graph -|/\: edges in the graph 0-9: weights on the edges <space>: all the holes 所有边缘都是无方向的,并沿8个基本方向之一(即无弯曲)放置。边缘可以选择包含0到9的权重。该权重不会在将边缘连接到节点的最后一个符号上(即,边缘必须至少具有3个符号才能包含权重)。未加权边缘的默认权重为1。 您的代码应计算节点之间的最短路径S,T并打印长度和路径,如下所示: 5:SDEFT 最短的正确程序获胜。

6
计算面积。
给出曲线p(x)= a 0 + a 1 * x + a 2 * x 2 + ...,y = 0线,x = 0线和x = C线之间的面积的最小代码 (即: ) 对于x <C,您可以假设p(x)> = 0(如果代码适用于p(x)的负值,则为积分)。 输入值 C,a 0,a 1,... 输出量 实数-面积 范例1: input: 2, 0, 1 output: 2.0 示例2: input: 3.0, 0, 0.0, 2 output: 18 更新: …
12 code-golf 

6
修正口吃的话
口吃是我们许多人可能已经经历或至少看到的问题。尽管大多数著名的语音识别软件都存在口吃的严重问题,但让我们想象一下一种软件,该软件可以理解口吃但无法修复口吃,只能照原样编写。 用这样的软件编写的示例文字可能是这样的:“请小心”。在此示例中,“小心”是原始单词,“ ca ca”是断断续续的单词。 挑战 编写一个程序或函数,通过保留输入中的原始单词,通过从输入中删除它们来修正出现的单词。例如,“请小心”的固定版本将是“请小心”。 这是代码高尔夫,每种语言的最短答案胜出! 什么是口吃的单词? 口吃有许多不同的变化。但是为了简化此挑战,我们将其限制为以下规则: 口吃的单词可能是原始单词的未完成部分或全部。所谓“未完成的部分”,是指原始单词应完全以口吃单词开头。例如“OPE”和“开放”既可以是一个结巴字的“开放”,但“笔”不能因为一个“开放”不是以“笔”。 口吃的单词必须至少包含一个“ aeiou”元音。例如,“ star”可以是“ start”的口吃词,因为它包含“ a”,但是“ st”不能是口吃的词,因为它不包含任何上述元音。 口吃的单词只能出现在原始单词之前,应重复至少两次才能有效(原始单词不计入重复中)。例如,“ oo open”具有口吃的单词,但没有“ o open o”,因为原始单词之后的“ o”不计算在内,原始单词之前的“ o”没有重复至少两次。“ go go go go go go go”在原始单词之前有五个重复的口吃单词,并且有效。 一组重复的口吃单词不能包含混合形式,并且单词应该彼此完全相同。例如,“ op o op open”不算作口吃的单词。另一方面,“ o op op open”具有口吃单词,因为在这里第一个“ o”被视为一个完全不同的单词,而两个“ op”被视为“ open”的口吃单词。 如果有多个有效的重复设置的紧接单词,则仅保留最后一个原始单词。例如,在“ ooo op op op open”中,“ oo …
12 code-golf  string 

9
邮递员送达
我刚刚获得了邮递员的工作,我需要您的帮助才能保留它。我必须先订购大量邮件,然后再出去递送。 街道严格按顺序编号,从街道开始处的1开始,然后继续以不跳过任何数字的方式一直到结尾,左侧为奇数,右侧为偶数。加上房屋是在以后添加的,因此我们可能还会在公民编号后附加字母。 箱子中包含城市的所有邮件,因此我只能选择街道上的邮件。 我需要您的帮助才能更快地订购邮件。我要你写的是编写函数或完整程序: -街道名称。 -按照我的路线订购的公民编号列表。 -地址列表(代表邮件箱)。 并输出仅包含我街道地址的地址列表,并按照公民编号列表进行排序。 地址的格式为: Person Name/n CivicN Street Name 其中CivicN是“/”可以遵循由一个数字和一个大写字母(10 / B)。如果愿意,可以使用小写字母。 如果街道名称重叠,则将其视为不同的街道: Church Road != Saint Lorenz Church Road 为了简单起见,我们忽略了其余地址(假设每个邮件都相同) 信件必须快速送达,以便赢得最短的答案。 例: 版面: 1 1/B 3 5 7 9 11 13 ============================== 2 4 4/B 6 输入: "Tea Avenue" ["1","1/B","2","4","3","5","7","4/B","6","9","11","13"] ["Mrs. Pie O. Pinky\n6 …
12 code-golf  string 

2
用四色的三聚氰胺平铺棋盘
任务: 考虑一下问题:“给一个棋盘一个正方形不见了的棋子,切成21个L-三聚氰胺”。有一个众所周知的建设性证明,即可以对任何大小为2的幂的方形棋盘进行此操作。它的工作原理是将棋盘分割成一个较小的棋盘,棋盘上有一个孔和一个大的Triomino,然后观察该Triomino可以递归地切成四个Triomino。 在此任务中,您需要将8x8棋盘切成L形的三角骨,然后用四种颜色着色,以使两个相邻的三角骨都不具有相同的颜色。 规格: 您输入的是孔的位置,以一对整数形式给出。您可以选择哪一个是列索引,哪个是行索引。您可以选择是从0还是从1开始,然后从哪个角开始增加。您可能需要A..H作为第一个坐标,而不是0..7或1..8。您也可以接受按字典顺序打包成单个整数0..63或1..64(行主要或列主要,从左到右或从右到左,从上到下或从上到下)的两个坐标。您可以编写完整的程序或函数。 您可以将图块输出为ASCII,彩色ASCII或图形图元。如果选择ASCII输出,则可以选择任何四个可打印的ASCII字符来表示四种颜色。如果选择彩色ASCII,则可以选择任何四个可打印ASCII字符,或者仅选择一个空格以外的字符。孔必须用空格字符表示。如果您的角色之一是空格字符,则靠近该孔或棋chess边缘的三聚氰胺可能不是这种颜色。 如果选择彩色ASCII或图形输出,则可以从环境中可用的#000,#00F,#0F0,#0FF,#F00,#F0F,#FF0,#FFF中选择任意四种颜色。如果选择图形输出,则您的图形基元必须以至少32x32像素的正方形填充,并以不超过两个其他颜色的像素分隔。如果以上超出您的环境的屏幕分辨率,则将最小尺寸要求放宽到仍然适合屏幕的最大正方形尺寸。 您可以选择给定棋盘的任何有效平铺。您可以选择任意四种平铺颜色。您在所有输出中选择的四种颜色必须相同,但是并不需要在每个输出中使用每种颜色。 例子: 输入的可能输出= [0,0](左上角) #??##?? ##.?#..? ?..#??.# ??##.?## ##?..#?? #.??##.? ?..#?..# ??##??## 同一程序的另一个可能的输出(输入= [0,7]): ??#??#? ?##?##?? ..xx..xx .?x#.?x# ??##??## ..xx..xx .?x#.?x# ??##??## 对于输入“ D1”(注意非标准但允许的棋盘方向),也可能会产生不同的程序, AABBCCAA ACBACBAC CCAABBCC ABBAADD AABDABDC BBDDBBCC BABBACAA AABAACCA

20
咨询回答者
原文:https://james-iry.blogspot.co.at/2009/05/brief-incomplete-and-mostly-wrong.html Alain Colmerauer设计了逻辑编程语言Prolog。他的目标是创建一种与两岁的孩子一样聪明的编程语言。为了证明自己已经成功实现了目标,他提出了一个Prolog程序,该程序可以为所有查询提供足够的答案“否”。 问我任何事! ?- (他当然没有。)您的任务是创建一个比Alain Colmerauer的程序更智能的程序。不必在Prolog中。 细节 如果输入以结尾?并且至少有一个,,则从最后一个返回文本,,直到最后一个?。 否则,如果输入以?return 结尾No。 否则,返回Yes。 规则 没有标准漏洞。 输入/输出将通过我们的标准输入/输出方法进行。 您的程序必须至少查询1次。 您应该输出已处理的查询。 在示例中,Yes和No区分大小写。 您可以确保,如果输入包含a ?,则输入将只有一个?,并且它将始终是最后一个字符。 输入将始终是短语/句子。这句话/句话绝不会只包含字符,和?,如,,?和,?无效投入。(尽管提交仍然可以实现,因为在这种情况下,短语/句子是一个空字符串。) 此外,输入将永远不会以结尾,?。 如果紧接在末尾,或之前有空格?,则应将其包含在输出中。 例子 Hmm. -> Yes Alright, -> Yes Ask me anything! -> Yes Ask me a question, please! -> Yes Are you okay? -> No No? -> No …
12 code-golf  string 

5
这个金字塔拼图是否有独特的解决方案?
给定加法金字塔PPP,确定是否可以求解。加法金字塔由层组成,每层的个数比其下层的少。层iii表示为PiPiP_i。P1P1P_1是基础层,和Pi+1Pi+1P_{i+1}是顶上层PiPiP_i。P i的第jjj个数表示为P i ,j。P 我,1是最左边的数P 我,和P 我PiPiP_iPi,jPi,jP_{i,j}Pi,1Pi,1P_{i,1}PiPiP_iPi,j+1Pi,j+1P_{i,j+1}是Pi,jPi,jP_{i,j}右边的数字。你可能想象Pi+1,jPi+1,jP_{i+1,j}驻留在顶部Pi,jPi,jP_{i,j}和Pi,j+1Pi,j+1P_{i,j+1}在中间,故名“除了金字塔”。 ∀Pi,j,Pi,j∈N∗∀Pi,j,Pi,j∈N∗\forall P_{i,j},P_{i,j}\in\mathbb N^*,即,在金字塔的每个数字是非零正整数。 ∀i>1,Pi,j=Pi−1,j+Pi−1,j+1∀i>1,Pi,j=Pi−1,j+Pi−1,j+1\forall i>1,P_{i,j}=P_{i-1,j}+P_{i-1,j+1},即,不金字塔的基层上的每个数字是在它下面的两个数的总和。 如果P1P1P_1具有nnn个数,则PiPiP_i具有n−i+1n−i+1n-i+1个数,因此Pi,n−i+1Pi,n−i+1P_{i,n-i+1}是PiPiP_i的最右边的数。用更简单的术语来说,每一层都比其下一层少一个数字。 一个除了金字塔拼图 QQQ是加法金字塔去掉一些数字(替换为???)。它的解决方案是一个金字塔除了PPP,其中∀Qi,j≠?,Pi,j=Qi,j∀Qi,j≠?,Pi,j=Qi,j\forall Q_{i,j}\ne{?},P_{i,j}=Q_{i,j},也就是说,拼图中原来存在的数字保持不变。这种难题可能有多个解决方案。 给定您一个额外的金字塔难题,您的工作将确定它是否只有一个解决方案。 输入值 您可以采用以下任何形式获取输入,但要保持一致: 层数组。 层状数组,形状像金字塔,使用一致的非正整数值作为元素之间的分隔符(每次仅使用一次)以及左右填充。分隔符和填充必须相同。 具有一致的有效左右填充的图层阵列(您必须保持一致,并且在这种情况下不要混合左右填充)。 请注意,必须使用不是严格正整数的一致值来表示缺失的数字;此值不能用作填充。另外,您可以将已连接的图层(仍然可以将它们分开),并且排序可以从底部到顶部,也可以从顶部到底部。 输出量 两个一致的不同值之一,其中一个表示唯一溶液的存在,另一个表示不存在溶液或不止一种溶液的存在。 规则 Qi+1,j=Qi,j+Qi,j+1Qi+1,j=Qi,j+Qi,j+1Q_{i+1,j}=Q_{i,j}+Q_{i,j+1}总是为真,如果Qi,j,Qi,j+1,Qi+1,j∈N∗Qi,j,Qi,j+1,Qi+1,j∈N∗Q_{i,j},Q_{i,j+1},Q_{i+1,j}\in\mathbb N^*,即,输入如果知道所有三个数字,则保证不会在其他两个数字之上不包含一个数字,这些数字不是它们的总和。 ∃Qi,j,Qi,j≠?∃Qi,j,Qi,j≠?\exists Q_{i,j},Q_{i,j}\ne{?},即金字塔将包含至少一个已知数。 不要做这些事情。 这是代码高尔夫球,所以最短的答案会成功!但是,不要因为您的语言“太冗长”而阻止您发布解决方案。 测试用例 这些测试用例使用从上到下各层的数组,0表示???。 [[10], [0, 0], [0, 2, 0], [0, 0, 0, 1]] -> True [[32], [0, 0], [0, …

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.