Tag: rosetta

代码高尔夫:Mandelbrot集合

通常的代码高尔夫规则。 下面是以python为例的一个实现 from PIL import Image im = Image.new("RGB", (300,300)) for i in xrange(300): print "i = ",i for j in xrange(300): x0 = float( 4.0*float(i-150)/300.0 -1.0) y0 = float( 4.0*float(j-150)/300.0 +0.0) x=0.0 y=0.0 iteration = 0 max_iteration = 1000 while (x*x + y*y <= 4.0 and iteration < max_iteration): xtemp = x*x – y*y […]

代码高尔夫:井字游戏

根据人物数量发布最短代码,以检查玩家是否赢了,如果是,哪个。 假设你在一个variablesb (棋盘)中有一个整数数组,这个variables保存井字棋板,以及玩家的移动位置: 0 =没有设置 1 =玩家1(X) 2 =玩家2(O) 所以,给定数组b = [ 1, 2, 1, 0, 1, 2, 1, 0, 2 ]代表板 X|O|X -+-+- |X|O -+-+- X| |O 对于这种情况,你的代码应该输出1来表示玩家1赢了。 如果没有人赢了,你可以输出0或false 。 我自己的(Ruby)解决scheme即将推出。 编辑 :对不起,忘记标记为社区维基。 你可以假设input是正确的,不需要检查错误。 更新 :请以function的forms发布您的解决scheme。 大多数人已经这样做了,但有些人没有,这不完全公平。 该板作为参数提供给您的function。 结果应该由函数返回。 该function可以有你select的名称。

天际线问题

我刚刚在UVA的在线裁判遇到这个小问题,并认为它可能是一个小代码高尔夫球的一个很好的候选人。 问题: 您将devise一个计划来帮助build筑师根据城市build筑物的位置绘制城市的天际线。 为了解决问题,所有的build筑物都是矩形的,并且共有一个共同的底部(他们build造的城市非常平坦)。 这个城市也被视为二维的。 build筑物由有序三元组(Li,Hi,Ri)指定 ,其中Li和Ri分别是build筑物i的左侧和右侧坐标,而Hi是build筑物的高度。 在下图中,build筑物左侧显示三元组 (1,11,5), (2,6,7), (3,13,9), (12,7,16), (14,3,25), (19,18,22), (23,13,29), (24,4,28) 右侧显示的天际线由以下顺序表示: 1, 11, 3, 13, 9, 0, 12, 7, 16, 3, 19, 18, 22, 3, 23, 13, 29, 0 输出应该由描述天际线的vector组成,如上例所示。 在天际线vector(v1,v2,v3,… vn)中 , vi使得i是偶数,表示水平线(高度)。 vi使得我是一个奇数,表示一个垂直线(x坐标)。 天际线向量应该代表所采取的“path”,例如,从最小x坐标开始的错误,并在所有定义天际线的行上水平和垂直行进。 因此天际线vector中的最后一个条目将是0.坐标必须用空格分隔。 如果我不计算所提供的(testing)build筑物的声明,并且包括所有空格和制表符,我的解决scheme是Python,长度为223个字符。 这里是浓缩的版本: B=[[1,11,5],[2,6,7],[3,13,9],[12,7,16],[14,3,25],[19,18,22],[23,13,29],[24,4,28]] # Solution. R=range v=[0 for e in R(max([y[2] for […]

代码高尔夫:正则expression式分析器

目标 今天的Code Golf挑战是尽可能less地创build一个正则expression式parsing器。 语法 不,我没有要求你匹配Perl风格的正则expression式。 毕竟,已经有一个非常可靠的解释器! 🙂 以下是关于这个挑战的正则expression式语法的所有知识: 一个术语被定义为单个文字字符,或者在分组括号()的正则expression式。 * (星号)字符表示上一个TERM中的Kleene星形运算 。 这意味着零个或更多以前的术语连接在一起。 + (加号)字符表示一个方便的捷径: a+等同于aa* ,意思是前面的一个或多个术语。 这个? (问号)字符代表零或前一个字词之一。 | (pipe)字符表示交替,这意味着任何一方的REGULAR EXPRESSIONS都可用于匹配。 所有其他字符被假定为文字。 你可以假定所有其他的字符都在[0-9A-Za-z] (即所有的英文字母数字)。 换句话说: * / + / ? 具有最高优先级,然后连接,然后交替。 由于交替的优先级比连接低,因此在没有括号的正则expression式中它的使用会导致它被绑定到每一边的完整正则expression式。 *和+和? 另一方面,只适用于前一个任期。 挑战 你的挑战是编写一个程序来编译或解释一个正则expression式(如上面定义的),然后testing一些string。 我将离开input给你。 我的build议是,正则expression式可能应该是第一位的,然后是任何数量的string来testing它。 但如果你想让它持续下去,那很好。 如果你想把所有的命令行参数或标准input,命令行中的正则expression式和标准input中的string,或者其他任何东西,那很好。 只显示一个或两个用法示例。 输出应该是true或false ,每行一个,以反映正则expression式是否匹配。 笔记: 我不需要说这个…但是不要在你的语言中使用任何正则expression式库! 您需要自己编译或解释模式。 ( 编辑:如果需要分割或连接string,则可以使用正则expression式,但不能直接使用它来解决问题,例如,将input正则expression式转换为语言正则expression式并使用它)。 正则expression式必须完全匹配这个挑战的inputstring。 (相当于,如果您熟悉类似于Perl的正则expression式,则假定所有匹配的string的起始和结束锚定都已到位) 对于这个挑战,所有的特殊字符()*+?| 预计不会真正发生。 如果在input中出现,则假定没有模式可以匹配所讨论的string是安全的。 input要testing的string应以区分大小写的方式进行评估。 […]

并行化后,pandasgroupby

我已经使用了rosetta.parallel.pandas_easy并行化后应用,例如: from rosetta.parallel.pandas_easy import groupby_to_series_to_frame df = pd.DataFrame({'a': [6, 2, 2], 'b': [4, 5, 6]},index= ['g1', 'g1', 'g2']) groupby_to_series_to_frame(df, np.mean, n_jobs=8, use_apply=True, by=df.index) 然而,有没有人想出了如何并行化返回数据框的函数呢? 正如预期的那样,此代码不能正常工作。 def tmpFunc(df): df['c'] = df.a + df.b return df df.groupby(df.index).apply(tmpFunc) groupby_to_series_to_frame(df, tmpFunc, n_jobs=1, use_apply=True, by=df.index)