• 打印数字金字塔 at 2013年03月29日

    发现 stack exchange 上面也有玩这个的,http://codegolf.stackexchange.com/questions/8696/print-this-diamond

  • 有空我写个 mathematica 版的

  • #40 楼 @googya 不错,我再山寨回来,

  • 尝试用 mathematica 写,但是我写的速度很慢,经过别人指点有了改善 如果再增加一行代码,运行时间会小于 0.1s

  • 把数组分组 at 2012年10月22日

    都不错啊

  • 打印数字金字塔 at 2012年09月24日

  • 打印数字金字塔 at 2012年09月24日

    #27 楼 @mvj3 n>10 时,不对称了

  • 打印数字金字塔 at 2012年09月23日
    x=15
    1.upto(x){|n| puts (1..2*n-1).map{|i| (n-(n-i).abs)%10 }.join.center(2*x-1) }
    1.upto(x){|n| puts ( ((1..n).to_a+(n-1).downto(1).to_a).map{|i| i%10}).join.center(2*x-1) }
    

    两种方法

  • 打印数字金字塔 at 2012年09月23日

    #22 楼 @zgm 其实应该能够简化的,

  • 打印数字金字塔 at 2012年09月23日
    #!/usr/local/bin/ruby
    require 'mathn'
    def f(n)
        return  -(20000000/9999999999)*1024**(-4/5-(1/10)*n).ceil*9765625**(-4/5-(1/10)*n).ceil*100**n-(50000/9999999999)*1024**(-1/2-(1/10)*n).ceil*9765625**(-1/2-(1/10)*n).ceil*100**n-(2000/3333333333)*1024**(-2/5-(1/10)*n).ceil*9765625**(-2/5-(1/10)*n).ceil*100**n-(80/9999999999)*1024**(-1/5-(1/10)*n).ceil*9765625**(-1/5-(1/10)*n).ceil*100**n+(80000000/9999999999)*1024**((1/10)*n+1/10).floor*9765625**((1/10)*n+1/10).floor+(200000/3333333333)*1024**((1/10)*n+3/10).floor*9765625**((1/10)*n+3/10).floor+(50000/9999999999)*1024**((1/10)*n+2/5).floor*9765625**((1/10)*n+2/5).floor+(4000/9999999999)*1024**((1/10)*n+1/2).floor*9765625**((1/10)*n+1/2).floor-(400000/9999999999)*1024**(-((1/10)*n+3/5).floor)*9765625**(-((1/10)*n+3/5).floor)*100**n+(20/9999999999)*1024**((1/10)*n+7/10).floor*9765625**((1/10)*n+7/10).floor-(1/1111111111)*100**n*10000000000**(-((1/10)*n+1/10).floor)+(7000000/9999999999)*10000000000**((1/10)*n+1/5).floor-(700/9999999999)*10000000000**(-((1/10)*n+3/10).floor)*100**n+(100/3333333333)*10000000000**((1/10)*n+3/5).floor-(1000000/3333333333)*10000000000**(-((1/10)*n+7/10).floor)*100**n+(1/9999999999)*10000000000**((1/10)*n+4/5).floor-(100000000/9999999999)*10000000000**(-((1/10)*n+9/10).floor)*100**n+(100000000/1111111111)*10000000000**((1/10)*n).floor+(13717421/1111111111)*100**n-109739369/1111111111`
    end
    
    n=20
    1.upto(n){|i| puts f(i).to_s.center(2*n-1)}
    

    经过不懈努力,通用的版本已经搞定,可以完美运行

  • 打印数字金字塔 at 2012年09月22日

    还有通项公式,只是太复杂了、太长了

  • 打印数字金字塔 at 2012年09月22日

    #17 楼 @Tony612 其实也不对称了,不过还满足长度按 2 递增的

  • 打印数字金字塔 at 2012年09月22日

    #15 楼 @Tony612 当 n 大于 10 的时候,上述其他做法也不行的。他们是对称的,而且长度依次递增 2,第 9---12 行如下所示: …… 12345678987654321 1234567890987654321 123456789010987654321 12345678901210987654321 ……

  • 打印数字金字塔 at 2012年09月22日

    这是个巧合吧,就是通用性不太好

  • 打印数字金字塔 at 2012年09月22日

    n=9;1.upto(n){|i| puts (((10**i-1)/9)**2).to_s.center(2*n-1)} 还有更短的吗?

  • 数组对应项相加 at 2012年08月18日

    a1.zip(a2,a3).reduce([]){ |result, a| result << a} 和 a1.zip(a2,a3) 不是一样的吗

  • 数组对应项相加 at 2012年08月16日

    python 中可以这样的 map(lambda *x:sum(x),a1,a2,a3)

  • 数组对应项相加 at 2012年08月16日

    p (0..2).map { |i| a1[i]+a2[i]+a3[i]}

    p (0..2).map { |i| [a1,a2,a3].map { |j| j[i]}.inject(:+) }

  • 数字转数组 at 2012年07月26日

    ·n=1428;(0...n.to_s.length).map{|x| n.to_s[x].to_i}·

  • 数字转数组 at 2012年07月25日

    1428.to_s.bytes.map{|x| x-48} 这个 map 里面能用&吗

  • 数字转数组 at 2012年07月25日

    1428.to_s.unpack('C*').map{|x| x-48}

  • 数字转数组 at 2012年07月25日

    1428.to_s.chars.map(&:to_i)