require 'socket' require 'digest/md5' unb64 = lambda { |dat| dat.unpack('m*')[0] } md5 = lambda { |dat| Digest::MD5.hexdigest(dat) } imgs = { 'ciseau' => File.read('ciseau.jpg'), 'lezard' => File.read('lezard.jpg'), 'feuille' => File.read('feuille.jpg'), 'spock' => File.read('spock.jpg'), 'pierre' => File.read('pierre.jpg') } win = { 'ciseau' => 'spock', 'spock' => 'lezard', 'lezard' => 'pierre', 'pierre' => 'feuille', 'feuille' => 'ciseau' } TCPSocket.open("pirates.fluxfingers.net", 6565) { |fd| while fu = fd.gets fu.chomp! if k = imgs.index(unb64[fu]) a = win[k] fd.puts md5[imgs[a]] puts "him: #{k} me: #{a}" else p fu raw = unb64[fu] File.open(md5[raw] + '.jpg', 'w') { |id| id.write raw } end end }