研究日誌。

大規模なグラフ処理に対してメモリ階層構造を考慮した高性能なソフトウェアを開発。

{Long, Square}-{n, C}.xx.xx.gr 生成プログラムの Ruby 化

2010-05-14 14:34:11 | Weblog
Goldberg の生成プログラムを Ruby 化してみた。
n = x * y
m = 4 * n - 2 * (x + y)
puts "p sp #{n} #{m}"
ids = 1.upto(n).sort_by { |item| rand }
ids.unshift(0)
1.upto(x) do |i|
  1.upto(y) do |j|
    puts "a #{ids[y*(i-1)+j]} #{ids[y*(i-1)+(j-1)]} #{ rand(hY+1).to_i+lY }" if j > 1
    puts "a #{ids[y*(i-1)+j]} #{ids[y*(i-1)+(j+1)]} #{ rand(hY+1).to_i+lY }" if j < y
    puts "a #{ids[y*(i-1)+j]} #{ids[y*(i-2)+(j  )]} #{ rand(hX+1).to_i+lX }" if i > 1
    puts "a #{ids[y*(i-1)+j]} #{ids[y*(i  )+(j  )]} #{ rand(hX+1).to_i+lX }" if i < x
  end
end