C,
pasted
on Mar 23:
|
#include <ctype.h>
#include <stdio.h>
#include <string.h>
char DammitImMad[] =
"Dammit I’m mad.\n"
"Evil is a deed as I live.\n"
"God, am I reviled? I rise, my bed on a sun, I melt.\n"
"To be not one man emanating is sad. I piss.\n"
"Alas, it is so late. Who stops to help?\n"
"Man, it is hot. I’m in it. I tell.\n"
"I am not a devil. I level \"Mad Dog\".\n"
"Ah, say burning is, as a deified gulp,\n"
"In my halo of a mired rum tin.\n"
"I erase many men. Oh, to be man, a sin.\n"
"Is evil in a clam? In a trap?\n"
"No. It is open. On it I was stuck.\n"
"Rats peed on hope. Elsewhere dips a web.\n"
"Be still if I fill its ebb.\n"
"Ew, a spider… eh?\n"
"We sleep. Oh no!\n"
"Deep, stark cuts saw it in one position.\n"
"Part animal, can I live? Sin is a name.\n"
"Both, one… my names are in it.\n"
"Murder? I’m a fool.\n"
"A hymn I plug, deified as a sign in ruby ash,\n"
"A Goddam level I lived at.\n"
"On mail let it in. I’m it.\n"
"Oh, sit in ample hot spots. Oh wet!\n"
"A loss it is alas (sip). I’d assign it a name.\n"
"Name not one bottle minus an ode by me:\n"
"\"Sir, I deliver. I’m a dog\"\n"
"Evil is a deed as I live.\n"
"Dammit I’m mad.\n"
;
int ispalindrome( char *sentence ) {
if( sentence && *sentence ) {
char *dst = sentence ;
char *src = dst ;
/* in place overwrite copy of just the alpha chars as lowercase.
*/
while( *src ) {
if( isalpha( *src ) )
*dst++ = tolower( *src ) ;
++src ;
}
/* look for symmetry
*/
src = sentence ;
--dst ;
while( src < dst ) {
if( *src != *dst )
return 0 ;
++src ;
--dst ;
}
}
/* return TRUE for
** symmetric strings
** NULL
** ""
*/
return 1 ;
}
void test( char *string )
{
int ret ;
printf("Sentence: >>%s<<\n", string ? string : "--NULL--") ;
ret = ispalindrome( string ) ;
printf(" becomes: >>%s<<\n", string ? string : "--NULL--") ;
printf(" is: %s palindrome.\n\n", ret ? "A" : "NOT A" ) ;
}
char *strdup_( char *s )
{
if( s ) {
int len = strlen(s) + 1 ;
char *dup = malloc( len ) ;
if( dup )
return memcpy( dup, s, len ) ;
}
return NULL ;
}
int main( int argc, char **argv )
{
test( strdup_( 0 ) ) ;
test( strdup_( "" ) ) ;
test( strdup_( "Boris#Yeltsin" ) ) ;
test( strdup_( "A Man, A Plan, A Canal - Panama!" ) );
test( DammitImMad );
return 1 ;
}
|
Output:
|
Sentence: >>--NULL--<<
becomes: >>--NULL--<<
is: A palindrome.
Sentence: >><<
becomes: >><<
is: A palindrome.
Sentence: >>Boris#Yeltsin<<
becomes: >>borisyeltsinn<<
is: NOT A palindrome.
Sentence: >>A Man, A Plan, A Canal - Panama!<<
becomes: >>amanaplanacanalpanamal - Panama!<<
is: A palindrome.
Sentence: >>Dammit I’m mad.
Evil is a deed as I live.
God, am I reviled? I rise, my bed on a sun, I melt.
To be not one man emanating is sad. I piss.
Alas, it is so late. Who stops to help?
Man, it is hot. I’m in it. I tell.
I am not a devil. I level "Mad Dog".
Ah, say burning is, as a deified gulp,
In my halo of a mired rum tin.
I erase many men. Oh, to be man, a sin.
Is evil in a clam? In a trap?
No. It is open. On it I was stuck.
Rats peed on hope. Elsewhere dips a web.
Be still if I fill its ebb.
Ew, a spider… eh?
We sleep. Oh no!
Deep, stark cuts saw it in one position.
Part animal, can I live? Sin is a name.
Both, one… my names are in it.
Murder? I’m a fool.
A hymn I plug, deified as a sign in ruby ash,
A Goddam level I lived at.
On mail let it in. I’m it.
Oh, sit in ample hot spots. Oh wet!
A loss it is alas (sip). I’d assign it a name.
Name not one bottle minus an ode by me:
"Sir, I deliver. I’m a dog"
Evil is a deed as I live.
Dammit I’m mad.
<<
becomes: >>dammitimmadevilisadeedasilivegodamireviledirisemybedonasunimelttobenotonemanemanatingissadipissalasitissolatewhostopstohelpmanitishotiminititelliamnotadevililevelmaddogahsayburningisasadeifiedgulpinmyhaloofamiredrumtinierasemanymenohtobemanasinisevilinaclaminatrapnoitisopenonitiwasstuckratspeedonhopeelsewheredipsawebbestillififillitsebbewaspiderehwesleepohnodeepstarkcutssawitinonepositionpartanimalcanilivesinisanamebothonemynamesareinitmurderimafoolahymniplugdeifiedasasigninrubyashagoddamlevelilivedatonmailletitinimitohsitinamplehotspotsohwetalossitisalassipidassignitanamenamenotonebottleminusanodebymesirideliverimadogevilisadeedasilivedammitimmad? I’m a fool.
A hymn I plug, deified as a sign in ruby ash,
A Goddam level I lived at.
On mail let it in. I’m it.
Oh, sit in ample hot spots. Oh wet!
A loss it is alas (sip). I’d assign it a name.
Name not one bottle minus an ode by me:
"Sir, I deliver. I’m a dog"
Evil is a deed as I live.
Dammit I’m mad.
<<
is: A palindrome.
|
|