发现 stack exchange 上面也有玩这个的,http://codegolf.stackexchange.com/questions/8696/print-this-diamond
有空我写个 mathematica 版的
尝试用 mathematica 写,但是我写的速度很慢,经过别人指点有了改善 如果再增加一行代码,运行时间会小于 0.1s
都不错啊
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) }
两种方法
#!/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)}
经过不懈努力,通用的版本已经搞定,可以完美运行
还有通项公式,只是太复杂了、太长了
这是个巧合吧,就是通用性不太好
n=9;1.upto(n){|i| puts (((10**i-1)/9)**2).to_s.center(2*n-1)}
还有更短的吗?
a1.zip(a2,a3).reduce([]){ |result, a| result << a} 和 a1.zip(a2,a3) 不是一样的吗
python 中可以这样的
map(lambda *x:sum(x),a1,a2,a3)
p (0..2).map { |i| a1[i]+a2[i]+a3[i]}
p (0..2).map { |i| [a1,a2,a3].map { |j| j[i]}.inject(:+) }
·n=1428;(0...n.to_s.length).map{|x| n.to_s[x].to_i}·
1428.to_s.bytes.map{|x| x-48}
这个 map 里面能用&吗
1428.to_s.unpack('C*').map{|x| x-48}
1428.to_s.chars.map(&:to_i)