-- -*- mode: eiffel -*- -- $Id: hash2.se,v 1.2 2001/04/26 07:23:16 doug Exp $ -- http://www.bagley.org/~doug/shootout/ class HASH2 creation make feature -- Initialization make is local n, i, prev : INTEGER hash1 : DICTIONARY[INTEGER, STRING] hash2 : DICTIONARY[INTEGER, STRING] it: ITERATOR[STRING] do n := argument(1).to_integer !!hash1.with_capacity(10000); !!hash2.with_capacity(10000); -- std_output.put_string("building hash1") -- std_output.put_character('%N') from i := 0 until i = 10000 loop -- std_output.put_integer(i) -- std_output.put_character('%N') hash1.put(i, "foo_" + i.to_string) i := i + 1 end from i := 0 until i = n loop -- std_output.put_string("building hash2") -- std_output.put_character('%N') it := hash1.get_new_iterator_on_keys from it.start until it.is_off loop if hash2.has(it.item) then prev := hash2.at(it.item) else prev := 0 end hash2.put(prev + hash1.at(it.item), it.item) it.next; end i := i + 1 end std_output.put_integer(hash1.at("foo_1")) std_output.put_string(" ") std_output.put_integer(hash1.at("foo_9999")) std_output.put_string(" ") std_output.put_integer(hash2.at("foo_1")) std_output.put_string(" ") std_output.put_integer(hash2.at("foo_9999")) std_output.put_character('%N') end end -- class HASH2