2018-12-05 17:50:47 +01:00
# include <stdio.h>
# include <stdlib.h>
2018-12-05 21:21:46 +01:00
# include <sys/stat.h>
2018-12-05 17:50:47 +01:00
2018-12-05 18:52:24 +01:00
int isSameLetter ( char a , char b ) {
char diff = ( a > b ) ? a - b : b - a ;
return diff = = 32 ;
}
2018-12-05 21:21:46 +01:00
int processArray ( char * input , int length ) {
2018-12-05 18:52:24 +01:00
int outputLength = 0 ;
for ( int i = 0 ; i < length - 1 ; i + + ) {
if ( isSameLetter ( input [ i ] , input [ i + 1 ] ) = = 1 ) {
2018-12-05 21:21:46 +01:00
printf ( " reacting: %c%c \n " , input [ i ] , input [ i + 1 ] ) ;
2018-12-05 18:52:24 +01:00
i + + ;
} else {
2018-12-05 21:21:46 +01:00
input [ outputLength ] = input [ i ] ;
2018-12-05 18:52:24 +01:00
outputLength + + ;
}
}
2018-12-05 21:21:46 +01:00
return outputLength + 1 ;
2018-12-05 18:52:24 +01:00
}
int main ( ) {
2018-12-05 21:21:46 +01:00
struct stat stbuffer ;
FILE * inputFile = fopen ( " input " , " r " ) ;
fstat ( fileno ( inputFile ) , & stbuffer ) ! = - 1 ;
int inSize = stbuffer . st_size ;
//inSize = 40;
char * input = malloc ( inSize ) ;
fgets ( input , inSize , inputFile ) ;
int lastLength = inSize ;
printf ( " %s \n " , input ) ;
int outLength = inSize ;
do {
lastLength = outLength ;
outLength = processArray ( input , lastLength ) ;
printf ( " %s \n " , input ) ;
printf ( " %d \n " , outLength ) ;
} while ( lastLength ! = outLength ) ;
printf ( " %d \n " , outLength ) ;
fclose ( inputFile ) ;
free ( input ) ;
2018-12-05 18:52:24 +01:00
return 0 ;
}