You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

58 lines
1.7 KiB

#!/usr/bin/env julia
using Test
function string_start_index(s, width=4)
delta = width - 1
for i in 1:length(s)-delta
if length(Set(s[i:i+delta])) == width
println(i, " ", s[i:i+delta])
return i + delta
end
end
end
function file_start_index(infile, width=4)
io = open(infile, "r")
data = readchomp(io)
close(io)
return string_start_index(data, width)
end
function test()
@testset "elf signal start ex" verbose=true begin
@test string_start_index("mjqjpqmgbljsphdztnvjfqwrcgsmlb") == 7
@test string_start_index("bvwbjplbgvbhsrlpgdmjqwftvncz") == 5
@test string_start_index("nppdvjthqldpwncqszvftbrmjlhg") == 6
@test string_start_index("nznrnfrfntjfmvfwmzdfjlvtqnbhcprsg") == 10
@test string_start_index("zcfzfwzzqfrljwzlrfnpqdbhtmscgvjw") == 11
@test string_start_index("wewewewewewewewewewewewewebo") == 28
end
@testset "elf signal start in" verbose=true begin
@test file_start_index("input.txt") == 1142
end
@testset "elf signal msg ex" verbose=true begin
@test string_start_index("mjqjpqmgbljsphdztnvjfqwrcgsmlb", 14) == 19
@test string_start_index("bvwbjplbgvbhsrlpgdmjqwftvncz", 14) == 23
@test string_start_index("nppdvjthqldpwncqszvftbrmjlhg", 14) == 23
@test string_start_index("nznrnfrfntjfmvfwmzdfjlvtqnbhcprsg", 14) == 29
@test string_start_index("zcfzfwzzqfrljwzlrfnpqdbhtmscgvjw", 14) == 26
end
@testset "elf signal msg in" verbose=true begin
@test file_start_index("input.txt", 14) == 2803
end
end
function main()
if size(ARGS, 1) == 0
test()
else
infile = ARGS[1]
println("infile = ", infile)
println("start index: ", file_start_index(infile))
end
end
main()