今日、11月11日はポッキー&プリッツの日!!
じゃなくて
バイナリデーですね!!!!
(参照: スラッシュドット・ジャパン|Happy Binary Day!)
バイナリデーにちなんでバイナリ時計をRuby書いてみました。
ネタでチャチャチャと書いたので、超適当です。 たぶん、できてます。
左からHH:MM:SSです。
1 #/usr/bin/env ruby 2 3 require 'curses' 4 5 class BinaryCloc k 6 7 def initialize 8 @clock = {} 9 @clock[:hour] = Array.new(2) 10 @clock[:min] = Array.new(2) 11 @clock[:sec] = Array.new(2) 12 end 13 14 def run 15 curses_scr een = Curses.init_scree n 16 17 loop do 18 Curses.clear 19 get_time 20 curses_scr een.addstr(bin_clock_ str) 21 Curses.refresh 22 sleep(1) 23 end 24 25 end 26 27 private 28 def get_time 29 time = Time.now 30 hour = split_inte ger(time.hour, 2) 31 min = split_inte ger(time.min, 2) 32 sec = split_inte ger(time.sec, 2) 33 34 0.upto(1) do |i| 35 @clock[:hour][i] = to_bin_arr ay(hour[i]) 36 @clock[:min][i] = to_bin_arr ay(min[i]) 37 @clock[:sec][i] = to_bin_arr ay(sec[i]) 38 end 39 40 end 41 42 def split_inte ger(n, k=0) 43 int_array = n.to_s.split(//).map{|i| i.to_i}.reverse 44 int_array_ size = int_array. size 45 int_array += Array.new(k - int_array_ size){0} if int_array_ size < k 46 return int_array 47 end 48 49 def to_bin_arr ay(n) 50 binary = [] 51 52 3.downto(0) do |i| 53 if n >= 2**i 54 binary[i] = '*' 55 n -= 2**i 56 else 57 binary[i] = '-' 58 end 59 end 60 61 return binary 62 end 63 64 def bin_clock_ str 65 str = "" 66 67 3.downto(0) do |i| 68 str << "#{@clock[:hour][1][i]}\t" + 69 "#{@clock[:hour][0][i]}\t" + 70 "#{@clock[:min][1][i]}\t" + 71 "#{@clock[:min][0][i]}\t" + 72 "#{@clock[:sec][1][i]}\t" + 73 "#{@clock[:sec][0][i]}\n" 74 end 75 76 return str 77 end 78 79 end 80 81 bin_clock = BinaryCloc k.new 82 bin_clock. run
追記: 2008/11/11
今気づいたら、URLが
http://blo
追記: 2008/11/26
Githubにおいてみました。
posted by
y_tsuda
on Tue 11 Nov 2008
at 17:07