From: Todd Benson Date: 2008-05-28T03:36:02+09:00 Subject: Re: n00b question On Tue, May 27, 2008 at 9:51 AM, Tim Wolak wrote: > Account = Struct.new(:account_number, :balance_yesterday, > :balance_today) do > def difference > balance_today - balance_yesterday > end > > def to_s > "#{account_number}\t#{balance_yesterday}\t#{balance_today}\t#{difference}\n" > end > end > > > class SktyFut > attr_reader :acct > > def initialize(filename) > @acct = File.new(filename, "r") > end > > def future_data > @sktylist = Hash.new(0) > @acct.each do |list| > office = list[21..23] # => > if office == "RPT" > next > else > acctnum = list[24..28] > end > lv = list[217..230] > is_negative = list[215,1] == "-" > value = lv.to_f/100 > value = -value if is_negative > > # Add vales to hash > > @sktylist[acctnum] += value > end > return @sktylist > end > end > > Dir.chdir("/Users/twolak") > post = SktyFut.new("FutBalances20080507.txt") > a = post.future_data > #puts a > pre = SktyFut.new("FutBalances20080506.txt") > b = pre.future_data > #puts b > my_hash = Hash.new {|h,k| h[k] = Account.new(k)} > a.each do |acc_nr, balance| > my_hash[acc_nr].balance_yesterday = balance > end > b.each do |key, balance| > my_hash[key].balance_today = balance > end > > g = my_hash.to_s.sort > puts g > > (the math will be wrong here as I have to take out info for security) > 700700 1854.54 5652.05 3237970.2 > 701701 654.18 654.18 0.0 > 702702 99.07 99.07 0.0 Tim, are you trying to do something along the lines of this? (spacing is irrelevant since you specify that by column number, I'm using letters for account names instead of your numbers, but it doesn't matter)... post.txt: a 1 b - 2 a - 4 b 8 RPT1 2 RPT g - 1 prev.txt: a 2 b - 2 a 0 b 7 z 9 RPT1 2 run_report.rb: post = Hash.new(0) IO.foreach("post.txt") do |line| post[line[3..3]] += line[5..7].to_i.to_f unless line[0..2] == "RPT" end prev = Hash.new(0) IO.foreach("prev.txt") do |line| prev[line[3..3]] += line[5..7].to_i.to_f unless line[0..2] == "RPT" end report = {} (post.keys | prev.keys).each do |k| report[k] = post[k], prev[k], post[k] - prev[k] end p report Now, this I would "pretty" up significantly, but I'm just trying to get an idea of what your after. Todd