/*
* simpleEncode.c
*
* reads in a permutation of the alphabet then encodes
* lower case letters using that permutation
* module 4 template code you asked for - might need some cleaning up...
*
* Created by Julian Saknussemm on 11/09/1752
* Licensed under Creative Commons BY 3.0.
*
*/
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#define STOP -1
#define ALPHABET_SIZE 26
char encode ( int plainChar, char * permuation) ;
void testEncode ( void ) ;
int main ( int argc, char * argv[ ] ) {
testEncode( ) ;
//char permutation[ALPHABET_SIZE];
//
//scanf ("%s", permutation);
//
//// getchar() reads and returns one character from the keyboard
//// returns -1 when the input is finished / end-of-file is reached
//// signal this from the kayboard by pressing ^D in linux/^Z windows
//int plainCharacter = getchar();
//while (plainCharacter != STOP) {
// int encodedCharacter = encode (plainCharacter, permutation);
// printf ("%c", encodedCharacter);
// plainCharacter = getchar();
//}
return EXIT_SUCCESS;
}
void testEncode ( void ) {
assert ( encode
( 'A' , "abcdefghijklmnopqrstuvwxyz" ) == 'A' ) ; assert ( encode
( '?' , "abcdefghijklmnopqrstuvwxyz" ) == '?' ) ; assert ( encode
( ' ' , "abcdefghijklmnopqrstuvwxyz" ) == ' ' ) ; assert ( encode
( '\n ' , "abcdefghijklmnopqrstuvwxyz" ) == '\n ' ) ;
assert ( encode
( 'a' , "abcdefghijklmnopqrstuvwxyz" ) == 'a' ) ; assert ( encode
( 'm' , "abcdefghijklmnopqrstuvwxyz" ) == 'm' ) ; assert ( encode
( 'z' , "abcdefghijklmnopqrstuvwxyz" ) == 'z' ) ;
assert ( encode
( 'a' , "bcdefghijklmnopqrstuvwxyza" ) == 'b' ) ; assert ( encode
( 'm' , "bcdefghijklmnopqrstuvwxyza" ) == 'n' ) ; assert ( encode
( 'z' , "bcdefghijklmnopqrstuvwxyza" ) == 'a' ) ;
assert ( encode
( 'a' , "qwertyuiopasdfghjklzxcvbnm" ) == 'q' ) ; assert ( encode
( 'b' , "qwertyuiopasdfghjklzxcvbnm" ) == 'w' ) ; assert ( encode
( 'z' , "qwertyuiopasdfghjklzxcvbnm" ) == 'm' ) ; }
char encode ( int plainChar, char * permuation) {
// Initialization
char returnValue;
// Is an alphabetical character
if ( 'a' <= plainChar && plainChar <= 'z' ) {
returnValue = & permutation + sizeof ( int ) * ( 'a' + plainChar) ;
} else if ( 'A' <= plainChar && plainChar <= 'Z' ) {
returnValue = & permutation + sizeof ( int ) * ( 'A' + plainChar) ;
}
return returnValue;
}
LyoKICogIHNpbXBsZUVuY29kZS5jCiAqCiAqICByZWFkcyBpbiBhIHBlcm11dGF0aW9uIG9mIHRoZSBhbHBoYWJldCB0aGVuIGVuY29kZXMKICogIGxvd2VyIGNhc2UgbGV0dGVycyB1c2luZyB0aGF0IHBlcm11dGF0aW9uCiAqICBtb2R1bGUgNCB0ZW1wbGF0ZSBjb2RlIHlvdSBhc2tlZCBmb3IgLSBtaWdodCBuZWVkIHNvbWUgY2xlYW5pbmcgdXAuLi4KKgogKiAgQ3JlYXRlZCBieSBKdWxpYW4gU2FrbnVzc2VtbSBvbiAxMS8wOS8xNzUyCiAqICBMaWNlbnNlZCB1bmRlciBDcmVhdGl2ZSBDb21tb25zIEJZIDMuMC4KICoKICovCgojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgojaW5jbHVkZSA8YXNzZXJ0Lmg+CgojZGVmaW5lIFNUT1AgLTEKI2RlZmluZSBBTFBIQUJFVF9TSVpFIDI2CgpjaGFyIGVuY29kZSAoaW50IHBsYWluQ2hhciwgY2hhciAqcGVybXVhdGlvbik7CnZvaWQgdGVzdEVuY29kZSAodm9pZCk7CgppbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkgewoKICAgdGVzdEVuY29kZSgpOwoKICAgLy9jaGFyIHBlcm11dGF0aW9uW0FMUEhBQkVUX1NJWkVdOwogICAvLwogICAvL3NjYW5mICgiJXMiLCBwZXJtdXRhdGlvbik7CiAgIC8vCiAgIC8vLy8gZ2V0Y2hhcigpIHJlYWRzIGFuZCByZXR1cm5zIG9uZSBjaGFyYWN0ZXIgZnJvbSB0aGUga2V5Ym9hcmQKICAgLy8vLyByZXR1cm5zIC0xIHdoZW4gdGhlIGlucHV0IGlzIGZpbmlzaGVkIC8gZW5kLW9mLWZpbGUgaXMgcmVhY2hlZAogICAvLy8vIHNpZ25hbCB0aGlzIGZyb20gdGhlIGtheWJvYXJkIGJ5IHByZXNzaW5nIF5EIGluIGxpbnV4L15aIHdpbmRvd3MKICAgLy9pbnQgcGxhaW5DaGFyYWN0ZXIgPSBnZXRjaGFyKCk7CiAgIC8vd2hpbGUgKHBsYWluQ2hhcmFjdGVyICE9IFNUT1ApIHsKICAgLy8gICBpbnQgZW5jb2RlZENoYXJhY3RlciA9IGVuY29kZSAocGxhaW5DaGFyYWN0ZXIsIHBlcm11dGF0aW9uKTsKICAgLy8gICBwcmludGYgKCIlYyIsIGVuY29kZWRDaGFyYWN0ZXIpOwogICAvLyAgIHBsYWluQ2hhcmFjdGVyID0gZ2V0Y2hhcigpOwogICAvL30KICAgcmV0dXJuIEVYSVRfU1VDQ0VTUzsKfQoKdm9pZCB0ZXN0RW5jb2RlICh2b2lkKSB7CiAgIGFzc2VydCAoZW5jb2RlICgnQScsImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IikgPT0gJ0EnKTsKICAgYXNzZXJ0IChlbmNvZGUgKCc/JywiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiKSA9PSAnPycpOwogICBhc3NlcnQgKGVuY29kZSAoJyAnLCJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiIpID09ICcgJyk7CiAgIGFzc2VydCAoZW5jb2RlICgnXG4nLCJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiIpID09ICdcbicpOwoKICAgYXNzZXJ0IChlbmNvZGUgKCdhJywiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiKSA9PSAnYScpOwogICBhc3NlcnQgKGVuY29kZSAoJ20nLCJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiIpID09ICdtJyk7CiAgIGFzc2VydCAoZW5jb2RlICgneicsImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IikgPT0gJ3onKTsKCiAgIGFzc2VydCAoZW5jb2RlICgnYScsImJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXphIikgPT0gJ2InKTsKICAgYXNzZXJ0IChlbmNvZGUgKCdtJywiYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5emEiKSA9PSAnbicpOwogICBhc3NlcnQgKGVuY29kZSAoJ3onLCJiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6YSIpID09ICdhJyk7CgogICBhc3NlcnQgKGVuY29kZSAoJ2EnLCJxd2VydHl1aW9wYXNkZmdoamtsenhjdmJubSIpID09ICdxJyk7CiAgIGFzc2VydCAoZW5jb2RlICgnYicsInF3ZXJ0eXVpb3Bhc2RmZ2hqa2x6eGN2Ym5tIikgPT0gJ3cnKTsKICAgYXNzZXJ0IChlbmNvZGUgKCd6JywicXdlcnR5dWlvcGFzZGZnaGprbHp4Y3Zibm0iKSA9PSAnbScpOwp9CgpjaGFyIGVuY29kZSAoaW50IHBsYWluQ2hhciwgY2hhciAqcGVybXVhdGlvbikgewoJLy8gSW5pdGlhbGl6YXRpb24gCgljaGFyIHJldHVyblZhbHVlOwoJLy8gSXMgYW4gYWxwaGFiZXRpY2FsIGNoYXJhY3RlciAKCWlmKCdhJyA8PSBwbGFpbkNoYXIgJiYgcGxhaW5DaGFyIDw9ICd6JykgewoJCXJldHVyblZhbHVlID0gJnBlcm11dGF0aW9uICsgc2l6ZW9mKGludCkqKCdhJytwbGFpbkNoYXIpOyAKCX0gZWxzZSBpZiAoJ0EnIDw9IHBsYWluQ2hhciAmJiBwbGFpbkNoYXIgPD0gJ1onKXsJCQoJCXJldHVyblZhbHVlID0gJnBlcm11dGF0aW9uICsgc2l6ZW9mKGludCkqKCdBJytwbGFpbkNoYXIpOyAKCX0KCQoJcmV0dXJuIHJldHVyblZhbHVlOyAKfQ==