Bitcoin Forum
May 02, 2024, 08:44:43 PM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: « 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 [46] 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 »
  Print  
Author Topic: The Legend of Satoshi Nakamato, FINAL STEP PUBLISHED.... 4.87 BTC GRAND PRIZE!  (Read 108422 times)
Zebra.Guy
Member
**
Offline Offline

Activity: 61
Merit: 10


View Profile
January 09, 2018, 07:35:07 AM
 #901


Just to add to this: I've run comparisons between every string of inner and outer flames, reversed and flipped (exchanging 1s and 0s), and no other strings match up their first bits like this. Most comparisons match only 0, and the most any other pair of strings matches up, is 7. (Also note, the script double-counts, since every permutation flips one of the strings.)


 0: 448 (0 characters matched at the beginning of the string)
 1: 230
 2: 91
 ...



could you please clarify why we have odd values (e.g. for 2 prefix), if the script doublecounts? I am asking just to have the full understanding of the numbers you shared.

Also, did you try matching the inside portions of the strings too?
1714682683
Hero Member
*
Offline Offline

Posts: 1714682683

View Profile Personal Message (Offline)

Ignore
1714682683
Reply with quote  #2

1714682683
Report to moderator
1714682683
Hero Member
*
Offline Offline

Posts: 1714682683

View Profile Personal Message (Offline)

Ignore
1714682683
Reply with quote  #2

1714682683
Report to moderator
1714682683
Hero Member
*
Offline Offline

Posts: 1714682683

View Profile Personal Message (Offline)

Ignore
1714682683
Reply with quote  #2

1714682683
Report to moderator
BitcoinCleanup.com: Learn why Bitcoin isn't bad for the environment
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
crax0r
Jr. Member
*
Offline Offline

Activity: 33
Merit: 2


View Profile
January 09, 2018, 03:51:38 PM
 #902

We have 152x3=456 bits, 76 are nulls after xoring, that leaves as with 380 bits, then, we have a set of 17 bits doubled, perhaps a 2nd key, making yet another 17 bits nullified, that's 380-17=363. What is 363? Well, Code-128-B, that can encode Base58 and Minikeys uses START code and END code, which are 11 bits each, also uses CRC code, also 11 bits, that's 363-11-11-11, so 330 bits left, 330 bits is exact bit count needed to encode 30-char miniprivate key...

Here: 1F4crLa8TuSNKfDiUhjkCsDqKx6VTSifG2  thx! Cheesy
hodld0r
Newbie
*
Offline Offline

Activity: 17
Merit: 7


View Profile
January 09, 2018, 05:40:04 PM
 #903

for one thing it seems unlikely they would have mined minikeys for a vanity address...is there even vanity software that comes stock with that functionality?
feedo
Hero Member
*****
Offline Offline

Activity: 695
Merit: 500



View Profile
January 09, 2018, 05:47:09 PM
 #904

We have 152x3=456 bits, 76 are nulls after xoring, that leaves as with 380 bits, then, we have a set of 17 bits doubled, perhaps a 2nd key, making yet another 17 bits nullified, that's 380-17=363. What is 363? Well, Code-128-B, that can encode Base58 and Minikeys uses START code and END code, which are 11 bits each, also uses CRC code, also 11 bits, that's 363-11-11-11, so 330 bits left, 330 bits is exact bit count needed to encode 30-char miniprivate key...

Here: 1F4crLa8TuSNKfDiUhjkCsDqKx6VTSifG2  thx! Cheesy

As if you discovered the atomic bomb inside those flames, you deserve PhD in flames!, congratulations!.
My question to the mod, why you deleted most of the rabbit posts when he posted his address and you didn't see this post of this scammer?


██▌  ▓▓▐██████████▄██████▄   █████
███▌▓▓▐█████▀▀▀▀▀████▀▀▀▀▀  ▐██ ██▌
████▌▐██████▄▄▄▄▄███        ██▌ ▐██
██████████▀▀▀▀▀███▄▓▓███ █████████
██ ██▓▓████▄▄▄▄▄▄████████▐██▌▓▓▓▐██▌
██    ▓▓██████████ ▓▓█████████   ▓▓███
    █        █▒   
   ███░  ██  █▒   
  ██████████░██  ░░
  █▄█▄██▄█▄█░██░ ██
 ███████████████░▒▒
 █▄█▄█▄█▄█▄█▄█▄█▄██
 █▄█▄█▄█▄█▄█▄█▄█▄██
▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬

CRYPTO
▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
▒███▓▓█▓▓▓▓▓▓▓▓▓▓█▒
███████████████████

████▄▄    ▄████▄  ██     ██ ▄█████▄
██▀▀███  ████████ ██     █████▀▄▄
██  ███▌▐██▀  ▀██▌██     ██▀████▄▄
██████▀ ▐██▄  ▄██▌██     ██   ▀▀███
██▀▀▀    ████████ ██▄▄▄▄▄██▄   ▄███
██        ▀████▀  █████████▀█████▀

    World’s Largest Decentralized City 
On The   ETHEREUM BLOCKCHAIN 
       ██           ▄▄█
      █  █      ▄▄██▀▀█
      ████  ▄▄██▀▀    █
  █ █ █ ████▀▀▄▄████▄▄
      █ ██  ██ ███ █████
      ▒███  █ ██ ███████
      █ ██  ██ ███ █████
      ▒███  █ ██ ███████
      █ ██  ██ ███ ███████████
      ████  █ ██ ████ █ █ ████
      ▒███  ███ ██ ███████████
      █ ██  █ ██ ████ █ █ ████
████  ▒███  ██████████████████
      █  █  █  █ █ ██ █ █ ████
████  ████  █  █ █ ██ █ █ ████

CRYPTOCOLLECTIBLE STRATEGY
GAME


bigvito19
Full Member
***
Offline Offline

Activity: 706
Merit: 111


View Profile
January 09, 2018, 06:18:18 PM
 #905

for one thing it seems unlikely they would have mined minikeys for a vanity address...is there even vanity software that comes stock with that functionality?


To what, to search for minikeys?
chubbychew
Jr. Member
*
Offline Offline

Activity: 39
Merit: 1


View Profile
January 09, 2018, 07:12:06 PM
 #906

Serious question for those new to crypto wallets (me)... How to I check a guess to the solution? How can I know if my private key resolves to the 1FLAMEN6 address? If it did, how would one use that key?
kn0w0n3
Jr. Member
*
Offline Offline

Activity: 51
Merit: 1


View Profile
January 09, 2018, 07:16:57 PM
 #907

Serious question for those new to crypto wallets (me)... How to I check a guess to the solution? How can I know if my private key resolves to the 1FLAMEN6 address? If it did, how would one use that key?

You can import the private key into something like blockchain.info then send the 5.001337 btc to a wallet you control.
chubbychew
Jr. Member
*
Offline Offline

Activity: 39
Merit: 1


View Profile
January 09, 2018, 08:11:38 PM
 #908


(Here, I've concatenated all the data starting with lengths, then inner, then outer colors in the order of the pattern. This is just ONE of a many ways of concatenating the data. Just for demonstration purposes, I used a base 58 alphabet here and use ? when the value goes beyond 58.  By no means is this a complete list).



Have you tried using the inner shape as the third bit (skinny line or blob of paint)?

Each inner flame is either a blob or a line.

Inner Color, Outer Color, (Line/Blob)

8 variations of flames taken in pairs.  76 pairs of 64 variations.

I still think we are looking for a BIP38 encrypted key starting with 6PR.

Update on this one, there appears to be another channel of info we've been ignoring (or not talking about publicly on this forum). Props to smracer for noticing it. If you view the "skinny/fat" inner flame as another channel of data, then there is an *almost* 16 digit match between the outer bottom height and it's skinnyness. Flame # 9 counting r 2 l along the outer bottom doesn't match with this otherwise perfect match. The interpretation of the skinnyness is a bit more subjective than the others but once you've spent some time deciding between them it becomes easier to call. This track contains the weird solid red flame most have been ignoring. See for yourself and let me know what you think. Perhaps we could compare our skinny/fat calls and start using this new channel of data for playing around with... Not quite as solid a lead as alphabetcannary's discovery but I think it's significant.

There might be one more channel of data not picked up on yet. I'll let you know once I've poked around with it a bit.
crax0r
Jr. Member
*
Offline Offline

Activity: 33
Merit: 2


View Profile
January 09, 2018, 09:06:28 PM
 #909

for one thing it seems unlikely they would have mined minikeys for a vanity address...is there even vanity software that comes stock with that functionality?

Well, just because there is no off-the-shelf software to do something, doesn't mean its not doable:

Code:
SUPER1FLAMEN6QPEGRLTFZXDEAFFAL -> 1FLANSqJppAGxWdCrUW2VsrncH1NfWtNXo 
SUPER1FLAMEN6JQWSXAAHLJQJDEZXR -> 1FLArjwv7oPTZGUuGxLhEtPh7pkfoSbRTX
SUPER1FLAMEN6RHJSDXWSCEFMSBMWX -> 1FLA4LzZtRuaV914mEJHaWmBGdaMt2AmRG

These are all valid mini-private keys that I vanitized in 2 minutes, on GPU it would be much faster...

They are:
  • 30 chars long
  • follow base58 charset
  • follow code128b charset


bachus
Member
**
Offline Offline

Activity: 226
Merit: 10


View Profile
January 09, 2018, 09:36:44 PM
 #910

Serious question for those new to crypto wallets (me)... How to I check a guess to the solution? How can I know if my private key resolves to the 1FLAMEN6 address? If it did, how would one use that key?

You can import the private key into something like blockchain.info then send the 5.001337 btc to a wallet you control.

So in blockchain.info for example, you can click login to wallet, you put in 1FLAMEN6rq2BqMnkUmsJBqCGWdwgVKcegd as the wallet? and the private key is the password?
There's a separate board to get this level of help: Beginners & Help
jeronimosuykens
Member
**
Offline Offline

Activity: 350
Merit: 10


View Profile
January 09, 2018, 09:47:48 PM
 #911

Serious question for those new to crypto wallets (me)... How to I check a guess to the solution? How can I know if my private key resolves to the 1FLAMEN6 address? If it did, how would one use that key?

You can import the private key into something like blockchain.info then send the 5.001337 btc to a wallet you control.

So in blockchain.info for example, you can click login to wallet, you put in 1FLAMEN6rq2BqMnkUmsJBqCGWdwgVKcegd as the wallet? and the private key is the password?
There's a separate board to get this level of help: Beginners & Help
When I first started entering the crypto market and this forum I also often go to the section that you mentioned to learn some issues that I did not know. This forum is really a great place for crypto enthusiasts to have a playground to exchange and learn from each other and grow together. I secretly thank Mr. Satoshi for making this bitcoin and great forum.
kn0w0n3
Jr. Member
*
Offline Offline

Activity: 51
Merit: 1


View Profile
January 10, 2018, 01:16:34 AM
 #912

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

Code:
#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);
}
}
sini
Newbie
*
Offline Offline

Activity: 41
Merit: 0


View Profile
January 10, 2018, 01:38:22 AM
 #913

Well. For now I'm throwing the towel in. I think the puzzle is interesting but there are obvious things that make it stand out as more frustrating than challenging. If it was straightforward, I am sure it would have been solved by now. There are many people showing promising ideas, but there is a lack of any notable progress.

The creator likely will not provide any assistance as it gives her more use unsolved than solved (advertising and it will be a hallmark if it remains unsolved as the MYSTERIOUS painting that baffled tons of people. When in reality, if a solution is published, it's probably riddled with inelegance and logical jumps that you'd have to be lucky in order to explore). Good luck everyone!

CompNeuro
Newbie
*
Offline Offline

Activity: 13
Merit: 0


View Profile
January 10, 2018, 01:39:44 AM
 #914

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

Code:
#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);
}
}

Sure. I think I see where the confusion might be.
You have 4 distinct flames (RB RG YB YG). Consider those to be the fundamental unit (not the individual colors).
Pick a way to assign them each to a DNA base (RB=a RG=t YB=c YG=g).
Pick a place to start decoding, pick a direction. Here's an example string to decode. Lets decode left to right. 
CTAGCCTATTTATTCTACATCGCACTTATCCACCGTAATTGCTAATTGCTT
Translate them three at a time into amino acids

CTA= D
this triplet, in this order, translates to the amino acid D.

CTA GCC TAT TTA TTC TAC ATC GCA CTT ATC CAC CGT AAT TGC TAA TTG CTT
D     R     I     N    K    M    *     R     E     *     V    A     L      T     I     N    E

if you took this backwards, it would not read the same.
TTCGTTAATCGTTAATGCCACCTATTCACGCTACATCTTATTTATCCGATC
TTC GTT AAT CGT TAA TGC CAC CTA TTC ACG CTA CAT CTT ATT TAT CCG ATC
K    Q     L     A     I     T     V     D     K    C     D     V    E     *    I     G     *

If you started reading at a different letter (say one letter in), it also is a different message
CTAGCCTATTTATTCTACATCGCACTTATCCACCGTAATTGCTAATTGCTT
TAG CCT ATT TAT TCT ACA TCG CAC TTA TCC ACC GTA ATT GCT AAT TGC TT
I     G     *     I    R     C     S     V     N    R    W     H    *     R     L     T

Make more sense?
kn0w0n3
Jr. Member
*
Offline Offline

Activity: 51
Merit: 1


View Profile
January 10, 2018, 01:44:54 AM
 #915

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

Code:
#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);
}
}

Sure. I think I see where the confusion might be.
You have 4 distinct flames (RB RG YB YG). Consider those to be the fundamental unit (not the individual colors).
Pick a way to assign them each to a DNA base (RB=a RG=t YB=c YG=g).
Pick a place to start decoding, pick a direction. Here's an example string to decode. Lets decode left to right. 
CTAGCCTATTTATTCTACATCGCACTTATCCACCGTAATTGCTAATTGCTT
Translate them three at a time into amino acids

CTA= D
this triplet, in this order, translates to the amino acid D.

CTA GCC TAT TTA TTC TAC ATC GCA CTT ATC CAC CGT AAT TGC TAA TTG CTT
D     R     I     N    K    M    *     R     E     *     V    A     L      T     I     N    E

if you took this backwards, it would not read the same.
TTCGTTAATCGTTAATGCCACCTATTCACGCTACATCTTATTTATCCGATC
TTC GTT AAT CGT TAA TGC CAC CTA TTC ACG CTA CAT CTT ATT TAT CCG ATC
K    Q     L     A     I     T     V     D     K    C     D     V    E     *    I     G     *

If you started reading at a different letter (say one letter in), it also is a different message
CTAGCCTATTTATTCTACATCGCACTTATCCACCGTAATTGCTAATTGCTT
TAG CCT ATT TAT TCT ACA TCG CAC TTA TCC ACC GTA ATT GCT AAT TGC TT
I     G     *     I    R     C     S     V     N    R    W     H    *     R     L     T

Make more sense?


ah I see, yes, makes more sense! So I guess we are looking for ATG as the starting point?

I'm going to play with this now though, thank you!
CompNeuro
Newbie
*
Offline Offline

Activity: 13
Merit: 0


View Profile
January 10, 2018, 01:50:45 AM
 #916


Quote
ah I see, yes, makes more sense! So I guess we are looking for ATG as the starting point?

I'm going to play with this now though, thank you!

Depends. Did the author start the encoding the way real proteins would start? Any flame could be a reasonable start point depending how things were encoded.
xMossx
Newbie
*
Offline Offline

Activity: 121
Merit: 0


View Profile
January 10, 2018, 02:36:26 AM
 #917

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

Code:
#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.jpg
feedo
Hero Member
*****
Offline Offline

Activity: 695
Merit: 500



View Profile
January 10, 2018, 04:48:15 AM
 #918

Well. For now I'm throwing the towel in. I think the puzzle is interesting but there are obvious things that make it stand out as more frustrating than challenging. If it was straightforward, I am sure it would have been solved by now. There are many people showing promising ideas, but there is a lack of any notable progress.

The creator likely will not provide any assistance as it gives her more use unsolved than solved (advertising and it will be a hallmark if it remains unsolved as the MYSTERIOUS painting that baffled tons of people. When in reality, if a solution is published, it's probably riddled with inelegance and logical jumps that you'd have to be lucky in order to explore). Good luck everyone!



Hahaha finally you understand! .. seems you have read my previous posts as I've mentioned the same idea many times.. this puzzle is not difficult but it's made in such a way that it's impossible to solve.. one has to think in extremely unlogical crazy way and has crazy luck to get only one fraction of the solution.

Forgot about the idea that dna nucleotides are encrypted into the flames.
What's the relation between the DNA,RNA, CODONS and that fucking story of the turtle dove and phoenix!


██▌  ▓▓▐██████████▄██████▄   █████
███▌▓▓▐█████▀▀▀▀▀████▀▀▀▀▀  ▐██ ██▌
████▌▐██████▄▄▄▄▄███        ██▌ ▐██
██████████▀▀▀▀▀███▄▓▓███ █████████
██ ██▓▓████▄▄▄▄▄▄████████▐██▌▓▓▓▐██▌
██    ▓▓██████████ ▓▓█████████   ▓▓███
    █        █▒   
   ███░  ██  █▒   
  ██████████░██  ░░
  █▄█▄██▄█▄█░██░ ██
 ███████████████░▒▒
 █▄█▄█▄█▄█▄█▄█▄█▄██
 █▄█▄█▄█▄█▄█▄█▄█▄██
▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬

CRYPTO
▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
▒███▓▓█▓▓▓▓▓▓▓▓▓▓█▒
███████████████████

████▄▄    ▄████▄  ██     ██ ▄█████▄
██▀▀███  ████████ ██     █████▀▄▄
██  ███▌▐██▀  ▀██▌██     ██▀████▄▄
██████▀ ▐██▄  ▄██▌██     ██   ▀▀███
██▀▀▀    ████████ ██▄▄▄▄▄██▄   ▄███
██        ▀████▀  █████████▀█████▀

    World’s Largest Decentralized City 
On The   ETHEREUM BLOCKCHAIN 
       ██           ▄▄█
      █  █      ▄▄██▀▀█
      ████  ▄▄██▀▀    █
  █ █ █ ████▀▀▄▄████▄▄
      █ ██  ██ ███ █████
      ▒███  █ ██ ███████
      █ ██  ██ ███ █████
      ▒███  █ ██ ███████
      █ ██  ██ ███ ███████████
      ████  █ ██ ████ █ █ ████
      ▒███  ███ ██ ███████████
      █ ██  █ ██ ████ █ █ ████
████  ▒███  ██████████████████
      █  █  █  █ █ ██ █ █ ████
████  ████  █  █ █ ██ █ █ ████

CRYPTOCOLLECTIBLE STRATEGY
GAME


akiraminai
Member
**
Offline Offline

Activity: 93
Merit: 10


View Profile
January 10, 2018, 04:54:19 AM
 #919

This is too much for me, I tried to decipher it on my own and ended up being blown up.
feedo
Hero Member
*****
Offline Offline

Activity: 695
Merit: 500



View Profile
January 10, 2018, 05:09:00 AM
 #920

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?

You are asking a blind, he doesn't know.
I've asked more than 30 experts in cryptography, encrypted language, machine language...etc and still I don't have a clear answer how to interpret that fucking language.


██▌  ▓▓▐██████████▄██████▄   █████
███▌▓▓▐█████▀▀▀▀▀████▀▀▀▀▀  ▐██ ██▌
████▌▐██████▄▄▄▄▄███        ██▌ ▐██
██████████▀▀▀▀▀███▄▓▓███ █████████
██ ██▓▓████▄▄▄▄▄▄████████▐██▌▓▓▓▐██▌
██    ▓▓██████████ ▓▓█████████   ▓▓███
    █        █▒   
   ███░  ██  █▒   
  ██████████░██  ░░
  █▄█▄██▄█▄█░██░ ██
 ███████████████░▒▒
 █▄█▄█▄█▄█▄█▄█▄█▄██
 █▄█▄█▄█▄█▄█▄█▄█▄██
▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬

CRYPTO
▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
▒███▓▓█▓▓▓▓▓▓▓▓▓▓█▒
███████████████████

████▄▄    ▄████▄  ██     ██ ▄█████▄
██▀▀███  ████████ ██     █████▀▄▄
██  ███▌▐██▀  ▀██▌██     ██▀████▄▄
██████▀ ▐██▄  ▄██▌██     ██   ▀▀███
██▀▀▀    ████████ ██▄▄▄▄▄██▄   ▄███
██        ▀████▀  █████████▀█████▀

    World’s Largest Decentralized City 
On The   ETHEREUM BLOCKCHAIN 
       ██           ▄▄█
      █  █      ▄▄██▀▀█
      ████  ▄▄██▀▀    █
  █ █ █ ████▀▀▄▄████▄▄
      █ ██  ██ ███ █████
      ▒███  █ ██ ███████
      █ ██  ██ ███ █████
      ▒███  █ ██ ███████
      █ ██  ██ ███ ███████████
      ████  █ ██ ████ █ █ ████
      ▒███  ███ ██ ███████████
      █ ██  █ ██ ████ █ █ ████
████  ▒███  ██████████████████
      █  █  █  █ █ ██ █ █ ████
████  ████  █  █ █ ██ █ █ ████

CRYPTOCOLLECTIBLE STRATEGY
GAME


Pages: « 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 [46] 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 »
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!