%%% $Id: hash2.oz,v 1.0 2002/08/19 16:26:00 dada Exp $ %%% http://dada.perl.it/shootout/ %%% %%% contributed by Isaac Gouy %% Usage: start from command line with %% ozc -x hash2.oz -o hash2.oz.exe %% hash2.oz.exe 150 functor import System Application define proc {InitHash H} for I in 0..9999 do {Dictionary.put H {String.toAtom {List.append "foo_" {IntToString I}}} I} end end proc {AddValues L H} local Key Value Tail V in if L \= nil then (Key#Value|Tail) = L {Dictionary.condGet H Key nil V} if V == nil then {Dictionary.put H Key Value} else {Dictionary.put H Key Value+V} end {AddValues Tail H} end end end in local Args N H1 H2 in [Args] = {Application.getArgs plain} N = {String.toInt Args} {NewDictionary H1} {NewDictionary H2} {InitHash H1} for I in 1..N do {AddValues {Dictionary.entries H1} H2} end {System.printInfo {Dictionary.get H1 'foo_1'}} {System.printInfo ' '} {System.printInfo {Dictionary.get H1 'foo_9999'}} {System.printInfo ' '} {System.printInfo {Dictionary.get H2 'foo_1'}} {System.printInfo ' '} {System.printInfo {Dictionary.get H2 'foo_9999'}} end {Application.exit 0} end