Discussione:
Verificare parola palindroma
(troppo vecchio per rispondere)
Il_Puntatore
2005-09-12 19:12:20 UTC
Permalink
Salve ragazzi, devo implementare un metodo in java che controlli se una
parola è palindroma, ovvero se leggendola al contrario visualizza la stessa
parola letta normalmente, qualcuno conosce per caso una funzione che può
fare questo? Avevo pensato a scandire la parola, e controllorare il primo
carattere con l'ultimo, il secondo con il penultimo e così via, ma essendo
la parola di tipo stringa non so come fare per accedere direttamente ad
ogni carattere di essa. Infine vorrei trovare una lista della parole
palindrome, per testare poi il mio programma, fino ad ora ne ho trovate
solo tre: anna, osso e inni, se qualcuno ne conosce altre mi faccia sapere.
Grazie a chi vorrà aiutarmi :)
--
ICQ # 84624356
MSN ***@katamail.com
Yahoo ilpuntatore
Marco
2005-09-12 19:37:04 UTC
Permalink
Post by Il_Puntatore
Salve ragazzi, devo implementare un metodo in java che controlli se una
parola è palindroma, ovvero se leggendola al contrario visualizza la stessa
parola letta normalmente, qualcuno conosce per caso una funzione che può
fare questo? Avevo pensato a scandire la parola, e controllorare il primo
carattere con l'ultimo, il secondo con il penultimo e così via, ma essendo
la parola di tipo stringa non so come fare per accedere direttamente ad
ogni carattere di essa. Infine vorrei trovare una lista della parole
palindrome, per testare poi il mio programma, fino ad ora ne ho trovate
solo tre: anna, osso e inni, se qualcuno ne conosce altre mi faccia sapere.
Grazie a chi vorrà aiutarmi :)
Provato con String.charAt(i) (restituisce il char al posto i nella stringa)?
Vincent Vega
2005-09-12 19:51:04 UTC
Permalink
Post by Il_Puntatore
Salve ragazzi, devo implementare un metodo in java che controlli se una
parola è palindroma, ovvero se leggendola al contrario visualizza la stessa
parola letta normalmente, qualcuno conosce per caso una funzione che può
fare questo? Avevo pensato a scandire la parola, e controllorare il primo
carattere con l'ultimo, il secondo con il penultimo e così via, ma essendo
la parola di tipo stringa non so come fare per accedere direttamente ad
ogni carattere di essa. Infine vorrei trovare una lista della parole
palindrome, per testare poi il mio programma, fino ad ora ne ho trovate
solo tre: anna, osso e inni, se qualcuno ne conosce altre mi faccia sapere.
Grazie a chi vorrà aiutarmi :)
Una scorsa alla documentazione di string?

http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html#charAt(int)
uL
2005-09-13 00:21:36 UTC
Permalink
Post by Vincent Vega
Una scorsa alla documentazione di string?
http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html#charAt(int)
Alternativa per pigri:

public boolean isPalindrome(String text) {
return new StringBuilder(text).reverse().toString().equals(text)
}

Per le ottimizzazioni, tipo riusare l'istanza dello StringBuilder, c'è
sempre tempo: però non mi ci stava più nella riga :)

uL
--
questo articolo e` stato inviato via web dal servizio gratuito
http://www.newsland.it/news segnala gli abusi ad ***@newsland.it
Vincent Vega
2005-09-13 08:31:18 UTC
Permalink
Concordo che questi piccoli problemi, risolvibili in tanti modi più o
meno eleganti e/o efficienti, sono un "termometro" di quanto una persona
sia pigra nell'affrontare la programmazione.
pole
2005-09-13 08:51:46 UTC
Permalink
Post by Vincent Vega
Concordo che questi piccoli problemi, risolvibili in tanti modi più o
meno eleganti e/o efficienti, sono un "termometro" di quanto una persona
sia pigra nell'affrontare la programmazione.
IMHO spesso nella programmazione "pigro è meglio".
Per tre motivi:

1) perchè può essere pigro chi conosce bene il linguaggio e le sue librerie

2) perché meno scrivi e meno probabilità hai di introdurre bug (alla H.
Ford :-) )

3) perché spesso il codice pigro (senza arrivare agli eccessi) è più
"bello" e di facile comprensione. P.e. il codice di ugo è secondo me
molto più chiaro di quanto non lo sarebbe un loop con vari charAt(),
oltre che probabilmente anche più performante.

pole
--
ammentos - a lightweight persistence framework for JDK5
http://www.sourceforge.net/projects/ammentos
http://ammentos.biobytes.it
Vincent Vega
2005-09-13 09:22:01 UTC
Permalink
Post by pole
IMHO spesso nella programmazione "pigro è meglio".
Sono d'accordo che pigro è meglio. Ma permetti, se un piccolo problema
(praticamente didattico) ha più soluzioni e non ne trovi neanche una
siamo evidentemente all'eccesso.
pole
2005-09-13 09:28:53 UTC
Permalink
Post by Vincent Vega
Sono d'accordo che pigro è meglio. Ma permetti, se un piccolo problema
(praticamente didattico) ha più soluzioni e non ne trovi neanche una
siamo evidentemente all'eccesso.
LOL :)
--
ammentos - a lightweight persistence framework for JDK5
http://www.sourceforge.net/projects/ammentos
http://ammentos.biobytes.it
Il_Puntatore
2005-09-13 17:34:18 UTC
Permalink
Concordo che questi piccoli problemi, risolvibili in tanti modi più o meno
eleganti e/o efficienti, sono un "termometro" di quanto una persona sia
pigra nell'affrontare la programmazione.
Grazie per i tanti consigli, comunque ho risolto il problema, prendendo la
stringa iniziale e copiandola al contrario in un'altra stringa, poi le
confronto, se sono uguali la stringa è palindroma, altrimenti non lo è. Come
potrebbe definirsi questa soluzione, da programmatore pigro o no? :-)
--
ICQ # 84624356
MSN ***@katamail.com
Yahoo ilpuntatore
Vincent Vega
2005-09-13 17:53:07 UTC
Permalink
Post by Il_Puntatore
Grazie per i tanti consigli, comunque ho risolto il problema, prendendo la
stringa iniziale e copiandola al contrario in un'altra stringa, poi le
confronto, se sono uguali la stringa è palindroma, altrimenti non lo è. Come
potrebbe definirsi questa soluzione, da programmatore pigro o no? :-)
Intanto da programmatore ;-) e scusa se è poco.
uL
2005-09-13 18:38:42 UTC
Permalink
Post by Il_Puntatore
Grazie per i tanti consigli, comunque ho risolto il problema, prendendo la
stringa iniziale e copiandola al contrario in un'altra stringa, poi le
confronto, se sono uguali la stringa è palindroma, altrimenti non lo è. Come
potrebbe definirsi questa soluzione, da programmatore pigro o no? :-)
è esattamente quella che ti ho postato, solo che la copia al contrario la
fa già la classe StringBuilder (e la "vecchia" StringBuffer)

direi quindi non pigro e non lettore ;)

uL
--
questo articolo e` stato inviato via web dal servizio gratuito
http://www.newsland.it/news segnala gli abusi ad ***@newsland.it
Augusto Sassaroli
2005-09-14 13:11:19 UTC
Permalink
Post by Il_Puntatore
Grazie per i tanti consigli, comunque ho risolto il problema, prendendo la
stringa iniziale e copiandola al contrario in un'altra stringa, poi le
confronto, se sono uguali la stringa è palindroma, altrimenti non lo è.
Come potrebbe definirsi questa soluzione, da programmatore pigro o no? :-)
A me pare che nelle intenzioni di chi ti ha posto il problema (è un
esercizio per l'universita', no?)
ci fosse una soluzione che prevedesse l'uso dell'iterazione su un metodo che
chiama se stesso.

Se fosse cosi', la tua soluzione, se pur 'pigra', avrebbe un voto basso...

Ciao,
Augusto
CarMas
2005-09-13 08:34:33 UTC
Permalink
Post by Il_Puntatore
solo tre: anna, osso e inni, se qualcuno ne conosce altre mi faccia sapere.
Google palindromi:
Aerea
Afa
Aia
Ala
Ama
Anilina
Anna
Arerà
Ava
Avallava
Aveva
Ereggere
Esose
Ingegni
Kayak
Onorarono
Ossesso
Ottetto
Radar
Otto

Salas (?)
Accavallavacca (?)

Saluti
CarMas
matish
2005-09-13 10:49:43 UTC
Permalink
Ero intento nella lettura di una rivista "specializzata" quando Il_Puntatore
Post by Il_Puntatore
Infine vorrei trovare una lista
della parole palindrome
Scrivi un programma che generi stringhe palindrome :)

Algoritmo:

estrai un numero L tra 1 e Max_Lenght
S e' la nuova stringa

if( L è dispari) {
estrai un numero tra il codice ascii di a e quello di z.
insirisci il carattere estratto in S.
}

for (i=0; i<L; i++) {
scegli a caso un numero tra il codice ascii di a e quello di z
appendi il carattere all'inizio e alla fine della stringa
}
--
chi sono e soprattutto chi non sono:
http://www.softeaware.it
CarMas
2005-09-13 11:08:29 UTC
Permalink
Post by matish
for (i=0; i<L; i++) {
scegli a caso un numero tra il codice ascii di a e quello di z
appendi il carattere all'inizio e alla fine della stringa
}
Interessante, ma cosi' ti viene fuori una stringa che potrebbe essere
piu' lunga di Max_Length. Prendi proprio il caso di L=Max_Length e viene
lunga il doppio!
(sottigliezze)

Saluti
CarMas
matish
2005-09-13 11:17:57 UTC
Permalink
Ero intento nella lettura di una rivista "specializzata" quando CarMas mi ha
Post by CarMas
Prendi proprio il caso di L=Max_Length e viene
lunga il doppio!
(sottigliezze)
certo hai ragione, Max_length è un nome di variabile come un altro :)
Insomma il senso si capisce, quindi dovrebbe anche essere chiaro come fare
una stringa lungha Max_length :)
anzi avrei anche dovuto contare il carattere già aggiunto all'inizio in caso
di stringa dispari, ma non credo che qui sia così importante, era giusto
un'idea di massima.

Ciao!
--
chi sono e soprattutto chi non sono:
http://www.softeaware.it
matish
2005-09-14 16:57:17 UTC
Permalink
Ero intento nella lettura di una rivista "specializzata" quando Il_Puntatore
Post by Il_Puntatore
Salve ragazzi, devo implementare un metodo in java che controlli se una
parola è palindroma
scusa, un'altra idea stupida, probabilmente gradita come soluzione
accademica :)

passo base:
una stringa è palindroma se ha un numero di caratteri <=1

passo induttivo:
una stringa di n caratteri è palindroma se il primo e l'ultimo carattere
sono uguali ed è palindroma la stringa di n-2 caratteri ottenuta dalla
prima eliminando il primo e l'ultimo.

Ciao
--
chi sono e soprattutto chi non sono:
http://www.softeaware.it
Loading...