Domandona
Come trasformare
[[[“a”, 1],[“b”, 2],[“c”, 3]],[[“a”, 4],[“b”, 5],[“c”, 6]]]
in
[a,[1,4]], [b,[2,5]], [c,[3,6]]
Con una mossa gobba?
5 kudos a chi vince
Jeko
P.s.
Ho anche il livello 2
Domandona
Come trasformare
[[[“a”, 1],[“b”, 2],[“c”, 3]],[[“a”, 4],[“b”, 5],[“c”, 6]]]
in
[a,[1,4]], [b,[2,5]], [c,[3,6]]
Con una mossa gobba?
5 kudos a chi vince
Jeko
P.s.
Ho anche il livello 2
— Stefano G. [email protected] wrote:
Domandona
Come trasformare
[[[“a”, 1],[“b”, 2],[“c”, 3]],[[“a”,
4],[“b”,5],[“c”, 6]]]in
[a,[1,4]], [b,[2,5]], [c,[3,6]]
Con una mossa gobba?
come si definisce una mossa gobba?
Comunque:
ary[0].map { |k,v| [k,[v,ary[1].assoc(k)[1]]] }
Oppure:
ary[0].zip(ary[1]).map { |(a,b),(c,d)| [a,[b,d]] }
O anche:
ary[0].map.with_index { |(a,b),i| [a,[b,ary[i][1]]] }
ma forse volevi dire evitando di accedere ai singoli sub-array?
___________________________________________________________
Yahoo! Answers - Got a question? Someone out there knows the answer. Try
it
now.
http://uk.answers.yahoo.com/
Beh le tue mosse sono parecchio gobbe!
Ti sei aggiudicato il livello 2
E’ possibile fare la stessa cosa con dei valori mancanti, computandoli
comunque come zero?
[[[“a”, 1],[“b”, 2]],[[“a”,4],[“c”, 6]]]
diventa
[a,[1,4]], [b,[2,0]], [c,[0,6]]
Jek
P.s.
Questo vale per la coppa array
gabriele renzi ha scritto:
Comunque:
assoc, il metodo meno utile al mondo in azione!
ary[0].map { |k,v| [k,[v,ary[1].assoc(k)[1]]] }
La mia soluzione è simile:
a[0].map {|ar| [ar[0], [ar[1], a[1].assoc(ar[0])[1]]]}
Stefano G. ha scritto:
Sporco che di più non si
può:
a[0].map {|ar| [ar[0], [ar[1], (b = a[1].assoc(ar[0])).nil? ? 0 :
b[1]]]}
On 5/29/07, gabriele renzi [email protected] wrote:
Oppure:
nifty parameter unpacking:
ary[0].zip(ary[1]).map { |(a,b),(c,d)| [a,[b,d]] }
uhm, io sono giunto alla stessa soluzione con il parameter unpacking
riuscendo però a risparmiarmi l’orrendo zip e sfruttando invece
transpose (rb 1.8):
ary.transpose.map { |(a,b),(c,d)| [a,[b,d]] }
per il secondo livello passo, ho esaurito l’ultimo barlume di luciditÃ
per oggi (in realtà lo avevo già esaurito, ma ho scavato un po’ per
l’occasione :-D)
Daniele A. ha scritto:
ary.transpose.map { |(a,b),(c,d)| [a,[b,d]] }
Mi devo inchinare perché questa soluzione è veramente veramente
elegante.
— Stefano G. [email protected] wrote:
Beh le tue mosse sono parecchio gobbe!
Ti sei aggiudicato il livello 2
alé
E’ possibile fare la stessa cosa con dei valori
mancanti, computandoli
comunque come zero?[[[“a”, 1],[“b”, 2]],[[“a”,4],[“c”, 6]]]
diventa
[a,[1,4]], [b,[2,0]], [c,[0,6]]
mh… avendo garanzia che ci siano a sinistra ma non a
destra e non il contrario andrebbe
a[0].map do |k,v| [k,[v,(a[1].assoc(k)[1]rescue
0)]]end
altrimenti temo che la soluzione più semplice sia
ricorrere ad un hash :
a=[[[“a”, 1],[“b”, 2]],[[“a”,4],[“c”, 6]]]
=> [[[“a”, 1], [“b”, 2]], [[“a”, 4], [“c”, 6]]]hsh=Hash.new {[]}
=> {}tmp=nil # questa si può evitare con inject
=> nila.flatten.each_with_index {|k,i| i%2==0 ? tmp=k :
hsh[tmp]+=[k] }
=> [“a”, 1, “b”, 2, “a”, 4, “c”, 6]hsh
=> {“a”=>[1, 4], “b”=>[2], “c”=>[6]}hsh.to_a
=> [[“a”, [1, 4]], [“b”, [2]], [“c”, [6]]]
___________________________________________________________
Yahoo! Mail is the world’s favourite email. Don’t settle for less, sign
up for
your free account today
http://uk.rd.yahoo.com/evt=44106/*http://uk.docs.yahoo.com/mail/winter07.html
On 5/29/07, Stefano G. [email protected] wrote:
Clap clap clap clap…
Questa è veramente fine e raffinata!
J.
ma che vi siete fumati?
Clap clap clap clap…
Questa è veramente fine e raffinata!
J.
— Daniele A. [email protected] wrote:
uhm, io sono giunto alla stessa soluzione con il
parameter unpacking
riuscendo però a risparmiarmi l’orrendo zip e
sfruttando invece
transpose (rb 1.8):ary.transpose.map { |(a,b),(c,d)| [a,[b,d]] }
bellissimo, e transpose non lo conoscevo, novità nella
1.8.5 ?
___________________________________________________________
Yahoo! Answers - Got a question? Someone out there knows the answer. Try
it
now.
http://uk.answers.yahoo.com/
On 5/29/07, gabriele renzi [email protected] wrote:
ary.transpose.map { |(a,b),(c,d)| [a,[b,d]] }
bellissimo, e transpose non lo conoscevo, novità nella
1.8.5 ?
E’ stato introdotto nella 1.8.0, io però l’ho scoperto (per caso) ai
tempi della 1.8.4.
1.7.3 -> 1.8.0 preview1 (2002-12-24)
2002-11-19
Array#transpose [new]
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.
Sponsor our Newsletter | Privacy Policy | Terms of Service | Remote Ruby Jobs