Ancora sugli Array

Un altro quizzetto:

ho un array [[elementA, frequency], [elementB, frequency], …,
[elementZ, frequency]]

vorrei trasformarlo in:

[[elementA, frequency/(total frequencies)], [elementB, frequency/
(total frequencies)], …]

Chi sa la soluzione?

On 6/4/07, Giovanni I. [email protected] wrote:

ho un array [[elementA, frequency], [elementB, frequency], …,
[elementZ, frequency]]

vorrei trasformarlo in:

[[elementA, frequency/(total frequencies)], [elementB, frequency/
(total frequencies)], …]

Che brutto vedersi saltar fuori questi quiz mentre si sta lavorando,
ma non riuscire lo stesso a resistere alla tentazione :smiley: Premetto di
non averla ragionata molto andando a razzo direttamente via irb,
intendevi qualcosa di simile?

irb(main):001:0> ary = [[‘a’, 2], [‘b’, 6], [‘c’, 4]]
=> [[“a”, 2], [“b”, 6], [“c”, 4]]
irb(main):002:0> tot_freq = ary.inject(0) { |tot_freq,(elem,freq)|
tot_freq += freq }.to_f
=> 12.0
irb(main):003:0> ary.map { |(elem,freq)| [elem,(freq / tot_freq)] }
=> [[“a”, 0.166666666666667], [“b”, 0.5], [“c”, 0.333333333333333]]

Quello che mi ero dimenticato di dire è che volevo farlo tutto in un
passaggio solo :slight_smile:
(poi ho risolto in tutt’altro modo, ma il quiz vale ancora :))

Il giorno 04/giu/07, alle ore 11:56, Daniele A. ha scritto:

— Giovanni I. [email protected] wrote:

Quello che mi ero dimenticato di dire è che volevo
farlo tutto in un
passaggio solo :slight_smile:

wow.
L’unica soluzione a cui riesco a pensare sarebbe di
aggiornare tutto man mano che vai avanti, ma avresti
un costo 1+2+…+N invece che 2N che è sempre peggiore
per liste di almeno tre elementi :slight_smile:


New Yahoo! Mail is the ultimate force in competitive emailing. Find out
more at the Yahoo! Mail Championships. Plus: play games and win prizes.
http://uk.rd.yahoo.com/evt=44106/*http://mail.yahoo.net/uk