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