Hatena::Grouprubyist

たばさの RSSフィード

06/03(日) 2012

enterキーのみでコマンド実行 バージョン0.2

enterキーのみでコマンド実行 バージョン0.2 - たばさの を含むブックマーク はてなブックマーク - enterキーのみでコマンド実行 バージョン0.2 - たばさの

多少速さがぶれてもいいように判定の変更(間隔の平均を使う)

# tenter.rb  ver. 0.2
cmdlist=[
"dir a*",
"time",
"date",
]
def prpt cm=""
  prpt="?>#{cm} "
  print prpt
end
class Array
  def showrate
    print"<間隔: "
    (self.size-1).times{|i|
      printf "%.2f", self[i+1]-self[i]
      print" "
    }
    puts">"
    base=self[1]-self[0]
    print"<比率: "
    (self.size-1).times{|i|
      printf "%.2f", (self[i+1]-self[i])/base
      print" "
    }
    puts">"
    print"<平均比率: "
    (self.size-1).times{|i|
      if i==0
        base=self[1]-self[0]
      else
        base=(self[i]-self[0])/i
      end
      printf "%.2f", (self[i+1]-self[i])/base
      print" "
    }
    puts">"
  end
end

toolate=2.5
lastlendef=0.6
enterrate=1.85

while true
  histime=[]
  lastlen=lastlendef
  while true
    status=histime.size-1
    if status>-1
      prpt cmdlist[status]
    else
      prpt
    end
    key=gets.chomp
    histime << Time.now
    lastlen=(histime[-2]-histime[0])/(histime.size-2)*enterrate if histime.size>2
    sa=0
    sa=histime[-1]-histime[-2] if histime.size>1
    if sa>toolate
      histime=[]
      lastlen=lastlendef
      histime << Time.now
      sa=0
    end
    break if sa>lastlen
    break if key.size>0
  end
  c=cmdlist[0] 
  c=cmdlist[histime.size-2] if histime.size-2<cmdlist.size
  break if key=~/^quit/
  if key.size>0
    c=key
  end
  puts c
  system c
  histime.showrate if $DEBUG
end

トラックバック - http://rubyist.g.hatena.ne.jp/hatecha/20120603
カレンダー
<< 2012/06 >>
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
archive Error : RSSが取得できませんでした。