2015年3月20日金曜日

【Ruby】 正弦波を出力する

正弦波を出力するだけのRubyの書き捨てスクリプト。

カーソル移動で標準出力を書き換えるのがマイブームです。


ソースコード

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
sin_ary = (1..180).each.inject([]) do |ary, n|
  sin = (Math.sin(n * (Math::PI / 180)) * 100).to_i
  ary << ("*" * sin).ljust(100)
end
 
line = 20
 
begin
  loop do
    180.times do |i|
      (0..line).each{ |j| puts sin_ary[i - j] }
      printf "\e[#{line + 1}A"; STDOUT.flush; sleep 0.01
    end
  end
rescue Interrupt
  exit 0
end

実行結果

line変数で行数を変更できます。


0 件のコメント:

コメントを投稿