Anonymous user
User:Mwn3d/Seasoning Sandwich Caesar Cipher: Difference between revisions
User:Mwn3d/Seasoning Sandwich Caesar Cipher (view source)
Revision as of 18:43, 20 October 2014
, 9 years agoThis is probably getting way too crazy...add code to make the noise look more like the actual message with word length restrictions
m (Updated to use arrays instead of Maps. No idea what I was thinking.) |
(This is probably getting way too crazy...add code to make the noise look more like the actual message with word length restrictions) |
||
Line 25:
StringBuilder encoded = new StringBuilder();
if(addNoise){ //if we are encoding
StringBuilder noise = genNoise(enc
noise.insert((int)(Math.random() * noise.length()), " " + enc + " "); //insert the message into a random place in the noise
Line 46:
* Generate noise to surround the actual message
*/
private static StringBuilder genNoise(String
//remove all non-word chars for figuring out which letters to include in noise
String enc = orig.replaceAll("\\W", "");
//get the number of each letter needed to bring them all up to the same frequency
int[] invertedFreq = invert(letterFreq(enc));
Line 60 ⟶ 63:
StringBuilder noise = new StringBuilder();
Random rand = new Random();
double meanLen = getMeanLen(orig.split("\\b++"));
int waitForSpace = rand.nextInt(rand.nextInt(5) + 5) + 1; //wait this many characters before adding a space, DOUBLE RANDOM for extra randomness▼
double std = getStdDev(orig.split("\\b++"));
▲ int waitForSpace =
while(rawNoise.length() > 0){ //while we still have letters left to add
Line 71 ⟶ 77:
if(waitForSpace == 0){ //if we hit the wait time
noise.append(' '); //add a space
do{
waitForSpace =
}while(waitForSpace == 0);
}
}
Line 106 ⟶ 114:
return freqLet;
}
private static double getMeanLen(String[] words){
int total = 0;
for(String word:words){
total += word.length();
}
return (double)total / words.length;
}
private static double getStdDev(String[] words){
double mean = getMeanLen(words);
int totalDiff = 0;
for(String word:words){
totalDiff += (int)Math.pow(word.length() - mean, 2);
}
return Math.sqrt(totalDiff / words.length);
}
}</lang>
{{out}}
<pre>The quick brown fox Jumped over the lazy Dog and then he landed on a cat and it hurt
|