Fix formatting for printing
This commit is contained in:
parent
a68f70122e
commit
c96101ad8e
@ -63,7 +63,7 @@ function Problem51()
|
|||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
println("Time to evaluate Problem 51:")
|
println("Time to evaluate Problem $(lpad(51, 3, "0")):")
|
||||||
@btime Problem51()
|
@btime Problem51()
|
||||||
println("")
|
println("")
|
||||||
println("Result for Problem 51: ", Problem51())
|
println("Result for Problem $(lpad(51, 3, "0")): ", Problem51())
|
||||||
|
@ -27,7 +27,7 @@ function Problem52()
|
|||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
println("Time to evaluate Problem 52:")
|
println("Time to evaluate Problem $(lpad(52, 3, "0")):")
|
||||||
@btime Problem52()
|
@btime Problem52()
|
||||||
println("")
|
println("")
|
||||||
println("Result for Problem 52: ", Problem52())
|
println("Result for Problem $(lpad(52, 3, "0")): ", Problem52())
|
||||||
|
@ -40,7 +40,7 @@ function Problem53()
|
|||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
println("Time to evaluate Problem 53:")
|
println("Time to evaluate Problem $(lpad(53, 3, "0")):")
|
||||||
@btime Problem53()
|
@btime Problem53()
|
||||||
println("")
|
println("")
|
||||||
println("Result for Problem 53: ", Problem53())
|
println("Result for Problem $(lpad(53, 3, "0")): ", Problem53())
|
||||||
|
@ -67,7 +67,7 @@ function Problem55()
|
|||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
println("Time to evaluate Problem 55:")
|
println("Time to evaluate Problem $(lpad(55, 3, "0")):")
|
||||||
@btime Problem55()
|
@btime Problem55()
|
||||||
println("")
|
println("")
|
||||||
println("Result for Problem 55: ", Problem55())
|
println("Result for Problem $(lpad(55, 3, "0")): ", Problem55())
|
||||||
|
@ -34,7 +34,7 @@ function Problem56()
|
|||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
println("Time to evaluate Problem 56:")
|
println("Time to evaluate Problem $(lpad(56, 3, "0")):")
|
||||||
@btime Problem56()
|
@btime Problem56()
|
||||||
println("")
|
println("")
|
||||||
println("Result for Problem 56: ", Problem56())
|
println("Result for Problem $(lpad(56, 3, "0")): ", Problem56())
|
||||||
|
@ -44,7 +44,7 @@ function Problem57()
|
|||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
println("Time to evaluate Problem 57:")
|
println("Time to evaluate Problem $(lpad(57, 3, "0")):")
|
||||||
@btime Problem57()
|
@btime Problem57()
|
||||||
println("")
|
println("")
|
||||||
println("Result for Problem 57: ", Problem57())
|
println("Result for Problem $(lpad(57, 3, "0")): ", Problem57())
|
||||||
|
@ -52,7 +52,7 @@ function Problem58()
|
|||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
println("Time to evaluate Problem 58:")
|
println("Time to evaluate Problem $(lpad(58, 3, "0")):")
|
||||||
@btime Problem58()
|
@btime Problem58()
|
||||||
println("")
|
println("")
|
||||||
println("Result for Problem 58: ", Problem58())
|
println("Result for Problem $(lpad(58, 3, "0")): ", Problem58())
|
||||||
|
86
src/Julia/Problem059.jl
Normal file
86
src/Julia/Problem059.jl
Normal 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())
|
Loading…
x
Reference in New Issue
Block a user