Fix formatting for printing

This commit is contained in:
David Doblas Jiménez 2021-10-18 10:38:54 +02:00
parent a68f70122e
commit c96101ad8e
8 changed files with 100 additions and 14 deletions

View File

@ -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())

View File

@ -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())

View File

@ -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())

View File

@ -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())

View File

@ -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())

View File

@ -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())

View File

@ -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())

86
src/Julia/Problem059.jl Normal file
View File

@ -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())