Questions tagged «code-golf»

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

7
查找两个字符串之间的最小编辑距离
说明 两个字符串之间的编辑距离是将一个单词转换为另一个单词的最小可能插入,删除或替换次数的函数。 插入和删除的费用为1,替换的费用为2。 例如,之间的距离AB和A为1,因为删除费用1和唯一需要的编辑是删除B字符。 CAR和之间的距离FAR为2,因为替换的成本为2。另一种查看方式是一次删除和一次插入。 规则 给定两个输入字符串(但提供时使用您的语言很方便),您的程序必须找到两个字符串之间的最小编辑距离。 您可以假定字符串仅包含字符A-Z,并且少于100个字符且大于0个字符。 这是代码高尔夫,因此最短的解决方案将获胜。 样本测试用例 ISLANDER, SLANDER > 1 MART, KARMA > 5 KITTEN, SITTING > 5 INTENTION, EXECUTION > 8
13 code-golf  string 

12
实施一次性垫
背景 甲一次性垫是一种形式的加密已经被证明是不可能的,如果使用得当开裂。 通过采用纯文本(仅包含字母AZ)并生成相同长度的随机字符串(也仅包含字母)来执行加密。该字符串充当密钥。然后,将明文中的每个字符与密钥中的相应字符配对。密文计算如下:对于每对,两个字符都转换为数字(A = 0,B = 1,... Z = 25)。这两个数字以26为模加。该数字被转换回一个字符。 解密正好相反。将密文和密钥中的字符配对并转换为数字。然后从密文模26中减去密钥,并将结果转换回字符AZ。 挑战 您面临的挑战是编写尽可能短的程序,该程序既可以加密也可以解密一次性键盘。 在输入的第一行(到STDIN)上,将出现单词“ ENCRYPT”或单词“ DECRYPT”。 如果单词是加密的,那么下一行将是纯文本。您的程序应输出两行(到STDOUT),第一行是密钥,第二行是密文。 如果单词被解密,您的程序将再获得两行输入。第一行是密钥,第二行是密文。您的程序应输出一行,这将是已解密的纯文本。 明文,密文和密钥应始终由大写字母AZ组成。它们将始终为一行,并且不包含空格。 密钥应始终是随机的。在运行之间不应重复大部分操作,并且在文本中不应找到任何模式。 两个简单的例子: ENCRYPT HAPPYBIRTHDAY >ABKJAQLRJESMG >HBZYYRTICLVME DECRYPT ABKJAQLRJESMG HBZYYRTICLVME >HAPPYBIRTHDAY 该>代表线路输出,所以你不必打印符号作为输出。

17
滚动字幕
在进入混淆的Hello World之后,我认为共享基础代码可能会很有趣。但是为什么只显示代码,也让它成为高尔夫! 挑战 编写一个脚本,该脚本在终端上从右向左滚动字符串,并在左侧停留。 输入值 将字符串作为参数。 结果 将滚动字幕打印到STDOUT。最大宽度约50个字符。从显示0或1个字符开始。滚动时字母之间的一些空间。解决后停止(单词字符之间没有多余的空格)。慢速滚动,但不要太慢(每次迭代<1秒)。 例 使用arg运行脚本 'Hello World' H 后来 H e l l o W o 后来 H e l l o W o r l d 后来 Hell o W o r l d 最后 Hello World 对于运行示例,请尝试“挑战世界”挑战中的代码。最终,我将发布我的信息。目前在Perl中为202个字符。现在有一些竞争对手,我已经在答案中发布了我的答案。 优胜者 我不希望这些限制是绝对的,这就是为什么我对它们有些含糊的原因。遵循我原著精神的最短脚本将获胜。 笔记 该游戏假设xterm环境。如果证明另一个环境有用,则将仅比较类似的环境,并且可以为每个环境声明一个独立的获胜者。 附录(2012年4月25日) 为了解决一些新出现的问题,我正在做出裁决。您的字符数必须包含以下代码: …

2
照亮镜面房间
目标 在本次比赛中,您将获得一个随机的房间,里面放着一支蜡烛。目的是编写最短的程序(这是高尔夫球),通过用代替暗点来确定房间的哪些部分被蜡烛照亮@。该程序应占用STDIN的空间,并将输出打印到STDOUT。 输入/房间示例 +------+ | C | | +--+ | \ | +---------+ 蜡烛被表示用C,墙壁/反射镜被用来表示|,-,/,或\。墙壁本身就是镜子。房间的角落用表示+。 房间永远不会有对角墙,光线也永远不会逸出房间。 同样,一行上的第一个字符将始终是房间墙壁的一部分。每行上的绝对最后一个字符将是房间的另一面墙。这两个之间的任何字符都不会在房间外面。 光线与反射 蜡烛在八个基本方向上分别发出八束(类似激光的)光束:N,S,E,W,NE,SE,SW和NW。这些光线从镜子反射出来,如下所述: Old Direction of Travel | Mirror | New Direction N S E W NE SE SW NW / E W N S -- -- -- -- N S E W NE SE …

3
用三角求解三角形
是时候从高中挖掘旧的三角学笔记了!挑战在于解决不同三角形的未知边和角度。按照编码高尔夫的惯例,最小的有效编码将获胜。 这不是一个小问题。我在python中的参考实现目前只有838 837个字符,但是我敢肯定,您将可以使用更小的解决方案。 此外,如果您受困,那么Wikipedia上的这一部分将使您着手进行:Triangle:计算边和角。 输入值 下面的三角形显示了此挑战中使用的边和角度的名称。请注意,侧面是小写字母,而角度是大写字母。 输入以六个空格分隔的值形式给出,可以是在stdin命令行参数上,也可以是命令行参数(您的选择)。这六个值分别对应于侧面a, b, c和角度A, B, C。未知的一面以问号(?)给出。输入和输出角度都必须以弧度为单位。您可以假设输入值正确(您无需验证任何内容)。您还可以假设输入三角形不退化,并且所有边和角度都不为零。 以下示例输入告诉您side a为8,side b为,12而angle A为0.5弧度: 8 12 ? 0.5 ? ? 输出量 输出以与输入相同的格式给出-上用六个空格分隔的数字stdout。唯一的例外是,当无法求解输入三角形时,"No solution"必须将字符串写入stdout。如果可能有两种解决方案,则它们都将以换行符的形式输出。 以下是上述输入的输出: 8.0 12.0 16.0899264342 0.5 0.802561439714 1.83903121388 8.0 12.0 4.97205505116 0.5 2.33903121388 0.302561439714 输出不需要具有很高的精度,但是至少需要几个小数。 规则 输入是stdin从命令行参数中读取的 输出写入 stdout 如果给定输入有两种解决方案,则输出两者 如果信息太少而无法获得一两个清晰的解决方案,请考虑使用这种"No solution"情况 不能使用内置或预先存在的代码(当然,您可以使用触发函数,但不能使用“ solveTriangle”等) 最短代码胜出 测试用例 在 …

4
仅有的Bagatelle
挑战 给定一个像下面这样的面包板: | | | /\ / | | \ /| | \ \ /\ \ | | \ / \ | |\ / / \ | | \ / \ | | \ | | \ / \ /\ \ | |\ / / \ /| | / | …
13 code-golf 

9
Soundex功能
编写最短函数,为仅包含大写字母AZ的姓生成American Soundex代码。您的函数必须产生与所有链接页面的示例一致的输出(如下所示),尽管它不需要也不应删除前缀。输出中的连字符是可选的。玩得开心! 注意:您可能无法使用soundex()包含在PHP或其他编程语言等价物的功能。 例子: WASHINGTON W-252 LEE L-000 GUTIERREZ G-362 PFISTER P-236 JACKSON J-250 TYMCZAK T-522 VANDEUSEN V-532 ASHCRAFT A-261
13 code-golf  string 

4
拼音组合
创建一个函数,该函数将一个拼音音节的字符串作为参数,并返回存在的组合的true,否则返回false。 用“ v”代表“ü”。 这是组合的完整列表。 http://www.pinyin.info/rules/initials_finals.html 例子 f("bu") == true f("zheng") == true f("nv") == true f("ri") == true f("cei") == false f("ia") == false f("kian") == false f("qa") == false 请不要做诸如抓取网页或阅读输入法文件之类的事情以减少字符数。(如果这样做,那么数据的长度将计入字符数)。该代码高尔夫的目的之一就是了解如何简化规则。最短的代码获胜。

5
通过三点圈
给定平面上三个点的笛卡尔坐标,通过它们全部找到圆的方程。这三个点将不在一条直线上。 程序输入的每一行将按顺序包含3个点的x和y坐标A(x),A(y),B(x),B(y),C(x),C(y)。这些坐标是小于1,000,000的实数,彼此之间用空格隔开。 解决方案将作为形式的等式打印(x-h)^2 + (y-k)^2 = r^2。对值h,k,r将被印刷有小数点后三位数字。应根据需要更改方程式中的正号和负号,以避免在数字前出现多个正号。 Sample Inputs 7.0 -5.0 -1.0 1.0 0.0 -6.0 1.0 7.0 8.0 6.0 7.0 -2.0 Sample Outputs (x - 3.000)^2 + (y + 2.000)^2 = 5.000^2 (x - 3.921)^2 + (y - 2.447)^2 = 5.409^2
13 code-golf  math 

5
1P5:地震!
USGS的地震仪刚刚发现了大地震!紧急响应小组需要快速估算受影响的人数。编写一个程序来计算这个估计。 您的程序收到2个输入。首先是地震本身的细节。地震模拟为一条线段,地球沿着该线段破裂,以及距断层的临界距离,在该距离内可能会造成破坏。第二个输入是该地区城市的位置和人口清单。您的程序应计算出受影响区域中的人口数量,即故障段关键距离内所有城市的人口总数。 输入值 首先是描述地震的线,其中包含断层起点和终点的x,y坐标以及临界距离。格式为A_x A_y B_x B_y D。例如: 3.0 3.0 7.0 4.0 2.5 编码从(3.0,3.0)扩展到(7.0,4.0)且临界距离为2.5的故障。 其次,该区域中每个城市的一行,包含城市及其人口的x,y坐标。例如: 1.0 1.0 2500 5.0 7.0 8000 3.0 4.0 7500 9.0 6.0 3000 4.0 2.0 1000 输出量 居住在受影响地区的人数。对于上面的示例,只有第三和第五座城市处于危险区域,因此输出为 8500 最短的代码获胜。 例子2 0.0 0.0 10.0 0.0 5.0 5.0 4.0 10000 5.0 -4.0 1000 5.0 6.0 100 11.0 …
13 code-golf  math  1p5 

12
模拟爆炸的最紧凑代码
您是否可以编写一个程序来渲染一组爆炸的像素(如在简单的粒子引擎中),并且可以用很少数量的字符(按键)完成此操作?(回想一下游戏中的旅鼠,那时候这些小家伙会爆炸并且他们的小像素碎片飞散开来。) 有人在这里将一个简单的粒子系统编程为“ 处理”草图,与我认为其他人应该尝试完成的工作相比,它相当庞大。但是如果有人可以在c ++和sdl甚至Java或c#中做同样的事情,我会印象深刻。
13 code-golf 

7
n,最接近n的素数,n的平方和最接近n的斐波那契数的平均值是多少?
这是一个数学问题,涉及很多问题,使其颇具挑战性,并且您可能已经猜到,这是代码高尔夫球,因此它也应尽可能短。 的输入,n是任何整数数量(至少应该支持整数,但不必限于)。该输出是平均的: n 的平方 n 最接近质数 n n斐波那契数列中最接近的数字 不久,程序应该打印到标准输出通道的结果的(n+(n*n)+closestPrime(n)+closestFib(n))/4。 您不必担心可能的溢出等。正常的浮点精度也可以。 输入的方式完全取决于您。最短的程序(以字符为单位)获胜,就像打高尔夫球一样。 如果在寻找最接近的位置时出现平局,请选择以下选项之一: 上 下去 随机选择一个

4
长乘法,一次8位
您将得到一台16位计算机,并被告知实现任意大小的整数的乘法。您的寄存器只能容纳16位数字,最大的乘法指令需要两个8位输入并生成16位结果。 您的程序必须将两个任意大小的正数作为输入并输出其乘积。每个输入数字在其自己的行上编码为小尾数字节数组,其中每个字节为两位数的十六进制数字。输出必须采用类似的格式。也许最好用一个例子来解释: 输入 1f 4a 07 63 a3 输出 fd 66 03 a7 04 编码乘法477727 * 41827 = 19981887229。 您可以假定每个输入数字的最后一个(最高有效)字节为非零,并且您输出的数字的最后一块必须为非零。两个输入数字的最大长度为100个字节。 最小的代码获胜。 请记住,允许使用的最大乘法是1字节* 1字节,并且没有大于2字节的整数类型!
13 code-golf  math 

13
计算e的前N个数字
挑战 编写一个程序来计算e的前N(<= 10 ^ 3)个数字。 您的程序应采用整数N作为输入。 输入: 100 输出: 2.718281828459045235360287471352662497757247093699959574966967627724076630353547594571382178525166427 输入: 7 输出: 2.718282 输入: 1000 输出: 2.718281828459045235360287471352662497757247093699959574966967627724076630353547594571382178525166427427466391932003059921817413596629043572900334295260595630738132328627943490763233829880753195251019011573834187930702154089149934884167509244761460668082264800168477411853742345442437107539077744992069551702761838606261331384583000752044933826560297606737113200709328709127443747047230696977209310141692836819025515108657463772111252389784425056953696770785449969967946864454905987931636889230098793127736178215424999229576351482208269895193668033182528869398496465105820939239829488793320362509443117301238197068416140397019837679320683282376464804295311802328782509819455815301756717361332069811250996181881593041690351598888519345807273866738589422879228499892086805825749279610484198444363463244968487560233624827041978623209002160990235304369941849146314093431738143640546253152096183690888707016768396424378140592714563549061303107208510383750510115747704171898610687396965521267154688957035035 最短的解决方案获胜!
13 code-golf  math 

20
正常运行时间进度栏
编写一个程序,分析程序的输出uptime并生成一个解剖上提示性的进度条(如图所示),其长度等于当前的正常运行时间(以天为单位): $ uptime 23:01 up 34 days, 7:30, 5 users, load averages: 0.23 0.27 0.24 $ uptime|<command> 8==================================D (34天= 34个等号) 最短答案胜出。

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.