| 123456789101112131415161718192021222324252627282930 |
- using DelimitedFiles
- selfdir = joinpath(@__DIR__, "input")
- input = readdlm(selfdir)
- amount =
- [map(x -> parse(Int, x), (x, y)) for (x, y) in [split(x, "-") for x in input[:, 1]]]
- function valid_passwords()
- valid = 0
- for (amount, key, password) in zip(amount, first.(input[:, 2]), input[:, 3])
- count = sum([1 for x in password if x == key])
- if amount[1] <= count <= amount[2]
- valid += 1
- end
- end
- return valid
- end
- function valid_passwords2()
- valid = 0
- for (amount, key, password) in zip(amount, first.(input[:, 2]), input[:, 3])
- if (password[amount[1]] == key) ⊻ (password[amount[2]] == key)
- valid += 1
- end
- end
- return valid
- end
- valid = valid_passwords()
- valid2 = valid_passwords2()
|