Pogledajte određenu poruku
Staro 15. 10. 2011.   #4
jablan
VD IT Direktora
Invented the damn thing
 
Avatar jablan
 
Datum učlanjenja: 08.06.2005
Lokacija: Beograd
Poruke: 2.118
Hvala: 503
1.307 "Hvala" u 282 poruka
jablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamen
Default

Evo malo izmenjene verzije, sa komentarima.

Kôd:
p Hash[secrets.map{|secret|
  words = secret.split ' ' # niz reci u secret frazi
  [secret, dict.permutation(words.length).find{|perm| # za sve kombinacije reci iste duzine kao secret fraza
    match = [words, perm]
    #=>[["x8z", "yz67zx", "5y", "x4", "y352z"], ["the", "secret", "is", "to", "smile"]]
    next unless match.map{|e| e.map(&:length)}.inject(&:==) # eliminisemo sve koje nemaju iste duzine reci kao secret fraza
    chars = match.map{|e| e.join.chars.to_a} # sada ih posmatramo samo kao nizove karaktera
    #=>[["x", "8", "z", "y", "z", "6", "7", "z", "x", "5", "y", "x", "4", "y", "3", "5", "2", "z"], ["t", "h", "e", "s", "e", "c", "r", "e", "t", "i", "s", "t", "o", "s", "m", "i", "l", "e"]]
    next unless chars.map{|e| e.uniq.length}.inject(&:==) # eliminisemo sve koji nemaju isti broj razlicitih slova
    pairs = chars.inject(&:zip) # parovi slova na istim pozicijama
    #=>[["x", "t"], ["8", "h"], ["z", "e"], ["y", "s"], ["z", "e"], ["6", "c"], ["7", "r"], ["z", "e"], ["x", "t"], ["5", "i"], ["y", "s"], ["x", "t"], ["4", "o"], ["y", "s"], ["3", "m"], ["5", "i"], ["2", "l"], ["z", "e"]]
    Hash[pairs] == Hash[pairs.map(&:reverse)].invert # ovo je malo trickish, videti u tekstu
  }.join(' ')]
}]
Poslednja provera pravi dve hashmape, jednu od karaktera sifra -> original, drugu od karaktera original -> sifra, pa "obrne" ovu drugu i uporedi je sa prvom. Da ima nekih neslaganja, neki parovi se ne bi poklapali.
__________________
blog
jablan je offline   Odgovorite uz citat
3 članova zahvaljuje jablan za poruku: