main.jl 812 B

123456789101112131415161718192021222324252627282930
  1. using DelimitedFiles
  2. selfdir = joinpath(@__DIR__, "input")
  3. input = readdlm(selfdir)
  4. amount =
  5. [map(x -> parse(Int, x), (x, y)) for (x, y) in [split(x, "-") for x in input[:, 1]]]
  6. function valid_passwords()
  7. valid = 0
  8. for (amount, key, password) in zip(amount, first.(input[:, 2]), input[:, 3])
  9. count = sum([1 for x in password if x == key])
  10. if amount[1] <= count <= amount[2]
  11. valid += 1
  12. end
  13. end
  14. return valid
  15. end
  16. function valid_passwords2()
  17. valid = 0
  18. for (amount, key, password) in zip(amount, first.(input[:, 2]), input[:, 3])
  19. if (password[amount[1]] == key) ⊻ (password[amount[2]] == key)
  20. valid += 1
  21. end
  22. end
  23. return valid
  24. end
  25. valid = valid_passwords()
  26. valid2 = valid_passwords2()