print d[0]*d[1]
end
[…]
Generally you need to do conditional evaluation based on higher prio
results. Using “||” or “or” won’t help here (dunno what Perl
does here).
You want something like
[…]
hmmm, I don’t think he realy want’s this.
Please don’t scare our new perl friends away…
there is a simple solution to that:
char_freq = [[“c”, 2],[“b”, 5],[“a”, 2]]
sorted_freq = char_freq.sort {|a, b| (b[1]<=>a[1]).nonzero? ||
a[0]<=>b[0] }
sorted_freq.each do |d|
print d[0]*d[1]
end
cheers
Simon
Kroeger, Simon (ext) wrote:
print d[0]*d[1]
hmmm, I don’t think he realy want’s this.
Please don’t scare our new perl friends away…
:-)))
there is a simple solution to that:
char_freq = [[“c”, 2],[“b”, 5],[“a”, 2]]
sorted_freq = char_freq.sort {|a, b| (b[1]<=>a[1]).nonzero? ||
a[0]<=>b[0] }
sorted_freq.each do |d|
print d[0]*d[1]
end
I didn’t think of using #nonzero? - this clearly resembles the perl
solution most. Although I’d say that I’d probably prefer the sort_by
approach with negated values…
Kind regards
robert