Ebbene si, mi affido al calcolo del caro codice fiscale :D
L'ho fatto tante volte a scuola, mi sembrava giusto farla anche adesso.
Apro questa discussione per segnalarvi eventuali dubbi che non riesco a
risolvere, e il primo è arrivato praticamente subito.
Devo togliere le vocali dal cognome, e ho pensato di usare il metodo
split, ma da solo mi rendo conto che la soluzione da me provata è una
baggianata:
puts "Inserisci il tuo cognome: "
cognome = gets.chomp.downcase
cognome = cognome.split("a","e","i","o","u");
Ovviamente mi da problemi con gli argomenti del metodo.
Ho usato split per dividere la data, e li nessun problema :(
puts "Data di nascita: (GG/MM/AAAA)"
data = gets.chomp
data = data.split("/")
giorno = data[0]
mese = data[1]
anno = data[2]
on 2013-01-24 16:21
on 2013-01-24 16:27
Il metodo split serve per splittare una stringa in un array, composto da
pezzi delimitati dal separatore che gli passi.
Per togliere le vocali da una stringa, userei qualche variazione di
gsub,
tipo:
stringa.gsub(/[aeiou]/i, '')
Nota per che in questo modo non elimini i vari caratteri accentati,
quindi
c' ancora un po' di lavoro da fare ;)
Ciao,
Ju
--*
*M.Sc. Ju Liu
Card: http://zerp.ly/ju-liu
--
Societ Cooperativa weLaika - Impresa Sociale
Corso Vigevano 14/B, 10154 Torino (TO), Italy
http://welaika.com - info@welaika.com
2013/1/24 ilgu G. <gurnaz@live.it>
on 2013-01-24 16:31
Il giorno 24/gen/2013, alle ore 16:21, ilgu G. <gurnaz@live.it> ha scritto: > cognome = cognome.split("a","e","i","o","u"); usa #gsub, Luke: http://www.ruby-doc.org/core-1.9.3/String.html#method-i-gsub ... cognome = cognome.gsub(/[aeiou]/,'') ... documentazione per #split: http://www.ruby-doc.org/core-1.9.3/String.html#met... -- http://andreapavoni.com
on 2013-01-24 16:31
Vi ringrazio! Per ora evito i vari controlli su accentate, doppi cognomi o altro, magari li implemento alla fine quando riesco ad ottenere già qualcosa di tangibile :)
on 2013-01-24 16:32
> cognome = cognome.gsub(/[aeiou]/,'') Per il codice fiscale, y viene considerato una vocale? -- David N. Welton http://www.welton.it/davidw/ http://www.dedasys.com/
on 2013-01-24 16:36
Sapevo fosse una semiconsonante, ma onestamente non saprei come viene collocata, devo informarmi :)
on 2013-01-24 16:38
2013/1/24 ilgu G. <gurnaz@live.it>: > cognome = gets.chomp.downcase > > cognome = cognome.split("a","e","i","o","u"); > > Ovviamente mi da problemi con gli argomenti del metodo. > Ho usato split per dividere la data, e li nessun problema :( aggiungo una cosa a quel che ti hanno scritto gli altri,, Qua l'errore che ti dava , immagino, perch split prende un argomento solo, il separatore. Ma puoi comunque usarlo, passandogli come separatore la regexp per le vocali, cio >> "gabriele".split(/[aeiou]/) => ["g", "br", "", "l"] che per ti da un risultato che comunque poco utile e ti conviene usare #gsub :) -- twitter: @riffraff blog (en, it): www.riffraff.info riffraff.blogsome.com work: circleme.com
on 2013-01-24 16:44
si, ci sono inoltre delle altre regole (che non ricordo), per esempio se un tizio si chiamasse: Pio Pope si applicano regole diverse perch non ci sono sufficienti consonanti :-) A. Il giorno 24/gen/2013, alle ore 16:36, ilgu G. <gurnaz@live.it> ha scritto: > Sapevo fosse una semiconsonante, ma onestamente non saprei come viene > collocata, devo informarmi :) > > -- > Posted via http://www.ruby-forum.com/. > _______________________________________________ > Ml mailing list > Ml@lists.ruby-it.org > http://lists.ruby-it.org/mailman/listinfo/ml -- http://andreapavoni.com
on 2013-01-24 16:48
gabriele renzi wrote in post #1093547: > 2013/1/24 ilgu G. <gurnaz@live.it>: >> cognome = gets.chomp.downcase >> >> cognome = cognome.split("a","e","i","o","u"); >> >> Ovviamente mi da problemi con gli argomenti del metodo. >> Ho usato split per dividere la data, e li nessun problema :( > > > > aggiungo una cosa a quel che ti hanno scritto gli altri,, > Qua l'errore che ti dava , immagino, perch split prende un argomento > solo, il separatore. > Ma puoi comunque usarlo, passandogli come separatore la regexp per le > vocali, cio > > >> "gabriele".split(/[aeiou]/) > => ["g", "br", "", "l"] > > che per ti da un risultato che comunque poco utile e ti conviene > usare #gsub :) > > > > -- > twitter: @riffraff > blog (en, it): www.riffraff.info riffraff.blogsome.com > work: circleme.com Thanks! :) Si, per l'algoritmo sto guardando su wikipedia :D Ero partito bello sparato, ma mi conviene farmi pezzo per pezzo, perchè ogni componente ha le sue regole
on 2013-01-24 17:10
Magari la risposta e` questa :-) https://rubygems.org/gems/codice-fiscale -- David N. Welton http://www.welton.it/davidw/ http://www.dedasys.com/
on 2013-01-24 17:13
2013/1/24 ilgu G. <gurnaz@live.it> > > cognome = gets.chomp.downcase > cognome = cognome.split("a","e","i","o","u") > Il modo idiomatico per splittare una stringa in Ruby sulla base di un pattern qualunque il metodo scan della standard library. Ad esempio: "stringa".scan(/[^aeiou]{1}/) Ciao Stefano
on 2013-01-24 17:24
2013/1/24 Stefano Pigozzi <stefano.pigozzi@gmail.com>: > 2013/1/24 ilgu G. <gurnaz@live.it> >> >> cognome = gets.chomp.downcase >> cognome = cognome.split("a","e","i","o","u") >> > > Il modo idiomatico per splittare una stringa in Ruby sulla base di un > pattern qualunque il metodo scan della standard library. Ad esempio: > > "stringa".scan(/[^aeiou]{1}/) perch {1} ? Sar che non son tanto sveglio, ma penso non serva. -- twitter: @riffraff blog (en, it): www.riffraff.info riffraff.blogsome.com work: circleme.com
on 2013-01-24 17:35
2013/1/24 gabriele renzi <rff.rff@gmail.com> > 2013/1/24 Stefano Pigozzi <stefano.pigozzi@gmail.com>: > perch {1} ? > Sar che non son tanto sveglio, ma penso non serva. Sei sveglissimo, ho fatto di corsa :) {1} superfluo per produrre raggruppamenti di un solo carattere. E' invece carino per produrre gruppi di n caratteri con {n}.
on 2013-01-24 17:41
Cerco di destreggiarmi tra le risposte, anche se non è facile riuscire a
capire tutto al volo :D
Per il cognome ho fatto così, troppo articolato?
puts "Inserisci il tuo cognome: "
cognome = gets.chomp.downcase
cognome = cognome.gsub(/ /,'')
cognome_vocali = cognome.gsub(/[bcdfghyjlmnpqrstvwz]/,'')
cognome_consonanti = cognome.gsub(/[aeiou]/,'')
puts cognome_vocali
puts cognome_consonanti
if cognome.length<3
cognome_ok = cognome_consonanti + cognome_vocali + "xx"
cognome_ok = cognome_ok.slice!(0..2)
else
if cognome_consonanti.length < 3
cognome_ok = cognome_consonanti + cognome_vocali
cognome_ok = cognome_ok.slice!(0..2)
else if
cognome_ok = cognome_consonanti.slice!(0..2)
end
end
end
puts cognome_ok
gets
on 2013-01-24 18:04
Il giorno 24 gennaio 2013 17:41, ilgu G. <gurnaz@live.it> ha scritto: > puts cognome_vocali > > Non ho controllato la logica. Comunque un piccolo consiglio :) Per uno script al volo imparando ruby va bene. Ma per fare un vero programma --> pensalo ad oggetti Practical Object Oriented Design in Ruby http://goo.gl/RLa7P Design Patterns in Ruby http://goo.gl/bCuLP Meno if e pi class :) http://matteo.vaccari.name/blog/archives/127 S.
on 2013-01-24 18:24
Devo sviluppare la giusta mentalità giusta, sono più abituato a fare giri assurdi piuttosto che a "semplificarmi" la vita :(
on 2013-01-24 18:40
Sto recuperando un "plugin" che avevo fatto un paio d'anni fa per il calcolo del codice fiscale con Rails. Gli do una pulita e lo carico su github. Dubito che sia compatibile con la 3.2, ma a fini didattici pu essere interessante. -f
on 2013-01-25 13:40
Ti consiglio di studiare: http://pragprog.com/book/achbd/the-rspec-book Ti spiega un modo "sano" di lavorare. Ciao, Matteo Il giorno 24 gennaio 2013 17:24, ilgu G. <gurnaz@live.it> ha scritto:
on 2013-01-25 13:48
Il giorno 25 gennaio 2013 13:39, Matteo Collina <matteo.collina@gmail.com>ha scritto: > Ti consiglio di studiare: http://pragprog.com/book/achbd/the-rspec-book > Ti spiega un modo "sano" di lavorare. > :-) +1 Aggiungo http://www.amazon.com/Test-Driven-Development-Kent... http://www.growing-object-oriented-software.com/ http://www.amazon.com/Refactoring-Improving-Design... Gli esempi non sono in ruby ma aiutano ;) S.
on 2013-01-25 14:30
2013/1/25 Sergio Berisso <sergio.berisso@gmail.com> > > Ti consiglio di studiare: http://pragprog.com/book/achbd/the-rspec-book > > Ti spiega un modo "sano" di lavorare. > > +1 > +1 > Aggiungo > http://www.growing-object-oriented-software.com/ Questo libro, anche se Java, mi sento di stra-consigliarlo: mi ha aperto gli occhi sul TDD e sul come scrivere "buoni" test. Andrea
on 2013-01-25 14:47
E qualunque cosa dica un certo DHH, ignoralo. :-) +1 per il TDD, ti cambia la vita! -- Luca Pradovera luca.pradovera@gmail.com +39 346 4296868 Il giorno 24/gen/2013, alle ore 18:24, ilgu G. <gurnaz@live.it> ha scritto:
on 2013-01-25 14:53
Il giorno 25 gennaio 2013 14:46, Luca Pradovera <luca.pradovera@gmail.com>ha scritto: > E qualunque cosa dica un certo DHH, ignoralo. :-) > Che dice ? Forse me lo sono perso. Per DHH il TDD non serve ? Che poi magari ci sono casi particolari dove non si usa, non siamo integralisti :-) > +1 per il TDD, ti cambia la vita! > Sui progetti da mantenere (a lungo) nel tempo decisamente consigliato. S.
Please log in before posting. Registration is free and takes only a minute.
Existing account
(Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
Log in with Google account | Log in with Yahoo account
No account? Register here.