From 9ffa46156f368f49cb6b3329ca673e99d8211cf3 Mon Sep 17 00:00:00 2001 From: Jonathan Chan Date: Mon, 26 Dec 2016 15:24:24 -0800 Subject: [PATCH] Problem 59: Used Python to find number of characters, used C to manually iterate through possible keys. Since all possible keys yield a punctuation mark as the first character, the key must begin with 'g' to give '(' as the first character; the second character must be a capital letter; and so forth. --- 59 | Bin 0 -> 8464 bytes 59.c | 34 ++++++++++++++++++++++++++++++++++ 59.py | 2 ++ 3 files changed, 36 insertions(+) create mode 100755 59 create mode 100644 59.c create mode 100644 59.py diff --git a/59 b/59 new file mode 100755 index 0000000000000000000000000000000000000000..0be50e6e4a32227e6f0b2480648cac80ba9185ea GIT binary patch literal 8464 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 +#include + +char text[1202] = { 79,59,12,2,79,35,8,28,20,2,3,68,8,9,68,45,0,12,9,67,68,4,7,5,23,27,1,21,79,85,78,79,85,71,38,10,71,27,12,2,79,6,2,8,13,9,1,13,9,8,68,19,7,1,71,56,11,21,11,68,6,3,22,2,14,0,30,79,1,31,6,23,19,10,0,73,79,44,2,79,19,6,28,68,16,6,16,15,79,35,8,11,72,71,14,10,3,79,12,2,79,19,6,28,68,32,0,0,73,79,86,71,39,1,71,24,5,20,79,13,9,79,16,15,10,68,5,10,3,14,1,10,14,1,3,71,24,13,19,7,68,32,0,0,73,79,87,71,39,1,71,12,22,2,14,16,2,11,68,2,25,1,21,22,16,15,6,10,0,79,16,15,10,22,2,79,13,20,65,68,41,0,16,15,6,10,0,79,1,31,6,23,19,28,68,19,7,5,19,79,12,2,79,0,14,11,10,64,27,68,10,14,15,2,65,68,83,79,40,14,9,1,71,6,16,20,10,8,1,79,19,6,28,68,14,1,68,15,6,9,75,79,5,9,11,68,19,7,13,20,79,8,14,9,1,71,8,13,17,10,23,71,3,13,0,7,16,71,27,11,71,10,18,2,29,29,8,1,1,73,79,81,71,59,12,2,79,8,14,8,12,19,79,23,15,6,10,2,28,68,19,7,22,8,26,3,15,79,16,15,10,68,3,14,22,12,1,1,20,28,72,71,14,10,3,79,16,15,10,68,3,14,22,12,1,1,20,28,68,4,14,10,71,1,1,17,10,22,71,10,28,19,6,10,0,26,13,20,7,68,14,27,74,71,89,68,32,0,0,71,28,1,9,27,68,45,0,12,9,79,16,15,10,68,37,14,20,19,6,23,19,79,83,71,27,11,71,27,1,11,3,68,2,25,1,21,22,11,9,10,68,6,13,11,18,27,68,19,7,1,71,3,13,0,7,16,71,28,11,71,27,12,6,27,68,2,25,1,21,22,11,9,10,68,10,6,3,15,27,68,5,10,8,14,10,18,2,79,6,2,12,5,18,28,1,71,0,2,71,7,13,20,79,16,2,28,16,14,2,11,9,22,74,71,87,68,45,0,12,9,79,12,14,2,23,2,3,2,71,24,5,20,79,10,8,27,68,19,7,1,71,3,13,0,7,16,92,79,12,2,79,19,6,28,68,8,1,8,30,79,5,71,24,13,19,1,1,20,28,68,19,0,68,19,7,1,71,3,13,0,7,16,73,79,93,71,59,12,2,79,11,9,10,68,16,7,11,71,6,23,71,27,12,2,79,16,21,26,1,71,3,13,0,7,16,75,79,19,15,0,68,0,6,18,2,28,68,11,6,3,15,27,68,19,0,68,2,25,1,21,22,11,9,10,72,71,24,5,20,79,3,8,6,10,0,79,16,8,79,7,8,2,1,71,6,10,19,0,68,19,7,1,71,24,11,21,3,0,73,79,85,87,79,38,18,27,68,6,3,16,15,0,17,0,7,68,19,7,1,71,24,11,21,3,0,71,24,5,20,79,9,6,11,1,71,27,12,21,0,17,0,7,68,15,6,9,75,79,16,15,10,68,16,0,22,11,11,68,3,6,0,9,72,16,71,29,1,4,0,3,9,6,30,2,79,12,14,2,68,16,7,1,9,79,12,2,79,7,6,2,1,73,79,85,86,79,33,17,10,10,71,6,10,71,7,13,20,79,11,16,1,68,11,14,10,3,79,5,9,11,68,6,2,11,9,8,68,15,6,23,71,0,19,9,79,20,2,0,20,11,10,72,71,7,1,71,24,5,20,79,10,8,27,68,6,12,7,2,31,16,2,11,74,71,94,86,71,45,17,19,79,16,8,79,5,11,3,68,16,7,11,71,13,1,11,6,1,17,10,0,71,7,13,10,79,5,9,11,68,6,12,7,2,31,16,2,11,68,15,6,9,75,79,12,2,79,3,6,25,1,71,27,12,2,79,22,14,8,12,19,79,16,8,79,6,2,12,11,10,10,68,4,7,13,11,11,22,2,1,68,8,9,68,32,0,0,73,79,85,84,79,48,15,10,29,71,14,22,2,79,22,2,13,11,21,1,69,71,59,12,14,28,68,14,28,68,9,0,16,71,14,68,23,7,29,20,6,7,6,3,68,5,6,22,19,7,68,21,10,23,18,3,16,14,1,3,71,9,22,8,2,68,15,26,9,6,1,68,23,14,23,20,6,11,9,79,11,21,79,20,11,14,10,75,79,16,15,6,23,71,29,1,5,6,22,19,7,68,4,0,9,2,28,68,1,29,11,10,79,35,8,11,74,86,91,68,52,0,68,19,7,1,71,56,11,21,11,68,5,10,7,6,2,1,71,7,17,10,14,10,71,14,10,3,79,8,14,25,1,3,79,12,2,29,1,71,0,10,71,10,5,21,27,12,71,14,9,8,1,3,71,26,23,73,79,44,2,79,19,6,28,68,1,26,8,11,79,11,1,79,17,9,9,5,14,3,13,9,8,68,11,0,18,2,79,5,9,11,68,1,14,13,19,7,2,18,3,10,2,28,23,73,79,37,9,11,68,16,10,68,15,14,18,2,79,23,2,10,10,71,7,13,20,79,3,11,0,22,30,67,68,19,7,1,71,8,8,8,29,29,71,0,2,71,27,12,2,79,11,9,3,29,71,60,11,9,79,11,1,79,16,15,10,68,33,14,16,15,10,22,73, '\0' }; + +int main () { + char key[4]; + key[3] = '\0'; + for (char a = 'a'; a <= 'z'; a++) { + key[0] = a; + for (char b = 'a'; b <= 'z'; b++) { + key[1] = b; + for (char c = 'a'; c <= 'z'; c++) { + key[2] = c; + for (int i = 0; i < 1201; i++) { + text[i] ^= key[i % 3]; + } + printf ("Using %s as key: \n%s\n\n", key, text); + + char enter = 0; + while (enter != '\r' && enter != '\n') { + enter = getchar(); + } + + int sum = 0; + for (int i = 0; i < 1201; i++) { + //sum += text[i]; + text[i] ^= key[i % 3]; + } + //printf ("sum: %d\n", sum); + } + } + } +} diff --git a/59.py b/59.py new file mode 100644 index 0000000..9577191 --- /dev/null +++ b/59.py @@ -0,0 +1,2 @@ +nums = [79,59,12,2,79,35,8,28,20,2,3,68,8,9,68,45,0,12,9,67,68,4,7,5,23,27,1,21,79,85,78,79,85,71,38,10,71,27,12,2,79,6,2,8,13,9,1,13,9,8,68,19,7,1,71,56,11,21,11,68,6,3,22,2,14,0,30,79,1,31,6,23,19,10,0,73,79,44,2,79,19,6,28,68,16,6,16,15,79,35,8,11,72,71,14,10,3,79,12,2,79,19,6,28,68,32,0,0,73,79,86,71,39,1,71,24,5,20,79,13,9,79,16,15,10,68,5,10,3,14,1,10,14,1,3,71,24,13,19,7,68,32,0,0,73,79,87,71,39,1,71,12,22,2,14,16,2,11,68,2,25,1,21,22,16,15,6,10,0,79,16,15,10,22,2,79,13,20,65,68,41,0,16,15,6,10,0,79,1,31,6,23,19,28,68,19,7,5,19,79,12,2,79,0,14,11,10,64,27,68,10,14,15,2,65,68,83,79,40,14,9,1,71,6,16,20,10,8,1,79,19,6,28,68,14,1,68,15,6,9,75,79,5,9,11,68,19,7,13,20,79,8,14,9,1,71,8,13,17,10,23,71,3,13,0,7,16,71,27,11,71,10,18,2,29,29,8,1,1,73,79,81,71,59,12,2,79,8,14,8,12,19,79,23,15,6,10,2,28,68,19,7,22,8,26,3,15,79,16,15,10,68,3,14,22,12,1,1,20,28,72,71,14,10,3,79,16,15,10,68,3,14,22,12,1,1,20,28,68,4,14,10,71,1,1,17,10,22,71,10,28,19,6,10,0,26,13,20,7,68,14,27,74,71,89,68,32,0,0,71,28,1,9,27,68,45,0,12,9,79,16,15,10,68,37,14,20,19,6,23,19,79,83,71,27,11,71,27,1,11,3,68,2,25,1,21,22,11,9,10,68,6,13,11,18,27,68,19,7,1,71,3,13,0,7,16,71,28,11,71,27,12,6,27,68,2,25,1,21,22,11,9,10,68,10,6,3,15,27,68,5,10,8,14,10,18,2,79,6,2,12,5,18,28,1,71,0,2,71,7,13,20,79,16,2,28,16,14,2,11,9,22,74,71,87,68,45,0,12,9,79,12,14,2,23,2,3,2,71,24,5,20,79,10,8,27,68,19,7,1,71,3,13,0,7,16,92,79,12,2,79,19,6,28,68,8,1,8,30,79,5,71,24,13,19,1,1,20,28,68,19,0,68,19,7,1,71,3,13,0,7,16,73,79,93,71,59,12,2,79,11,9,10,68,16,7,11,71,6,23,71,27,12,2,79,16,21,26,1,71,3,13,0,7,16,75,79,19,15,0,68,0,6,18,2,28,68,11,6,3,15,27,68,19,0,68,2,25,1,21,22,11,9,10,72,71,24,5,20,79,3,8,6,10,0,79,16,8,79,7,8,2,1,71,6,10,19,0,68,19,7,1,71,24,11,21,3,0,73,79,85,87,79,38,18,27,68,6,3,16,15,0,17,0,7,68,19,7,1,71,24,11,21,3,0,71,24,5,20,79,9,6,11,1,71,27,12,21,0,17,0,7,68,15,6,9,75,79,16,15,10,68,16,0,22,11,11,68,3,6,0,9,72,16,71,29,1,4,0,3,9,6,30,2,79,12,14,2,68,16,7,1,9,79,12,2,79,7,6,2,1,73,79,85,86,79,33,17,10,10,71,6,10,71,7,13,20,79,11,16,1,68,11,14,10,3,79,5,9,11,68,6,2,11,9,8,68,15,6,23,71,0,19,9,79,20,2,0,20,11,10,72,71,7,1,71,24,5,20,79,10,8,27,68,6,12,7,2,31,16,2,11,74,71,94,86,71,45,17,19,79,16,8,79,5,11,3,68,16,7,11,71,13,1,11,6,1,17,10,0,71,7,13,10,79,5,9,11,68,6,12,7,2,31,16,2,11,68,15,6,9,75,79,12,2,79,3,6,25,1,71,27,12,2,79,22,14,8,12,19,79,16,8,79,6,2,12,11,10,10,68,4,7,13,11,11,22,2,1,68,8,9,68,32,0,0,73,79,85,84,79,48,15,10,29,71,14,22,2,79,22,2,13,11,21,1,69,71,59,12,14,28,68,14,28,68,9,0,16,71,14,68,23,7,29,20,6,7,6,3,68,5,6,22,19,7,68,21,10,23,18,3,16,14,1,3,71,9,22,8,2,68,15,26,9,6,1,68,23,14,23,20,6,11,9,79,11,21,79,20,11,14,10,75,79,16,15,6,23,71,29,1,5,6,22,19,7,68,4,0,9,2,28,68,1,29,11,10,79,35,8,11,74,86,91,68,52,0,68,19,7,1,71,56,11,21,11,68,5,10,7,6,2,1,71,7,17,10,14,10,71,14,10,3,79,8,14,25,1,3,79,12,2,29,1,71,0,10,71,10,5,21,27,12,71,14,9,8,1,3,71,26,23,73,79,44,2,79,19,6,28,68,1,26,8,11,79,11,1,79,17,9,9,5,14,3,13,9,8,68,11,0,18,2,79,5,9,11,68,1,14,13,19,7,2,18,3,10,2,28,23,73,79,37,9,11,68,16,10,68,15,14,18,2,79,23,2,10,10,71,7,13,20,79,3,11,0,22,30,67,68,19,7,1,71,8,8,8,29,29,71,0,2,71,27,12,2,79,11,9,3,29,71,60,11,9,79,11,1,79,16,15,10,68,33,14,16,15,10,22,73] +print len(nums)