Il giorno 07/lug/06, alle ore 11:54, stefano sa ha scritto:
Sono un niubbo in ruby, che ne pensate della routine che ho scritto ?
Che è molto più agile della mia 
In compenso ho una bella verifica della partita IVA
def partita_iva?
if (size == 11)
s = ((0…4).map {|i| self[i * 2, 1].to_i}).inject {|x, y| x + y}
s += ((0…4).map {|i| (self[i * 2 + 1, 1].to_i * 2) % 9}).inject
{|x, y| x + y}
(s % 10) == 0 ? 0 : 10 - (s % 10) == self[10,1].to_i
else
false
end
end
Questa invece è la mia sciagurata verifica del codice fiscale:
def codice_fiscale?
if(size == 16)
tbl = {“0” => 1, “1” => 0, “2” => 5, “3” => 7, “4” => 9, “5” =>
13, “6” => 15, “7” => 17, “8” => 19, “9” => 21,
“A” => 1, “B” => 0, “C” => 5, “D” => 7, “E” => 9, “F” =>
13, “G” => 15, “H” => 17, “I” => 19, “J” => 21,
“K” => 2, “L” => 4, “M” => 18, “N” => 20, “O” => 11, “P”
=> 3, “Q” => 6, “R” => 8, “S” => 12, “T” => 14,
“U” => 16, “V” => 10, “W” => 22, “X” => 25, “Y” => 24,
“Z” => 23}
s = ((0…7).map {|i| tbl[self[i * 2, 1]]}).inject {|x, y| x + y}
s+= ((0…6).map do |i|
if self[i * 2 + 1, 1].to_i.to_s == self[i * 2 + 1, 1]
self[i * 2 + 1, 1].to_i
else
self[i * 2 + 1] - “A”[0]
end
end
).inject {|x, y| x + y}
(s % 26 + “A”[0]) == self[15]
else
false
end
end