CompNeuro
Newbie
Offline
Activity: 13
Merit: 0
|
|
January 15, 2018, 11:43:18 PM |
|
When read according to the drips clockwise, the very start of the decode you get the following word relevant to the painting: *MPSRI* Prism.
Can you please elaborate on this? I've been trying to explore decoding via this method over the past day or so, but I haven't had much luck. I also do not understand how DNA/RNA codons are supposed to be paired (I mean obviously in groups of three, but how are you proposing those groups of three be created?). I wrote some more, fairly badly executed, code that can decode the flames based on the amino acids (posted below) and I've tried reading the flames in all sorts of ways, But haven't found anything interesting..., So I'm curious by what you mean according to the drips? For anyone who wants it.., although I'm sure you could do better, here is my shitty code. To use it for DNA/RNA decypher: ./debacon -f filename -D | less The File must be a text file containing no more then 16 lines. Also, It doesn't recognize dna/rna codons via the letters atcg or aucg, but instead c is either b or p (depending if you wanna call the color purple or blue), a is o (for orange, maybe it's red, but I think the flames look orange), t or u is y (for yellow), and g is still g (for green) Sample input for a track of flames: ypygygogyp #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h>
void shift(char* string); int getlines(FILE* stream, char** line, ssize_t* nread, int* ntot, size_t len); char* normalize(char* string, int nflag); void clean(char* string); void divideString(char* string, int n); void debacon(char* string, int btype); void flip(char* string); void deHex(char* string); void deRNA(char* string); int verbose = 0;
int main(int argc, char* argv[]){ FILE* scram; int opt; int fcheck = 0; int nflag = 0; int btype = 0; int bitflip = 0; char** line = malloc(sizeof(char *) * 16); int i = 0; int j = 0; int k = 0; size_t len = 0; ssize_t nread[16]; int ntot = 0; char buffer[1024]; char temp[1024]; int runBacon = 0; int runHex = 0; int runDNA = 0;
while((opt = getopt(argc, argv, "hvf:a:n:i:HBD")) != -1){ switch(opt){ case 'h': printf("\nUSAGE: ./decode -f path_to_input_file type_of_decode options\n"); printf("OPTIONS: -f [FILENAME] to specify input file\n"); printf("OPTIONS: -v for verbose mode\n"); printf("OPTIONS: -a [a or b] to specify which type of bacon alphebet (Bacon Cypher Only)\n"); printf("OPTIONS: -n [0 or 1 or 2 or 3] to specify how the bitstring should be read\n"); printf("OPTIONS: -i [t or f] to specify how 0's and 1's are read from the bitstring\n"); printf("OPTIONS: -B for Bacon Cypher\n"); printf("OPTIONS: -H for HEX conversion\n"); printf("OPTIONS: -D for DNA RNA Stop Codon Cypher\n"); printf("OPTIONS: -h displays this menu\n"); printf("\nEXAMPLE: ./decode -f file -B -a b -n 2 -i f -v\n"); exit(EXIT_SUCCESS); case 'f': scram = fopen(optarg, "r"); fcheck = 1; break; case 'v': printf("\nTurning on Verbose Mode...\n"); verbose = 1; break; case 'a': if(optarg[0] == 'a' || optarg[0] == 'A'){ btype = 0; } else if(optarg[0] == 'b' || optarg[0] == 'B'){ btype = 1; } else{ printf("\nERROR: Invalid argument for for -a option, must be a or b\n"); exit(EXIT_FAILURE); } break; case 'n': if(atoi(optarg) < 4){ nflag = atoi(optarg); } else{ printf("\nERROR: Invalid argument for -n option, must be 0, 1, 2, or 3\n"); } break; case 'i': if(optarg[0] == 't' || optarg[0] == 'T'){ bitflip = 1; } break; case 'B': if(runHex == 1){ printf("\nERROR: Cannot run Bacon Cypher and Hex conversion together\n"); exit(EXIT_FAILURE); } else if(runDNA == 1){ printf("\nERROR: Cannot run Bacon Cypher and DNA RNA conversion together\n"); exit(EXIT_FAILURE); } else{ runBacon = 1; } break; case 'H': if(runBacon == 1){ printf("\nERROR: Cannot run Bacon Cypher and Hex conversion together\n"); exit(EXIT_FAILURE); } else if(runDNA== 1){ printf("\nERROR: Cannot run DNA RNA Cypher and Hex conversion together\n"); exit(EXIT_FAILURE); } else{ runHex = 1; } break; case 'D': if(runHex == 1){ printf("\nERROR: Cannot run Hex conversion and DNA RNA Cypher together\n"); exit(EXIT_FAILURE); } else if(runBacon == 1){ printf("\nERROR: Cannot run Bacon Cypher and DNA RNA Cypher together\n"); exit(EXIT_FAILURE); } else{ runDNA = 1; } break; default: printf("ERROR: Unrecognized option, try -h\n"); exit(EXIT_FAILURE); } }
if(fcheck == 0){ printf("ERROR: Must specify input file, try -h\n"); exit(EXIT_FAILURE); } else if(argc <=3){ printf("ERROR: Must specify -H, -B, or -D.., try -h for help\n"); }
i = getlines(scram, line, nread, &ntot, len); if(verbose == 1){ for(j = 0; j < i; j++){ printf("Retrieved line of length %zu:\n", nread[j]); printf("line %i is: %s\n", j, line[j]); } printf("Total Characters Read: %i\n\n", ntot); j = 0; }
if(runDNA == 1){ for(j = 0; j < i; j++){ line[j] = normalize(line[j], 8); } j = 1; strcpy(buffer, line[0]); for(j = 1; j < i; j++){ strcat(buffer, line[j]); }
if(verbose == 1){ printf("\nCombined String: %s\n", buffer); }
for(k = 0; k <= strlen(buffer); k++){ divideString(buffer, 3); if(verbose == 1){ printf("\nString split into 3's for decoding:\n"); printf("%s\n", buffer); printf("\nDNA RNA Cypher Decode\n"); } deRNA(buffer); shift(buffer); } for(j = 0; j <= i; j++){ free(line[j]); } fclose(scram); return 0; }
for(j = 0; j < i; j++){ if(verbose == 1){ printf("Normalizeing line %i\n", j); } if(bitflip == 1){ flip(line[j]); } line[j] = normalize(line[j], nflag); if(verbose == 1){ printf("Line %i is now: %s\n", j, line[j]); } } j = 1; strcpy(buffer, line[0]); for(j = 1; j < i; j++){ strcat(buffer, line[j]); } if(verbose == 1){ printf("\nCombined String: %s\n", buffer); }
if(runBacon == 1){ for(k = 0; k <= strlen(buffer); k++){ divideString(buffer, 5); if(verbose == 1){ printf("\nString split into 5's for decoding:\n"); printf("%s\n", buffer); printf("\nDebaconing:\n"); } debacon(buffer, btype); shift(buffer); } }
if(runHex == 1){ for(k = 0; k <= strlen(buffer); k++){ if(strlen(buffer)%4 != 0){ switch(strlen(buffer)%4){ case 1: temp[0] = '0'; temp[1] = '0'; temp[2] = '0'; temp[3] = '\0'; strcat(temp, buffer); break; case 2: temp[0] = '0'; temp[1] = '0'; temp[2] = '\0'; strcat(temp, buffer); break; case 3: temp[0] = '0'; temp[1] = '\0'; strcat(temp, buffer); break; default: printf("Something bad happened...\n"); break; } } else{ strcpy(temp, buffer); } divideString(temp, 4); if(verbose == 1){ printf("\nString split into 4's\n"); printf("%s\n", temp); printf("\nConverting to Hex:\n"); } deHex(temp); clean(temp); shift(buffer); } } j = 0; for(j = 0; j <= i; j++){ free(line[j]); } free(line); fclose(scram); return 0; }
void flip(char *string){ char *i; for(i=string; *i; i++){ if(*i == '1'){ *i = '0'; } else if(*i == '0'){ *i = '1'; } } }
void deRNA(char *string){ char buffer[4]; int i = 0;
while(string[i] != '\0'){ buffer[0] = string[i]; i++; buffer[1] = string[i]; i++; buffer[2] = string[i]; buffer[3] = '\0'; i+=2;
if(strcmp(buffer, "yyy") == 0 || strcmp(buffer, "YYY") == 0 || strcmp(buffer, "ttt") == 0 || strcmp(buffer, "TTT") == 0 || strcmp(buffer, "uuu") == 0 || strcmp(buffer, "UUU") == 0){ printf("F"); } if(strcmp(buffer, "yyp") == 0 || strcmp(buffer, "YYP") == 0 || strcmp(buffer, "yyb") == 0 || strcmp(buffer, "YYB") == 0){ printf("F"); } if(strcmp(buffer, "yyo") == 0 || strcmp(buffer, "YYO") == 0){ printf("L"); } if(strcmp(buffer, "yyg") == 0 || strcmp(buffer, "YYG") == 0){ printf("L"); } if(strcmp(buffer, "pyy") == 0 || strcmp(buffer, "PYY") == 0 || strcmp(buffer, "byy") == 0 || strcmp(buffer, "BYY") == 0){ printf("L"); } if(strcmp(buffer, "pyp") == 0 || strcmp(buffer, "PYP") == 0 || strcmp(buffer, "byb") == 0 || strcmp(buffer, "BYB") == 0){ printf("L"); } if(strcmp(buffer, "pyo") == 0 || strcmp(buffer, "PYO") == 0 || strcmp(buffer, "byr") == 0 || strcmp(buffer, "BYR") == 0){ printf("L"); } if(strcmp(buffer, "pyg") == 0 || strcmp(buffer, "PYG") == 0 || strcmp(buffer, "pyg") == 0 || strcmp(buffer, "PYG") == 0){ printf("L"); } if(strcmp(buffer, "oyy") == 0 || strcmp(buffer, "OYY") == 0){ printf("I"); } if(strcmp(buffer, "oyp") == 0 || strcmp(buffer, "OYP") == 0 || strcmp(buffer, "ryb") == 0 || strcmp(buffer, "RYB") == 0){ printf("I"); } if(strcmp(buffer, "oyo") == 0 || strcmp(buffer, "OYO") == 0){ printf("I"); } if(strcmp(buffer, "oyg") == 0 || strcmp(buffer, "OYG") == 0){ printf(" - M - "); } if(strcmp(buffer, "gyy") == 0 || strcmp(buffer, "GYY") == 0){ printf("V"); } if(strcmp(buffer, "gyp") == 0 || strcmp(buffer, "GYP") == 0 || strcmp(buffer, "gyb") == 0 || strcmp(buffer, "GYB") == 0){ printf("V"); } if(strcmp(buffer, "gyo") == 0 || strcmp(buffer, "GYO") == 0){ printf("V"); } if(strcmp(buffer, "gyg") == 0 || strcmp(buffer, "GYG") == 0){ printf("V"); } if(strcmp(buffer, "ypy") == 0 || strcmp(buffer, "YPY") == 0 || strcmp(buffer, "yby") == 0 || strcmp(buffer, "YBY") == 0){ printf("S"); } if(strcmp(buffer, "ypp") == 0 || strcmp(buffer, "YPP") == 0 || strcmp(buffer, "ybb") == 0 || strcmp(buffer, "YBB") == 0){ printf("S"); } if(strcmp(buffer, "ypo") == 0 || strcmp(buffer, "YPO") == 0 || strcmp(buffer, "ybr") == 0 || strcmp(buffer, "YBR") == 0){ printf("S"); } if(strcmp(buffer, "ypg") == 0 || strcmp(buffer, "YPG") == 0 || strcmp(buffer, "ybg") == 0 || strcmp(buffer, "YBG") == 0){ printf("S"); } if(strcmp(buffer, "ppy") == 0 || strcmp(buffer, "PPY") == 0 || strcmp(buffer, "bby") == 0 || strcmp(buffer, "BBY") == 0){ printf("P"); } if(strcmp(buffer, "ppp") == 0 || strcmp(buffer, "PPP") == 0 || strcmp(buffer, "bbb") == 0 || strcmp(buffer, "BBB") == 0){ printf("P"); } if(strcmp(buffer, "ppo") == 0 || strcmp(buffer, "PPO") == 0 || strcmp(buffer, "bbr") == 0 || strcmp(buffer, "BBR") == 0){ printf("P"); } if(strcmp(buffer, "ppg") == 0 || strcmp(buffer, "PPG") == 0 || strcmp(buffer, "bbg") == 0 || strcmp(buffer, "BBG") == 0){ printf("P"); } if(strcmp(buffer, "opy") == 0 || strcmp(buffer, "OPY") == 0 || strcmp(buffer, "rby") == 0 || strcmp(buffer, "RBY") == 0){ printf("T"); } if(strcmp(buffer, "opp") == 0 || strcmp(buffer, "OPP") == 0 || strcmp(buffer, "rbb") == 0 || strcmp(buffer, "RBB") == 0){ printf("T"); } if(strcmp(buffer, "opo") == 0 || strcmp(buffer, "OOO") == 0 || strcmp(buffer, "rbr") == 0 || strcmp(buffer, "RBR") == 0){ printf("T"); } if(strcmp(buffer, "opg") == 0 || strcmp(buffer, "OPG") == 0 || strcmp(buffer, "rbg") == 0 || strcmp(buffer, "RBG") == 0){ printf("T"); } if(strcmp(buffer, "gpy") == 0 || strcmp(buffer, "GPY") == 0 || strcmp(buffer, "gby") == 0 || strcmp(buffer, "GBY") == 0){ printf("A"); } if(strcmp(buffer, "gpp") == 0 || strcmp(buffer, "GPP") == 0 || strcmp(buffer, "gbb") == 0 || strcmp(buffer, "GBB") == 0){ printf("A"); } if(strcmp(buffer, "gpo") == 0 || strcmp(buffer, "GPO") == 0 || strcmp(buffer, "gbr") == 0 || strcmp(buffer, "GBR") == 0){ printf("A"); } if(strcmp(buffer, "gpg") == 0 || strcmp(buffer, "GPG") == 0 || strcmp(buffer, "gbg") == 0 || strcmp(buffer, "GBG") == 0){ printf("A"); } if(strcmp(buffer, "yoy") == 0 || strcmp(buffer, "YOY") == 0){ printf("Y"); } if(strcmp(buffer, "yop") == 0 || strcmp(buffer, "YOP") == 0 || strcmp(buffer, "yrb") == 0 || strcmp(buffer, "YRB") == 0){ printf("Y"); } if(strcmp(buffer, "yoo") == 0 || strcmp(buffer, "YOO") == 0){ printf(" STOP "); } if(strcmp(buffer, "yog") == 0 || strcmp(buffer, "YOG") == 0){ printf(" STOP "); } if(strcmp(buffer, "poy") == 0 || strcmp(buffer, "POY") == 0 || strcmp(buffer, "bry") == 0 || strcmp(buffer, "BRY") == 0){ printf("H"); } if(strcmp(buffer, "pop") == 0 || strcmp(buffer, "POP") == 0 || strcmp(buffer, "brb") == 0 || strcmp(buffer, "BRB") == 0){ printf("H"); } if(strcmp(buffer, "poo") == 0 || strcmp(buffer, "POO") == 0 || strcmp(buffer, "brr") == 0 || strcmp(buffer, "BRR") == 0){ printf("Q"); } if(strcmp(buffer, "pog") == 0 || strcmp(buffer, "POG") == 0 || strcmp(buffer, "brg") == 0 || strcmp(buffer, "BRG") == 0){ printf("Q"); } if(strcmp(buffer, "ooy") == 0 || strcmp(buffer, "OOY") == 0){ printf("N"); } if(strcmp(buffer, "oop") == 0 || strcmp(buffer, "OOP") == 0 || strcmp(buffer, "rrb") == 0 || strcmp(buffer, "RRB") == 0){ printf("N"); } if(strcmp(buffer, "ooo") == 0 || strcmp(buffer, "OOO") == 0){ printf("K"); } if(strcmp(buffer, "oog") == 0 || strcmp(buffer, "OOG") == 0){ printf("K"); } if(strcmp(buffer, "goy") == 0 || strcmp(buffer, "GOY") == 0){ printf("D"); } if(strcmp(buffer, "gop") == 0 || strcmp(buffer, "GOP") == 0 || strcmp(buffer, "grb") == 0 || strcmp(buffer, "GRB") == 0){ printf("D"); } if(strcmp(buffer, "goo") == 0 || strcmp(buffer, "GOO") == 0){ printf("E"); } if(strcmp(buffer, "gog") == 0 || strcmp(buffer, "GOG") == 0){ printf("E"); } if(strcmp(buffer, "ygy") == 0 || strcmp(buffer, "YGY") == 0){ printf("C"); } if(strcmp(buffer, "ygp") == 0 || strcmp(buffer, "YGP") == 0 || strcmp(buffer, "ygb") == 0 || strcmp(buffer, "YGB") == 0){ printf("C"); } if(strcmp(buffer, "ygo") == 0 || strcmp(buffer, "YGO") == 0){ printf(" STOP "); } if(strcmp(buffer, "ygg") == 0 || strcmp(buffer, "YGG") == 0){ printf("W"); } if(strcmp(buffer, "pgy") == 0 || strcmp(buffer, "PGY") == 0 || strcmp(buffer, "bgy") == 0 || strcmp(buffer, "BGY") == 0){ printf("R"); } if(strcmp(buffer, "pgp") == 0 || strcmp(buffer, "PGP") == 0 || strcmp(buffer, "bgb") == 0 || strcmp(buffer, "BGB") == 0){ printf("R"); } if(strcmp(buffer, "pgo") == 0 || strcmp(buffer, "PGO") == 0 || strcmp(buffer, "bgr") == 0 || strcmp(buffer, "BGR") == 0){ printf("R"); } if(strcmp(buffer, "pgg") == 0 || strcmp(buffer, "PGG") == 0 || strcmp(buffer, "bgg") == 0 || strcmp(buffer, "BGG") == 0){ printf("R"); } if(strcmp(buffer, "ogy") == 0 || strcmp(buffer, "OGY") == 0){ printf("S"); } if(strcmp(buffer, "ogp") == 0 || strcmp(buffer, "OGP") == 0 || strcmp(buffer, "rgb") == 0 || strcmp(buffer, "RGB") == 0){ printf("S"); } if(strcmp(buffer, "ogo") == 0 || strcmp(buffer, "OGO") == 0){ printf("R"); } if(strcmp(buffer, "ogg") == 0 || strcmp(buffer, "OGG") == 0){ printf("R"); } if(strcmp(buffer, "ggy") == 0 || strcmp(buffer, "GGY") == 0){ printf("G"); } if(strcmp(buffer, "ggp") == 0 || strcmp(buffer, "GGP") == 0 || strcmp(buffer, "ggb") == 0 || strcmp(buffer, "GGB") == 0){ printf("G"); } if(strcmp(buffer, "ggo") == 0 || strcmp(buffer, "GGO") == 0){ printf("G"); } if(strcmp(buffer, "ggg") == 0 || strcmp(buffer, "GGG") == 0){ printf("G"); } else{ printf(" "); } } printf("\n"); }
void deHex(char *string){ char buffer[5]; int i = 0;
while(string[i] != '\0'){ buffer[0] = string[i]; i++; buffer[1] = string[i]; i++; buffer[2] = string[i]; i++; buffer[3] = string[i]; buffer[4] = '\0'; i+=2;
if(strcmp(buffer, "0000") == 0){ printf("0"); } else if(strcmp(buffer, "0001") == 0){ printf("1"); } else if(strcmp(buffer, "0010") == 0){ printf("2"); } else if(strcmp(buffer, "0011") == 0){ printf("3"); } else if(strcmp(buffer, "0100") == 0){ printf("4"); } else if(strcmp(buffer, "0101") == 0){ printf("5"); } else if(strcmp(buffer, "0110") == 0){ printf("6"); } else if(strcmp(buffer, "0111") == 0){ printf("7"); } else if(strcmp(buffer, "1000") == 0){ printf("8"); } else if(strcmp(buffer, "1001") == 0){ printf("9"); } else if(strcmp(buffer, "1010") == 0){ printf("A"); } else if(strcmp(buffer, "1011") == 0){ printf("B"); } else if(strcmp(buffer, "1100") == 0){ printf("C"); } else if(strcmp(buffer, "1101") == 0){ ;printf("D"); } else if(strcmp(buffer, "1110") == 0){ printf("E"); } else if(strcmp(buffer, "1111") == 0){ printf("F"); } else{ printf(" "); } } printf("\n"); }
void debacon(char *string, int btype){ char buffer[6]; int i = 0;
while(string[i] != '\0'){
buffer[0] = string[i]; i++; buffer[1] = string[i]; i++; buffer[2] = string[i]; i++; buffer[3] = string[i]; i++; buffer[4] = string[i]; buffer[5] = '\0'; i+=2;
if(btype == 0){ if(strcmp(buffer, "00000") == 0){ printf("A"); } else if(strcmp(buffer, "00001") == 0){ printf("B"); } else if(strcmp(buffer, "00010") == 0){ printf("C"); } else if(strcmp(buffer, "00011") == 0){ printf("D"); } else if(strcmp(buffer, "00100") == 0){ printf("E"); } else if(strcmp(buffer, "00101") == 0){ printf("F"); } else if(strcmp(buffer, "00110") == 0){ printf("G"); } else if(strcmp(buffer, "00111") == 0){ printf("H"); } else if(strcmp(buffer, "01000") == 0){ printf("J"); } else if(strcmp(buffer, "01001") == 0){ printf("K"); } else if(strcmp(buffer, "01010") == 0){ printf("L"); } else if(strcmp(buffer, "01011") == 0){ printf("M"); } else if(strcmp(buffer, "01100") == 0){ printf("N"); } else if(strcmp(buffer, "01101") == 0){ printf("O"); } else if(strcmp(buffer, "01110") == 0){ printf("P"); } else if(strcmp(buffer, "01111") == 0){ printf("Q"); } else if(strcmp(buffer, "10000") == 0){ printf("R"); ; } else if(strcmp(buffer, "10001") == 0){ printf("S"); } else if(strcmp(buffer, "10010") == 0){ printf("T"); } else if(strcmp(buffer, "10011") == 0){ printf("V"); } else if(strcmp(buffer, "10100") == 0){ printf("W"); } else if(strcmp(buffer, "10101") == 0){ printf("X"); } else if(strcmp(buffer, "10110") == 0){ printf("Y"); } else if(strcmp(buffer, "10111") == 0){ printf("Z"); } else{ printf(" "); } } if(btype == 1){ if(strcmp(buffer, "00000") == 0){ printf("A"); } else if(strcmp(buffer, "00001") == 0){ printf("B"); } else if(strcmp(buffer, "00010") == 0){ printf("C"); } else if(strcmp(buffer, "00011") == 0){ printf("D"); } else if(strcmp(buffer, "00100") == 0){ printf("E"); } else if(strcmp(buffer, "00101") == 0){ printf("F"); } else if(strcmp(buffer, "00110") == 0){ printf("G"); } else if(strcmp(buffer, "00111") == 0){ printf("H"); } else if(strcmp(buffer, "01000") == 0){ printf("I"); } else if(strcmp(buffer, "01001") == 0){ printf("J"); } else if(strcmp(buffer, "01010") == 0){ printf("K"); } else if(strcmp(buffer, "01011") == 0){ printf("L"); } else if(strcmp(buffer, "01100") == 0){ printf("M"); } else if(strcmp(buffer, "01101") == 0){ printf("N"); } else if(strcmp(buffer, "01110") == 0){ printf("O"); } else if(strcmp(buffer, "01111") == 0){ printf("P"); } else if(strcmp(buffer, "10000") == 0){ printf("Q"); } else if(strcmp(buffer, "10001") == 0){ printf("R"); } else if(strcmp(buffer, "10010") == 0){ printf("S"); } else if(strcmp(buffer, "10011") == 0){ printf("T"); } else if(strcmp(buffer, "10100") == 0){ printf("U"); } else if(strcmp(buffer, "10101") == 0){ printf("V"); } else if(strcmp(buffer, "10110") == 0){ printf("W"); } else if(strcmp(buffer, "10111") == 0){ printf("X"); } else if(strcmp(buffer, "11000") == 0){ printf("Y"); } else if(strcmp(buffer, "11001") == 0){ printf("Z"); } else{ printf(" "); } } } printf("\n"); }
void divideString(char *string, int n){ int size = strlen(string); int i = 1; int j = 1; char buffer[1024]; strcpy(buffer,string); string[0] = buffer[0];
for(i = 1; j < size; i++){ if(j%n == 0){ string[i] = ' '; i++; } string[i] = buffer[j]; j++; } string[i] = '\0'; }
char* normalize(char* string, int nflag){ char *i; switch(nflag){ case 0: for(i=string; *i; i++){ if(*i == 'y' || *i == 'Y'){ *i = '1'; } else if(*i == 'o' || *i == 'O'){ *i = '0'; } else if(*i == 'g' || *i == 'G'){ *i = '1'; } else if(*i == 'p' || *i == 'P' || *i == 'b' || *i == 'B'){ *i = '0'; } else if(*i == '\n'){ *i = '\0'; } } return string; case 1: for(i=string; *i; i++){ if(*i == 'y' || *i == 'Y'){ *i = '0'; } else if(*i == 'o' || *i == 'O'){ *i == '1'; } else if(*i == 'g' || *i == 'G'){ *i = '1'; } else if(*i == 'p' || *i == 'P' || *i == 'b' || *i == 'B'){ *i = '0'; } else if(*i == '\n'){ *i == '\0'; } } return string; case 2: for(i=string; *i; i++){ if(*i == 'y' || *i == 'Y'){ *i = '1'; } else if(*i == 'o' || *i == 'O'){ *i = '0'; } else if(*i == 'g' || *i == 'G'){ *i == '0'; } else if(*i == 'p' || *i == 'P' || *i == 'b' || *i == 'B'){ *i == '1'; } else if(*i == '\n'){ *i = '\0'; } } return string; case 3: for(i=string; *i; i++){ if(*i == 'y' || *i == 'Y'){ *i = '0'; } else if(*i == 'o' || *i == 'O'){ *i = '1'; } else if(*i == 'g' || *i == 'G'){ *i = '0'; } else if(*i == 'p' || *i == 'P' || *i == 'b' || *i == 'B'){ *i = '1'; } else if(*i == '\n'){ *i = '\0'; } } return string; ; case 8: for(i=string; *i; i++){ if(*i == '\n'){ *i = '\0'; } } return string; default: printf("\nERROR: Could not normalize stirng\n"); return string; } }
int getlines(FILE* stream, char** line, ssize_t* nread, int* ntot, size_t len){ int i = 0; for(i = 0; i < 16; i++){ nread[i] = getline(&line[i], &len, stream); if(nread[i] == -1){ break; } *ntot += nread[i]; } return i; }
void clean(char* string){ char *nospace = string; char *temp = string;
if(verbose == 1){ printf("\nRemoving Spaces\n"); } while(*temp != 0){ *nospace = *temp++; if(*nospace != ' '){ nospace++; } } *nospace = 0; }
void shift(char* string){ char *nospace = string; char *temp = string; char buffer[1024];
char t; int i = 0; int size;
if(verbose == 1){ printf("\nRemoving Spaces\n"); } while(*temp != 0){ *nospace = *temp++; if(*nospace != ' '){ nospace++; } } *nospace = 0; if(verbose == 1){ printf("\n%s\n", string); printf("\nShifting String\n"); } strcpy(buffer, string); if(verbose == 1){ printf("Buffer: \n%s\n\n", buffer); } t = string[0]; size = strlen(string); for(i = 0; i < (size-1); i++){ string[i] = buffer[i+1]; } string[i] = t; string[i+1] = '\0'; if(verbose == 1){ printf("%s\n", string); } } There is also this https://www.nature.com/polopoly_fs/7.38631.1472212682!/image/DNA_storage_graphic_WEB.jpg_gen/derivatives/landscape_630/DNA_storage_graphic_WEB.jpgTook a look at this. There's a problem with this kind of rotating encoding though. https://images.techhive.com/images/article/2016/04/screen-shot-2016-04-11-at-12.37.07-pm-100655391-orig.pngIt's built so you never have "repeats" of a DNA element. (A will never follow A). In the flames, you have repeats of up to 3 flames in a row. So it doesn't match the data. It could be a modified version, though, some kind of quaternary rotating encoding.
|