From e0c627a384da9ae5eaeb57cbbff748fdad6de4db Mon Sep 17 00:00:00 2001 From: Philippe Zwietering Date: Tue, 26 Oct 2021 10:54:24 +0200 Subject: [PATCH] Rebased projecteuler folder, now includes all contest programming stuff --- atcoder/practice1.cpp | 18 +++ base.cpp | 31 ++--- google/kickstart/2021roundA/a | Bin 0 -> 19896 bytes google/kickstart/2021roundA/a.cpp | 40 ++++++ google/kickstart/2021roundA/b | Bin 0 -> 41664 bytes google/kickstart/2021roundA/b.cpp | 42 ++++++ {001 => projecteuler/001}/main.py | 0 {002 => projecteuler/002}/main.py | 0 {003 => projecteuler/003}/main.py | 0 {004 => projecteuler/004}/main.py | 0 {005 => projecteuler/005}/main.py | 0 {006 => projecteuler/006}/main.py | 0 {007 => projecteuler/007}/main.py | 0 {008 => projecteuler/008}/main.py | 0 {009 => projecteuler/009}/main.py | 0 {010 => projecteuler/010}/main.py | 0 {011 => projecteuler/011}/main.py | 0 {012 => projecteuler/012}/main.py | 0 {013 => projecteuler/013}/main.py | 0 {014 => projecteuler/014}/main.py | 0 {015 => projecteuler/015}/main.py | 0 {016 => projecteuler/016}/main.py | 0 {017 => projecteuler/017}/main.py | 0 {018 => projecteuler/018}/main.py | 0 {019 => projecteuler/019}/main.py | 0 {020 => projecteuler/020}/main.py | 0 {021 => projecteuler/021}/main.py | 0 {022 => projecteuler/022}/main.py | 0 {022 => projecteuler/022}/names.txt | 0 {023 => projecteuler/023}/main.py | 0 {024 => projecteuler/024}/main.py | 0 {025 => projecteuler/025}/main.py | 0 {026 => projecteuler/026}/main.py | 0 {027 => projecteuler/027}/main.py | 0 {028 => projecteuler/028}/main.py | 0 {029 => projecteuler/029}/main.py | 0 {030 => projecteuler/030}/main.py | 0 {031 => projecteuler/031}/main.py | 0 {032 => projecteuler/032}/main.py | 0 {033 => projecteuler/033}/main.py | 0 {034 => projecteuler/034}/main.py | 0 {035 => projecteuler/035}/main.py | 0 {036 => projecteuler/036}/main.py | 0 {037 => projecteuler/037}/main.py | 0 {038 => projecteuler/038}/main.py | 0 {039 => projecteuler/039}/main.py | 0 {040 => projecteuler/040}/main.py | 0 {041 => projecteuler/041}/main.py | 0 {042 => projecteuler/042}/main.py | 0 {043 => projecteuler/043}/main.py | 0 {044 => projecteuler/044}/main.py | 0 {045 => projecteuler/045}/main.py | 0 {046 => projecteuler/046}/main.py | 0 {047 => projecteuler/047}/main.py | 0 {048 => projecteuler/048}/main.py | 0 {049 => projecteuler/049}/main.py | 0 {050 => projecteuler/050}/main.py | 0 {051 => projecteuler/051}/main.py | 0 {052 => projecteuler/052}/main.py | 0 {053 => projecteuler/053}/main.py | 0 {054 => projecteuler/054}/main.py | 0 {054 => projecteuler/054}/poker.txt | 0 {055 => projecteuler/055}/main.py | 0 {056 => projecteuler/056}/main.py | 0 {057 => projecteuler/057}/main.py | 0 {058 => projecteuler/058}/main.py | 0 {059 => projecteuler/059}/main.cpp | 0 {059 => projecteuler/059}/main.py | 0 {060 => projecteuler/060}/main.cpp | 0 {061 => projecteuler/061}/main.cpp | 123 ++++++++++-------- {063 => projecteuler/063}/main.cpp | 0 CMakeLists.txt => projecteuler/CMakeLists.txt | 0 LICENSE => projecteuler/LICENSE | 0 README.md => projecteuler/README.md | 0 projecteuler/base.cpp | 16 +++ base.py => projecteuler/base.py | 0 {txts => projecteuler/txts}/cipher.txt | 0 77 files changed, 203 insertions(+), 67 deletions(-) create mode 100644 atcoder/practice1.cpp create mode 100755 google/kickstart/2021roundA/a create mode 100644 google/kickstart/2021roundA/a.cpp create mode 100755 google/kickstart/2021roundA/b create mode 100644 google/kickstart/2021roundA/b.cpp rename {001 => projecteuler/001}/main.py (100%) rename {002 => projecteuler/002}/main.py (100%) rename {003 => projecteuler/003}/main.py (100%) rename {004 => projecteuler/004}/main.py (100%) rename {005 => projecteuler/005}/main.py (100%) rename {006 => projecteuler/006}/main.py (100%) rename {007 => projecteuler/007}/main.py (100%) rename {008 => projecteuler/008}/main.py (100%) rename {009 => projecteuler/009}/main.py (100%) rename {010 => projecteuler/010}/main.py (100%) rename {011 => projecteuler/011}/main.py (100%) rename {012 => projecteuler/012}/main.py (100%) rename {013 => projecteuler/013}/main.py (100%) rename {014 => projecteuler/014}/main.py (100%) rename {015 => projecteuler/015}/main.py (100%) rename {016 => projecteuler/016}/main.py (100%) rename {017 => projecteuler/017}/main.py (100%) rename {018 => projecteuler/018}/main.py (100%) rename {019 => projecteuler/019}/main.py (100%) rename {020 => projecteuler/020}/main.py (100%) rename {021 => projecteuler/021}/main.py (100%) rename {022 => projecteuler/022}/main.py (100%) rename {022 => projecteuler/022}/names.txt (100%) rename {023 => projecteuler/023}/main.py (100%) rename {024 => projecteuler/024}/main.py (100%) rename {025 => projecteuler/025}/main.py (100%) rename {026 => projecteuler/026}/main.py (100%) rename {027 => projecteuler/027}/main.py (100%) rename {028 => projecteuler/028}/main.py (100%) rename {029 => projecteuler/029}/main.py (100%) rename {030 => projecteuler/030}/main.py (100%) rename {031 => projecteuler/031}/main.py (100%) rename {032 => projecteuler/032}/main.py (100%) rename {033 => projecteuler/033}/main.py (100%) rename {034 => projecteuler/034}/main.py (100%) rename {035 => projecteuler/035}/main.py (100%) rename {036 => projecteuler/036}/main.py (100%) rename {037 => projecteuler/037}/main.py (100%) rename {038 => projecteuler/038}/main.py (100%) rename {039 => projecteuler/039}/main.py (100%) rename {040 => projecteuler/040}/main.py (100%) rename {041 => projecteuler/041}/main.py (100%) rename {042 => projecteuler/042}/main.py (100%) rename {043 => projecteuler/043}/main.py (100%) rename {044 => projecteuler/044}/main.py (100%) rename {045 => projecteuler/045}/main.py (100%) rename {046 => projecteuler/046}/main.py (100%) rename {047 => projecteuler/047}/main.py (100%) rename {048 => projecteuler/048}/main.py (100%) rename {049 => projecteuler/049}/main.py (100%) rename {050 => projecteuler/050}/main.py (100%) rename {051 => projecteuler/051}/main.py (100%) rename {052 => projecteuler/052}/main.py (100%) rename {053 => projecteuler/053}/main.py (100%) rename {054 => projecteuler/054}/main.py (100%) rename {054 => projecteuler/054}/poker.txt (100%) rename {055 => projecteuler/055}/main.py (100%) rename {056 => projecteuler/056}/main.py (100%) rename {057 => projecteuler/057}/main.py (100%) rename {058 => projecteuler/058}/main.py (100%) rename {059 => projecteuler/059}/main.cpp (100%) rename {059 => projecteuler/059}/main.py (100%) rename {060 => projecteuler/060}/main.cpp (100%) rename {061 => projecteuler/061}/main.cpp (54%) rename {063 => projecteuler/063}/main.cpp (100%) rename CMakeLists.txt => projecteuler/CMakeLists.txt (100%) rename LICENSE => projecteuler/LICENSE (100%) rename README.md => projecteuler/README.md (100%) create mode 100644 projecteuler/base.cpp rename base.py => projecteuler/base.py (100%) rename {txts => projecteuler/txts}/cipher.txt (100%) diff --git a/atcoder/practice1.cpp b/atcoder/practice1.cpp new file mode 100644 index 0000000..b041707 --- /dev/null +++ b/atcoder/practice1.cpp @@ -0,0 +1,18 @@ +#include +#include + +using namespace std; + + +int main(){ + int a, b, c; + string s; + + cin >> a; + cin >> b >> c; + cin >> s; + + cout << a + b + c << " " << s << endl; + + return 0; +} \ No newline at end of file diff --git a/base.cpp b/base.cpp index 6cce239..66d7065 100644 --- a/base.cpp +++ b/base.cpp @@ -1,16 +1,17 @@ -#include -#include - -using namespace std; - -int main(){ - - cout << "Hello this is Patrick" << endl; - auto start = chrono::high_resolution_clock::now(); - - // Insert code here - - auto duration = chrono::duration_cast(chrono::high_resolution_clock::now() - start); - cout << (float)duration.count()/1000 << endl; - return 0; +#include +#include +#include +#include + +using namespace std; + + + + + +int main(){ + ios::sync_with_stdio(0); + cin.tie(0); + + return 0; } \ No newline at end of file diff --git a/google/kickstart/2021roundA/a b/google/kickstart/2021roundA/a new file mode 100755 index 0000000000000000000000000000000000000000..f93b2f82f2fe76e63252bcd7ed34c6c64f9a68d5 GIT binary patch literal 19896 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 +#include +#include + +using namespace std; + +void run_case(int test_case){ + int n, k; + string s; + + cin >> n >> k; + cin >> s; + + int result = 0; + + auto ti = s.end() - 1; + int l = s.length(); + for(auto it = s.begin(); it != s.begin() + l/2; ++it){ + if((*it) != (*ti)){ + result++; + } + --ti; + } + cout << "Case #" << test_case << ": " << abs(k - result) << endl; +} + + + +int main(){ + ios::sync_with_stdio(0); + cin.tie(0); + + int t; + cin >> t; + + for(int tc = 1; tc <= t; ++tc){ + run_case(tc); + cout << flush; + } +} \ No newline at end of file diff --git a/google/kickstart/2021roundA/b b/google/kickstart/2021roundA/b new file mode 100755 index 0000000000000000000000000000000000000000..4efefe6c2b20ee9fb5ecff8798736ec32ab7b5bb GIT binary patch literal 41664 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 +#include +#include +#include +#include +#include + +using namespace std; + + + +void run_case(){ + int r, c; + + cin >> r >> c; + + vector> table; + table.reserve(r); + + for(int ri = 0; ri < r; ++ri){ + for(int ci = 0; ci < c; ++ci){ + int i; + cin >> i; + table[ri].push_back(i); + } + } + + +} + +int main(){ + ios::sync_with_stdio(0); + cin.tie(0); + + int t; + cin >> t; + + for(int tc = 1; tc <= t; ++tc){ + cout << "Case #" << tc << ": "; + run_case(); + } +} \ No newline at end of file diff --git a/001/main.py b/projecteuler/001/main.py similarity index 100% rename from 001/main.py rename to projecteuler/001/main.py diff --git a/002/main.py b/projecteuler/002/main.py similarity index 100% rename from 002/main.py rename to projecteuler/002/main.py diff --git a/003/main.py b/projecteuler/003/main.py similarity index 100% rename from 003/main.py rename to projecteuler/003/main.py diff --git a/004/main.py b/projecteuler/004/main.py similarity index 100% rename from 004/main.py rename to projecteuler/004/main.py diff --git a/005/main.py b/projecteuler/005/main.py similarity index 100% rename from 005/main.py rename to projecteuler/005/main.py diff --git a/006/main.py b/projecteuler/006/main.py similarity index 100% rename from 006/main.py rename to projecteuler/006/main.py diff --git a/007/main.py b/projecteuler/007/main.py similarity index 100% rename from 007/main.py rename to projecteuler/007/main.py diff --git a/008/main.py b/projecteuler/008/main.py similarity index 100% rename from 008/main.py rename to projecteuler/008/main.py diff --git a/009/main.py b/projecteuler/009/main.py similarity index 100% rename from 009/main.py rename to projecteuler/009/main.py diff --git a/010/main.py b/projecteuler/010/main.py similarity index 100% rename from 010/main.py rename to projecteuler/010/main.py diff --git a/011/main.py b/projecteuler/011/main.py similarity index 100% rename from 011/main.py rename to projecteuler/011/main.py diff --git a/012/main.py b/projecteuler/012/main.py similarity index 100% rename from 012/main.py rename to projecteuler/012/main.py diff --git a/013/main.py b/projecteuler/013/main.py similarity index 100% rename from 013/main.py rename to projecteuler/013/main.py diff --git a/014/main.py b/projecteuler/014/main.py similarity index 100% rename from 014/main.py rename to projecteuler/014/main.py diff --git a/015/main.py b/projecteuler/015/main.py similarity index 100% rename from 015/main.py rename to projecteuler/015/main.py diff --git a/016/main.py b/projecteuler/016/main.py similarity index 100% rename from 016/main.py rename to projecteuler/016/main.py diff --git a/017/main.py b/projecteuler/017/main.py similarity index 100% rename from 017/main.py rename to projecteuler/017/main.py diff --git a/018/main.py b/projecteuler/018/main.py similarity index 100% rename from 018/main.py rename to projecteuler/018/main.py diff --git a/019/main.py b/projecteuler/019/main.py similarity index 100% rename from 019/main.py rename to projecteuler/019/main.py diff --git a/020/main.py b/projecteuler/020/main.py similarity index 100% rename from 020/main.py rename to projecteuler/020/main.py diff --git a/021/main.py b/projecteuler/021/main.py similarity index 100% rename from 021/main.py rename to projecteuler/021/main.py diff --git a/022/main.py b/projecteuler/022/main.py similarity index 100% rename from 022/main.py rename to projecteuler/022/main.py diff --git a/022/names.txt b/projecteuler/022/names.txt similarity index 100% rename from 022/names.txt rename to projecteuler/022/names.txt diff --git a/023/main.py b/projecteuler/023/main.py similarity index 100% rename from 023/main.py rename to projecteuler/023/main.py diff --git a/024/main.py b/projecteuler/024/main.py similarity index 100% rename from 024/main.py rename to projecteuler/024/main.py diff --git a/025/main.py b/projecteuler/025/main.py similarity index 100% rename from 025/main.py rename to projecteuler/025/main.py diff --git a/026/main.py b/projecteuler/026/main.py similarity index 100% rename from 026/main.py rename to projecteuler/026/main.py diff --git a/027/main.py b/projecteuler/027/main.py similarity index 100% rename from 027/main.py rename to projecteuler/027/main.py diff --git a/028/main.py b/projecteuler/028/main.py similarity index 100% rename from 028/main.py rename to projecteuler/028/main.py diff --git a/029/main.py b/projecteuler/029/main.py similarity index 100% rename from 029/main.py rename to projecteuler/029/main.py diff --git a/030/main.py b/projecteuler/030/main.py similarity index 100% rename from 030/main.py rename to projecteuler/030/main.py diff --git a/031/main.py b/projecteuler/031/main.py similarity index 100% rename from 031/main.py rename to projecteuler/031/main.py diff --git a/032/main.py b/projecteuler/032/main.py similarity index 100% rename from 032/main.py rename to projecteuler/032/main.py diff --git a/033/main.py b/projecteuler/033/main.py similarity index 100% rename from 033/main.py rename to projecteuler/033/main.py diff --git a/034/main.py b/projecteuler/034/main.py similarity index 100% rename from 034/main.py rename to projecteuler/034/main.py diff --git a/035/main.py b/projecteuler/035/main.py similarity index 100% rename from 035/main.py rename to projecteuler/035/main.py diff --git a/036/main.py b/projecteuler/036/main.py similarity index 100% rename from 036/main.py rename to projecteuler/036/main.py diff --git a/037/main.py b/projecteuler/037/main.py similarity index 100% rename from 037/main.py rename to projecteuler/037/main.py diff --git a/038/main.py b/projecteuler/038/main.py similarity index 100% rename from 038/main.py rename to projecteuler/038/main.py diff --git a/039/main.py b/projecteuler/039/main.py similarity index 100% rename from 039/main.py rename to projecteuler/039/main.py diff --git a/040/main.py b/projecteuler/040/main.py similarity index 100% rename from 040/main.py rename to projecteuler/040/main.py diff --git a/041/main.py b/projecteuler/041/main.py similarity index 100% rename from 041/main.py rename to projecteuler/041/main.py diff --git a/042/main.py b/projecteuler/042/main.py similarity index 100% rename from 042/main.py rename to projecteuler/042/main.py diff --git a/043/main.py b/projecteuler/043/main.py similarity index 100% rename from 043/main.py rename to projecteuler/043/main.py diff --git a/044/main.py b/projecteuler/044/main.py similarity index 100% rename from 044/main.py rename to projecteuler/044/main.py diff --git a/045/main.py b/projecteuler/045/main.py similarity index 100% rename from 045/main.py rename to projecteuler/045/main.py diff --git a/046/main.py b/projecteuler/046/main.py similarity index 100% rename from 046/main.py rename to projecteuler/046/main.py diff --git a/047/main.py b/projecteuler/047/main.py similarity index 100% rename from 047/main.py rename to projecteuler/047/main.py diff --git a/048/main.py b/projecteuler/048/main.py similarity index 100% rename from 048/main.py rename to projecteuler/048/main.py diff --git a/049/main.py b/projecteuler/049/main.py similarity index 100% rename from 049/main.py rename to projecteuler/049/main.py diff --git a/050/main.py b/projecteuler/050/main.py similarity index 100% rename from 050/main.py rename to projecteuler/050/main.py diff --git a/051/main.py b/projecteuler/051/main.py similarity index 100% rename from 051/main.py rename to projecteuler/051/main.py diff --git a/052/main.py b/projecteuler/052/main.py similarity index 100% rename from 052/main.py rename to projecteuler/052/main.py diff --git a/053/main.py b/projecteuler/053/main.py similarity index 100% rename from 053/main.py rename to projecteuler/053/main.py diff --git a/054/main.py b/projecteuler/054/main.py similarity index 100% rename from 054/main.py rename to projecteuler/054/main.py diff --git a/054/poker.txt b/projecteuler/054/poker.txt similarity index 100% rename from 054/poker.txt rename to projecteuler/054/poker.txt diff --git a/055/main.py b/projecteuler/055/main.py similarity index 100% rename from 055/main.py rename to projecteuler/055/main.py diff --git a/056/main.py b/projecteuler/056/main.py similarity index 100% rename from 056/main.py rename to projecteuler/056/main.py diff --git a/057/main.py b/projecteuler/057/main.py similarity index 100% rename from 057/main.py rename to projecteuler/057/main.py diff --git a/058/main.py b/projecteuler/058/main.py similarity index 100% rename from 058/main.py rename to projecteuler/058/main.py diff --git a/059/main.cpp b/projecteuler/059/main.cpp similarity index 100% rename from 059/main.cpp rename to projecteuler/059/main.cpp diff --git a/059/main.py b/projecteuler/059/main.py similarity index 100% rename from 059/main.py rename to projecteuler/059/main.py diff --git a/060/main.cpp b/projecteuler/060/main.cpp similarity index 100% rename from 060/main.cpp rename to projecteuler/060/main.cpp diff --git a/061/main.cpp b/projecteuler/061/main.cpp similarity index 54% rename from 061/main.cpp rename to projecteuler/061/main.cpp index ed81495..ecf18f9 100644 --- a/061/main.cpp +++ b/projecteuler/061/main.cpp @@ -20,6 +20,7 @@ Find the sum of the only ordered set of six cyclic 4-digit numbers for which eac #include #include #include +#include using namespace std; @@ -51,62 +52,80 @@ bool validEnd(uint n){ return n % 100 >= 10; } -void fillVector(std::vector & toFill, const uint bitmask, uint (*calc)(uint n)){ +std::set results; +const unsigned int Limit = 10000; +std::vector all(Limit, 0); +uint finalMask = 0b111111000; + +void fillVector(vector & toFill, const uint bitmask, uint (*calc)(uint n)){ uint value = calc(0); for(uint i = 0; value < 10000; ++i){ if(value >= 1000 && validEnd(value)){ - toFill[value] |= bitmask; + toFill[value] |= bitmask & finalMask; } value = calc(i + 1); } } -// Non-recursive version of Heap's algorithm for permutations -// Source: https://en.wikipedia.org/wiki/Heap%27s_algorithm -vector> permutations(uint n, vector & A){ - vector> result; - vector c(n, 0); - - result.push_back(A); - - uint i = 1; - while(i < n){ - if(c[i] < i){ - if(i % 2 == 0){ - swap(A[0], A[i]); - } else{ - swap(A[c[i]], A[i]); - } - result.push_back(A); - c[i] += 1; - i = 1; - } else{ - c[i] = 0; - i++; - } - } - return result; -} - -bool checkCyclicness(const vector & v){ - for(int i = 0; i < 5; ++i){ - uint end = v[i] % 100; - uint start = v[i + 1] / 100; - - if(end != start){ - return false; - } - } - if(v[5] % 100 != v[0] / 100){ - return false; - } - - return true; -} - void search(vector & sequence, uint mask = 0){ - + unsigned int from = 1000; + unsigned int to = 10000; + + if(!sequence.empty()){ + auto lowerTwoDigits = sequence.back() % 100; + from = lowerTwoDigits * 100; + to = from + 100; + } + + for(auto next = from; next < to; ++next){ + auto categories = all[next]; + if(categories == 0){ + continue; + } + + bool isUnique = true; + for(auto x : sequence){ + if(x == next){ + isUnique = false; + break; + } + if(!isUnique){ + continue; + } + for(auto j = 3; j <=8; ++j){ + auto thisCategory = 1 << j; + if((categories && thisCategory) == 0){ + continue; + } + + if((mask & thisCategory) != 0){ + continue; + } + + auto nextMask = mask | thisCategory; + if(nextMask == finalMask){ + auto first = sequence.front(); + + auto lowerTwoDigits = next % 100; + auto upperTwoDigits = first / 100; + + if(lowerTwoDigits == upperTwoDigits){ + auto sum = next; + for(auto x : sequence){ + sum += x; + } + results.insert(sum); + } + } + else{ + sequence.push_back(next); + search(sequence, nextMask); + sequence.pop_back(); + } + } + } + } } int main(){ @@ -114,21 +133,21 @@ int main(){ cout << "Hello this is Patrick" << endl; auto start = chrono::high_resolution_clock::now(); - // creating big vector with the numeric values and their corresponding mask - uint finalMask = 0b111111000; - // Finally learned what exactly it means when 1 << n, which is nice - vector all(10000, 0); fillVector(all, 1 << 3, triangle); fillVector(all, 1 << 4, square); fillVector(all, 1 << 5, pentagonal); fillVector(all, 1 << 6, hexagonal); fillVector(all, 1 << 7, heptagonal); fillVector(all, 1 << 8, octogonal); - + vector sequence; + search(sequence); + + for(auto x : results){ + cout << x << endl; + } - cout << "Cycle not found" << endl; auto duration = chrono::duration_cast(chrono::high_resolution_clock::now() - start); cout << (float)duration.count()/1000 << endl; return 0; diff --git a/063/main.cpp b/projecteuler/063/main.cpp similarity index 100% rename from 063/main.cpp rename to projecteuler/063/main.cpp diff --git a/CMakeLists.txt b/projecteuler/CMakeLists.txt similarity index 100% rename from CMakeLists.txt rename to projecteuler/CMakeLists.txt diff --git a/LICENSE b/projecteuler/LICENSE similarity index 100% rename from LICENSE rename to projecteuler/LICENSE diff --git a/README.md b/projecteuler/README.md similarity index 100% rename from README.md rename to projecteuler/README.md diff --git a/projecteuler/base.cpp b/projecteuler/base.cpp new file mode 100644 index 0000000..6cce239 --- /dev/null +++ b/projecteuler/base.cpp @@ -0,0 +1,16 @@ +#include +#include + +using namespace std; + +int main(){ + + cout << "Hello this is Patrick" << endl; + auto start = chrono::high_resolution_clock::now(); + + // Insert code here + + auto duration = chrono::duration_cast(chrono::high_resolution_clock::now() - start); + cout << (float)duration.count()/1000 << endl; + return 0; +} \ No newline at end of file diff --git a/base.py b/projecteuler/base.py similarity index 100% rename from base.py rename to projecteuler/base.py diff --git a/txts/cipher.txt b/projecteuler/txts/cipher.txt similarity index 100% rename from txts/cipher.txt rename to projecteuler/txts/cipher.txt