require 'socket' load("./make1d.rb") def show_result(result) puts("\033[H\033[J") puts('===================================================') for i in 1..9 if result[i]>0 puts(i.to_s() + ' ' + ('*' * result[i])) end end puts('===================================================') end def update(result, n, o) result[n] = result[n] + 1 if o != 0 result[o] = result[o] - 1 end show_result(result) end def serve(s, log, result) addr = s.peeraddr[3] sel = s.gets() i = sel.to_i() if i < 1 || i > 9 s.puts('error: illegal selection') else if log.fetch(addr, 0) != 0 s.puts('updated') update(result, i, log.fetch(addr)) else s.puts('ok') update(result, i, 0) end log.store(addr, i) end s.close() end def collect() log = Hash.new() result = make1d(10) gs = TCPServer.new(12345) while true s = gs.accept() serve(s, log, result) end end