Questions tagged «code-golf»

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

14
显示连续分数
您的挑战是将分数转换为其连续的分数形式。 输入:分数可以任何格式输入,包括(但不限于) 字符串:“ 7/16” 清单:{7,16},(7,16),[7,16] 简单有序对:7 16 功能:f [7,16] 输出:2D连续分数,水平分数条将分子和分母分开。只有分子等于1的连续分数有效。不必使字体大小根据深度而变化。前导零(用于适当的分数)是可选的。 深度:您的代码必须能够显示至少8个深度级别。 获奖标准:最短代码获胜。您必须包括几个显示输入和输出的测试用例。 测试示例(输入后输出) 5/4 5/3 5/7 9/16 89/150

21
重复生成有序组合
给定一串不同的字符和一个数字n,使用这些字符生成长度为1到n的所有重复的有序组合。 定义它的另一种方法是将给定字符视为字符数基数(基数)中的“自定义”数字,然后程序应在该基数中生成具有1到n位数字的所有“数字”。也包括“零”。 组合应按其长度排序(首先为1个字符,然后为2个字符,依此类推),但除此之外,它们可以按任何顺序排列。您可以选择最方便的方式来处理输入和输出。最短的代码胜出。 例子: ab, 3-> a,b,aa,ab,ba,bb,aaa,aab,aba,baa,abb,bab,bba,bbb 0123456789, 2->0,1,2,3,4,5,6,7,8,9,00,01,...,09,10,11,...,99

2
使用上下文无关文法压缩数据
可以使用直线语法压缩某些类型的数据,例如人工文本或源代码。您基本上可以创建一个语法,该语法的语言中只有一个词-未压缩的数据。在此任务中,您必须编写一个实现此数据压缩方法的程序。 输入项 输入的字符串长度不超过65535字节。确保输入匹配正则表达式[!-~]+(即,至少一个可打印的ASCII字符,不包括空格)。 输入示例 abcabcbcbcabcacacabcabab 输出量 输出是形成规则的一组规则,这些规则描述了一个单词(输入)。每个非终结符均用大于9的十进制数表示。起始符号为符号编号十。下面给出了与示例输入相对应的示例输出;其语法在下面进一步描述: 10=11 11 12 12 11 13 13 11 14 14 11=a 12 12=b c 13=a c 14=a b 每个规则的形式<nonterminal>=<symbol> <symbol> ...在右侧带有任意空格分隔的符号数。每个遵循以下限制并精确导出输入字符串的输出均有效。 限制条件 为了阻止人们做奇怪的事情,我们采取了许多限制措施: 每个非终结符必须在规则的右侧至少出现两次。例如,以下输入语法abcabc不合法,因为规则12仅出现一次: 10=12 11=a b c 12=11 11 两个相邻符号的序列在所有规则的所有右侧都不能出现多次,除非它们重叠。例如,abcabcbc由于顺序bc出现两次,因此以下输入语法无效: 10=11 11 b c 11=a b c 有效的语法为: 10=11 11 12 11=a …

7
使用随机输入输出混洗的牌组
输入输出: 输入:取自stdin的均匀随机,无限长的字符串'0'和'1'。假定该字符串是真正随机的,而不是伪随机的。这是统一的,因为每个字符均可能是“ 0”或“ 1”。 小心!输入是无限长的,因此您无法使用python中的raw_input()之类的函数将其全部存储在内存中。如果我没记错的话,golfscript将因无限输入而失败,因为它将在运行之前将整个输入压入堆栈。 输出:均匀随机混洗的标准牌组,没有小丑。这是统一的,因为所有顺序都是一样的。 输出中的每张牌都是它的等级,A,2-9,T,J,Q或K与其西服是c,d,h或s串联在一起。例如,黑桃的10个是Ts 甲板的卡片应以空格隔开。 您不能使用内置的随机库或函数,因为它们不是真正的随机的,而只是伪随机的。 输入示例 您可以使用以下python脚本将输入传递到程序中: import sys, random try: while True: sys.stdout.write(str(random.randint(0,1))) except IOError: pass 如果将脚本另存为rand.py,请使用 python rand.py | your_program 在python 3中,它按预期运行,但是在python 2.7中,我在程序输出后收到一条错误消息,但只有在所有步骤完成后,才忽略该错误消息。 输出示例: 这是如果纸牌碰巧按排序顺序应打印的方式: Ac 2c 3c 4c 5c 6c 7c 8c 9c Tc Jc Qc Kc Ad 2d 3d 4d 5d 6d …

5
列表分区
这个问题的答案太长了 您面临的挑战是编写最少数量的字符的分区函数。 输入例 ['a', 'b', 'c'] 输出例子 [(('a'),('b'),('c')), (('a', 'b'), ('c')), (('a', 'c'), ('b')), (('b', 'c'), ('a')), (('a', 'b', 'c'))] 输入可以是列表/数组/集合/字符串等。您的函数最容易处理的输入 您也可以选择适合自己的输出格式,只要结构清晰即可。 您的函数应至少在输入中包含6个项目

9
计算相关系数
给定事件X和Y的一系列数字,请计算Pearson的相关系数。每个事件的概率相等,因此可以通过简单地将每个系列相加并除以试验次数来计算期望值。 输入项 1 6.86 2 5.92 3 6.08 4 8.34 5 8.7 6 8.16 7 8.22 8 7.68 9 12.04 10 8.6 11 10.96 输出量 0.769 最短的代码胜出。输入可以通过stdin或arg进行。输出将通过标准输出。 编辑:不应使用内置函数(即,计算的期望值,方差,偏差等),以允许解决方案具有更多多样性。但是,请使用内置程序(用于展示)随意演示一种非常适合该任务的语言。 基于David输入Mathematica的想法(使用内置均值的86个字符) m=Mean;x=d[[All,1]];y=d[[All,2]];(m@(x*y)-m@x*m@y)/Sqrt[(m@(x^2)-m@x^2)(m@(y^2)-m@y^2)] m = Mean; x = d[[All,1]]; y = d[[All,2]]; (m@(x*y) - m@x*m@y)/((m@(x^2) - m@x^2)(m@(y^2) - m@y^2))^.5 使用我们自己的平均值(101个字符)进行短裙 m=Total[#]/Length[#]&;x=d[[All,1]];y=d[[All,2]];(m@(x*y)-m@x*m@y)/((m@(x^2)-m@x^2)(m@(y^2)-m@y^2))^.5 m = …

3
单向系统的最短路径
我的家乡Rhyl拥有一个单向交通系统,该系统的设计旨在使人们尽可能长时间地远离目的地。您的任务(应该选择尝试)是生成一个程序,以给出通过此类交通系统的最短路线。 输入项 输入将是on STDIN,并且将是一个起点和终点列表,后跟一个空行,然后是一个查询列表,如下所示: A B B A B C C D D C A D C A B A 每条道路只能沿给定的方向行进,因此,在上述示例中,道路A-B是双向道路,而B-C是从B到C的单向道路。从C到B被禁止。 起点和终点都将由一个大写字母表示。 输出量 对于收到的每个查询,输出应该是从给定起点到给定终点的最短路径(由访问的点数衡量)。如果没有这样的路由,则输出空白行。如果存在多个最短路径,则按字典顺序对所有最短路径进行排序时,输出第一个。 对于上面的示例,输出为: A B C D B A 测试脚本 和以前一样,我将基于Joey和Ventero编写的脚本为此任务提供测试: 重击 电源外壳 并对无法使用上述脚本的任何人进行测试和预期输出 纯文本 用法: ./test [your program and its arguments] 奖赏 很显然,所有尝试打高尔夫球的答案都符合规格要求,并且通过了所有测试,这些答案都将使我感到欣慰。到2012年1月26日的最短工作答案将被接受。

4
生成弗里德曼数
一弗里德曼数是可以通过基本的数学运算(^,/,*,+, - )来表示一个数字,它的所有的数字。无需将操作应用于每个数字,但必须包含所有数字。也就是说,121 = 11 ^ 2->包含所有数字,但是1和1被组合在一起成为11。 允许使用括号,但平凡的解决方案x= (x)不是有效的解决方案。也无效x= +x。 例子 25 = 5 ^ 2 121 = 11 ^ 2 343 =(3 + 4)^ 3 2048 =(8 ^ 4)/ 2 + 0 编写一个程序,该程序将使用两个正整数,并在该范围(含)范围内打印弗里德曼数字的数量,并在随后的行中打印带有表达式的数字。 输入- n m | n, m integers, n>=0, m>n 输出- count | number of Friedman numbers …
9 code-golf 

5
元素周期表中的单词
已关闭。这个问题需要细节或说明。它当前不接受答案。 想改善这个问题吗?添加详细信息并通过编辑此帖子来澄清问题。 3年前关闭。 回到我高中一年级时读化学的时候,我会看一下元素周期表,并用元素的数量拼出脏话(HeCK会是2619,2-6-19)。 前几天,我在想这件事,当时看到一件出色的衬衫拼出BeEr(4-68) 因此,我的codegolf挑战是用于输出可以与元素周期表拼写的单词列表以及代表该单词的数字代码的最短程序。 / usr / share / dict / words或要用于单词列表的任何词典。如果您使用的是“非标准”单词列表,请告诉我们它是什么!
9 code-golf 

1
优化矩阵链乘法
挑战在于为几个矩阵的乘积计算最有效的乘法顺序。 矩阵的大小在标准输入的一行中指定。您应该在标准输出中打印一个整数列表,该整数列表指示进行乘法的顺序以最大程度地减少总乘法成本。 例子1 输入 5x6 6x12 12x100 100x7 输出 3 2 1 输入行将是用空格分隔的矩阵大小列表,每个矩阵大小是行数,后跟一个x,然后是列数。例如,有4个矩阵相乘在一起(所以总共有3个相乘),并且由于矩阵相乘是关联的,因此它们可以按任何顺序进行。 输出应该是执行乘法以最小化总成本的顺序。这应该是一个用空格分隔的整数列表,这些整数表示下一步要执行的乘法的索引。对于N个矩阵,此列表应包含数字1到N-1(含)。例如,输出1 3 2 1意味着您应该先进行12x100 * 100x7乘法运算,然后进行6x12 * 12x7乘法运算(第二个矩阵乘以上一步的结果),最后进行5x6 * 6x7乘法运算。 矩阵乘法将始终兼容,即矩阵的列数将与后续矩阵的行数匹配。假设将两个矩阵相乘的费用AxB * BxC为A*B*C。 您的代码必须处理最多100个矩阵的列表,每个矩阵的最大维度为999,并在合理的时间内进行处理。 例子2 输入 5x10 10x5 5x15 15x5 输出 1 3 2 要么 3 1 2 例子3 输入 22x11 11x78 78x123 123x666 666x35 35x97 97x111 …
9 code-golf  math 

4
计算{1,2,…,n}上的拓扑数
任务 编写一个函数/程序,该函数/程序将其n作为参数/输入并打印/返回集合上的拓扑数(如下所示){1,2,...,n}。 拓扑定义 令X为任意有限集,并假设T是X 的幂集的子集(即,包含X的子集的集合)满足以下条件: X和空集在T中。 如果两个组U和V是在T,则联合这两组都在T. 如果两组U和V在T中,则这两组的交点在T中。 ...然后T称为X上的拓扑。 技术指标 您的程序是: 一个函数,它接受n作为参数 或输入 n 并打印或返回set上(不同)拓扑的数量{1,2,...,n}。 n 是小于11的任何非负整数(当然,如果您的程序处理的n大于11也没有问题),并且输出是一个正整数。 您的程序不应使用任何类型的库函数或本机函数来直接计算拓扑数。 输入示例(n的值): 7 输出/返回示例: 9535241 您可以在此处或此处检查返回值。 当然,最短的代码胜出。 获胜者已确定,但是,如果出现较短的代码,我可能会更改获胜者。

2
二维射线追踪
挑战是要实现基于文本的二维射线跟踪程序。 白光的来源是@符号。R,G并B是光的过滤器。/和\与80%的反射率的反射镜。?是一个光传感器。>,<,^并V在适当的方向相结合的光(例如,如果一个红色和一个绿色来到一个>的光将朝向右侧被发射,这将是黄色)。其他非空白字符会吸收所有光。@符号从四个方向发射光。 运行该程序时,它应产生与输入相同的输出,但带有光线。因为这是二维的,并且我保证输入中不会有任何光线交叉,所以不会有任何问题。每条射线应以字母表示;r =红色,g =绿色,b =蓝色,c =青色,m =品红色,y =黄色,w =白色。永远不会有任何三元颜色。套管对于区分输入和输入很重要。在输出之后,应将问号捕获的光的值(从出现的顺序,从左到右,从上到下)输出为百分比和颜色。例如,此输入: / @ - \R> ? @B/ 应该给出输出: /wwwwwwwwwwwwwwwwww@w w - w\R>mmmmmmmmmmmmmmmmm? w b @B/ #1: 72% Magenta 还要注意的另一个重要点-当使用“棱镜”(箭头)组合两种颜色时,组合后的光的强度变为两种颜色的平均强度。输出必须完全符合规定(例如#x:[x] [x] x%Color)。 如果您的语言无法从STDIN读取并向STDOUT写入,请创建一个函数(将匿名或lambda可用)接受该输入作为参数并返回结果。 可以省略针对编译器的指令,使用该语言创建的所有或大多数程序所需或推荐的结构等。例如,#include和using指令(但不是#define)可以在C语言风格的语言被除去,#/usr/bin/perl -options在Perl和 Module Module1 Sub Main() End Sub End Module 例如在VB.NET中。如果您导入名称空间或添加包含指令,请在您的答案中注意它们。 现在够难了吗?:)

5
简单标签解析器
这是宽容HTML解析器的模型。在此代码中,代替解析HTML和提取属性,标记解析器将很简单。 编写一个解析标记结构并返回其括号形式的函数。开头标签由一个小写字母组成,结束标签由一个大写字母组成。例如,aAbaAB解析为(a)(b(a))或以HTML形式解析<a></a><b><a></a></b>。当然,标签可以并列和嵌套。 必须处理“过早”的关闭标签。例如,在中abcA,A闭合最外面a,因此将其解析为(a(b(c)))。 多余的结束标记将被忽略:aAB解析为(a)。 不处理重叠的标签。例如,根据先前的额外结束标记(-> ()+ (extra))abAB解析为(a(b)),而不是。(a(b))(b)abABabA(a(b))B 假设输入中没有空格和其他非法字符。 您无权使用任何库。 这是参考实现和测试用例列表: #!/usr/bin/python def pars(inpu): outp = "" stac = [] i = 0 for x in inpu: lowr = x.lower() if x == lowr: stac.append(x) outp += "(" + x i = i + 1 else: while len(stac) > 1 and …

5
油漆那个栅栏
您是汤姆·索耶(Tom Sawyer),必须粉刷一下102400 m长的篱笆。幸运的是,您的朋友决定帮助您交换各种东西。每个朋友会画画大号米,从开始小号颜色Ç。小号,大号是米整数量和1≤ ç ≤97感到厌烦你决定要找出你有各种颜色的多少米。 输入项 从标准输入读取输入。如上所述,每行包含三个数字S,L,C。 乌普特 输出被写入标准输出。对于最终栅栏上出现的每种颜色,请打印颜色编号及其出现的次数。按颜色排序。 例子 输入0 .............. 0 3 1 111........... 2 4 2 112222........ 1 2 3 133222........ 0 4 1 111122........ 7 3 5 111122.555.... 输出0 1 4 2 2 5 3 输入1 0 100 1 50 150 2 输出1 1 50 2 …
9 code-golf 

13
玩名字游戏
编写一个程序来玩名字游戏。 输入项 您的程序应以某种方式接受单个名称作为用户输入的名称(例如,从标准输入中读取或作为命令行参数)。您可以假定名称是一个单词,由一个大写字母和一个或多个小写字母组成。 输出量 您的程序必须通过填写以下模板,按照歌曲中的说明打印给定名称的押韵: (X), (X), bo-b(Y) Banana-fana fo-f(Y) Fee-fi-mo-m(Y) (X)! 在这里,(X)是原始名称,并且(Y)是小写的名称,其中删除了所有初始辅音。 但是,有一个例外。如果原始名称以或开头m,则应在相应的行上写上不带该字母的字母。例如,如果名称为,则“ b”行应以结尾。请注意,在这种情况下,任何其他辅音被保留,所以对于它的,不是。fbBobbo-obFredfo-redfo-ed 例子 雪莉: Shirley, Shirley, bo-birley Banana-fana fo-firley Fee-fi-mo-mirley Shirley! 阿诺德: Arnold, Arnold, bo-barnold Banana-fana fo-farnold Fee-fi-mo-marnold Arnold! 鲍勃: Bob, Bob, bo-ob Banana-fana fo-fob Fee-fi-mo-mob Bob! 弗雷德: Fred, Fred, bo-bed Banana-fana fo-red Fee-fi-mo-med Fred! 计分 最短的代码胜出。
9 code-golf 

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.