From c96101ad8ebf53f1a382efcd8ac774844bbc5f12 Mon Sep 17 00:00:00 2001 From: daviddoji Date: Mon, 18 Oct 2021 10:38:54 +0200 Subject: [PATCH] Fix formatting for printing --- src/Julia/Problem051.jl | 4 +- src/Julia/Problem052.jl | 4 +- src/Julia/Problem053.jl | 4 +- src/Julia/Problem055.jl | 4 +- src/Julia/Problem056.jl | 4 +- src/Julia/Problem057.jl | 4 +- src/Julia/Problem058.jl | 4 +- src/Julia/Problem059.jl | 86 +++++++++++++++++++++++++++++++++++++++++ 8 files changed, 100 insertions(+), 14 deletions(-) create mode 100644 src/Julia/Problem059.jl diff --git a/src/Julia/Problem051.jl b/src/Julia/Problem051.jl index 1bf70ec..893520e 100644 --- a/src/Julia/Problem051.jl +++ b/src/Julia/Problem051.jl @@ -63,7 +63,7 @@ function Problem51() end -println("Time to evaluate Problem 51:") +println("Time to evaluate Problem $(lpad(51, 3, "0")):") @btime Problem51() println("") -println("Result for Problem 51: ", Problem51()) +println("Result for Problem $(lpad(51, 3, "0")): ", Problem51()) diff --git a/src/Julia/Problem052.jl b/src/Julia/Problem052.jl index 96b8adb..5d00a35 100644 --- a/src/Julia/Problem052.jl +++ b/src/Julia/Problem052.jl @@ -27,7 +27,7 @@ function Problem52() end -println("Time to evaluate Problem 52:") +println("Time to evaluate Problem $(lpad(52, 3, "0")):") @btime Problem52() println("") -println("Result for Problem 52: ", Problem52()) +println("Result for Problem $(lpad(52, 3, "0")): ", Problem52()) diff --git a/src/Julia/Problem053.jl b/src/Julia/Problem053.jl index 30c5a6c..693c80e 100644 --- a/src/Julia/Problem053.jl +++ b/src/Julia/Problem053.jl @@ -40,7 +40,7 @@ function Problem53() end -println("Time to evaluate Problem 53:") +println("Time to evaluate Problem $(lpad(53, 3, "0")):") @btime Problem53() println("") -println("Result for Problem 53: ", Problem53()) +println("Result for Problem $(lpad(53, 3, "0")): ", Problem53()) diff --git a/src/Julia/Problem055.jl b/src/Julia/Problem055.jl index 2278623..34cd40c 100644 --- a/src/Julia/Problem055.jl +++ b/src/Julia/Problem055.jl @@ -67,7 +67,7 @@ function Problem55() end -println("Time to evaluate Problem 55:") +println("Time to evaluate Problem $(lpad(55, 3, "0")):") @btime Problem55() println("") -println("Result for Problem 55: ", Problem55()) +println("Result for Problem $(lpad(55, 3, "0")): ", Problem55()) diff --git a/src/Julia/Problem056.jl b/src/Julia/Problem056.jl index d742028..5d4adbc 100644 --- a/src/Julia/Problem056.jl +++ b/src/Julia/Problem056.jl @@ -34,7 +34,7 @@ function Problem56() end -println("Time to evaluate Problem 56:") +println("Time to evaluate Problem $(lpad(56, 3, "0")):") @btime Problem56() println("") -println("Result for Problem 56: ", Problem56()) +println("Result for Problem $(lpad(56, 3, "0")): ", Problem56()) diff --git a/src/Julia/Problem057.jl b/src/Julia/Problem057.jl index be51ce1..706ae23 100644 --- a/src/Julia/Problem057.jl +++ b/src/Julia/Problem057.jl @@ -44,7 +44,7 @@ function Problem57() end -println("Time to evaluate Problem 57:") +println("Time to evaluate Problem $(lpad(57, 3, "0")):") @btime Problem57() println("") -println("Result for Problem 57: ", Problem57()) +println("Result for Problem $(lpad(57, 3, "0")): ", Problem57()) diff --git a/src/Julia/Problem058.jl b/src/Julia/Problem058.jl index 067e2b4..58504ec 100644 --- a/src/Julia/Problem058.jl +++ b/src/Julia/Problem058.jl @@ -52,7 +52,7 @@ function Problem58() end -println("Time to evaluate Problem 58:") +println("Time to evaluate Problem $(lpad(58, 3, "0")):") @btime Problem58() println("") -println("Result for Problem 58: ", Problem58()) +println("Result for Problem $(lpad(58, 3, "0")): ", Problem58()) diff --git a/src/Julia/Problem059.jl b/src/Julia/Problem059.jl new file mode 100644 index 0000000..bebc675 --- /dev/null +++ b/src/Julia/Problem059.jl @@ -0,0 +1,86 @@ +#= +Created on 17 Oct 2021 + +@author: David Doblas Jiménez +@email: daviddoji@pm.me + +Solution for Problem 59 of Project Euler +https://projecteuler.net/problem=59 +=# + +using BenchmarkTools +using Combinatorics +using DelimitedFiles + +function Problem59() + #= + Each character on a computer is assigned a unique code and the preferred + standard is ASCII (American Standard Code for Information Interchange). + For example, uppercase A = 65, asterisk (*) = 42, and lowercase k = 107. + + A modern encryption method is to take a text file, convert the bytes to + ASCII, then XOR each byte with a given value, taken from a secret key. + The advantage with the XOR function is that using the same encryption key + on the cipher text, restores the plain text; for example, 65 XOR 42 = 107, + then 107 XOR 42 = 65. + + For unbreakable encryption, the key is the same length as the plain text + message, and the key is made up of random bytes. The user would keep the + encrypted message and the encryption key in different locations, and + without both "halves", it is impossible to decrypt the message. + + Unfortunately, this method is impractical for most users, so the modified + method is to use a password as a key. If the password is shorter than the + message, which is likely, the key is repeated cyclically throughout the + message. The balance for this method is using a sufficiently long password + key for security, but short enough to be memorable. + + Your task has been made easy, as the encryption key consists of three + lower case characters. Using p059_cipher.txt, a file containing the + encrypted ASCII codes, and the knowledge that the plain text must contain + common English words, decrypt the message and find the sum of the ASCII + values in the original text. + =# + + file = "/datos/Scripts/Gitea/Project_Euler/src/files/Problem59.txt" + data = readline(file) + data = parse.(Int, split(data, ",")) + # encrypted = readdlm(file, ',', Int) + + # print(encrypted) + + # with open('../files/Problem59.txt', 'r') as f: + # # encrypted = list(map(int, f.read().split(','))) + # encrypted = [int(char) for char in f.read().split(',')] + # # print(encrypted) + # # print(test) + # plain_text = (length(encrypted) ÷ 3) + # println(plain_text) + # ascii_lowercase = join('a':'z') + # for key in combinations(ascii_lowercase, 3) + # decrypted = "" + # for (k, i) in zip(repeat(key, plain_text), encrypted) + # decrypted += Char(round(BigInt(Int(k) ^ i))) + # end + + # # assuming Euler will be in the text + # if "Euler" in decrypted + # return sum([Int(c) for c in decrypted]) + # end + # end + ascisum = 0 + for shift=0:2, c='a':'z' + decrypted = data[1+shift:3:end] .⊻ Int(c) + if minimum(decrypted) == Int(' ') && maximum(decrypted) <= Int('z') + ascisum += sum(decrypted) + end + end + + return ascisum +end + + +println("Time to evaluate Problem 59:") +@btime Problem59() +println("") +println("Result for Problem 59: ", Problem59())