Difference between revisions of "Palindroma"
Jump to navigation
Jump to search
Line 44: | Line 44: | ||
#include <string.h> | #include <string.h> | ||
+ | #ifdef REC | ||
+ | int palin(char s[], int i, int f){ | ||
+ | if (s[i]!=s[f]) | ||
+ | return 0; | ||
+ | if (i>=f) | ||
+ | return 1; | ||
+ | return palin(s, i+1, f-1); | ||
+ | } | ||
+ | |||
+ | int palindroma(char s[]){ | ||
+ | if (strlen(s)<2) | ||
+ | return 1; | ||
+ | return palin(s, 0, strlen(s)-1); | ||
+ | } | ||
+ | #else | ||
int palindroma(char *s) { | int palindroma(char *s) { | ||
char *t; | char *t; | ||
Line 50: | Line 65: | ||
return 1; | return 1; | ||
} | } | ||
+ | #endif | ||
+ | |||
#ifdef DEBUGMAIN | #ifdef DEBUGMAIN |
Revision as of 03:52, 30 October 2013
Visto che qui non succede nulla, inizio io:
Ecco una implementazione in python3... chi mi propone altre soluzioni alternative?
#!/usr/bin/env python3
def palindrome(x):
if len(x) < 2: return True
else:
if x[0] == x[-1]:
return palindrome(x[1:-1])
else:
return False
if __name__ == "__main__":
s=input("type in a string: ")
print("is {} palindrome? {}".format(s,"true" if palindrome(s) else "false"))
Domenique ha proposto questa funzione in C:
int palindroma(char *pnt){
int dim=strlen(pnt)-1;
int l=dim/2;
int k;
for(k=0;k<=l;k++)
{
if(pnt[k]!=pnt[dim])
return 0;
else
dim--;
}
return 1;
}
altre proposte? Cosa ne dite di questa soluzione?
#include <stdio.h>
#include <string.h>
#ifdef REC
int palin(char s[], int i, int f){
if (s[i]!=s[f])
return 0;
if (i>=f)
return 1;
return palin(s, i+1, f-1);
}
int palindroma(char s[]){
if (strlen(s)<2)
return 1;
return palin(s, 0, strlen(s)-1);
}
#else
int palindroma(char *s) {
char *t;
for (t=s+(strlen(s)-1); s < t; s++, t--)
if (*t != *s) return 0;
return 1;
}
#endif
#ifdef DEBUGMAIN
int main(int argc, char *argv[])
{
if (argc < 2) return -1;
printf("%s: %se\' una stringa palindroma\n",argv[1],palindroma(argv[1])?"":"non ");
}
#endif
per compilare il main di prova chiamate il compilatore con il comando seguente
gcc -DDEBUGMAIN -o pali pali.c
(ovviamente mutatis mutandis, se il vostro sorgente non si chiama pali come il mio)
Chi ha voglia di fare una soluzione iterativa in Python e ricorsiva in C?