day-04.jl (3250B)
1 function part_1(input)
2 start = input[1]
3 finish = input[2]
4 pw_count = 0
5 for first in (start ÷ 100000):(finish ÷ 100000)
6 for second in first:9
7 if first * 100000 + second * 10000 > finish
8 break
9 end
10 for third in second:9
11 for forth in third:9
12 for fifth in forth:9
13 for sixth in fifth:9
14 pw = (
15 first * 100000
16 + second * 10000
17 + third * 1000
18 + forth * 100
19 + fifth * 10
20 + sixth
21 )
22 # Ensure in range.
23 if pw >= start && pw <= finish
24 if (
25 first == second
26 || second == third
27 || third == forth
28 || forth == fifth
29 || fifth == sixth
30 )
31 pw_count += 1
32 end
33 end
34 end
35 end
36 end
37 end
38 end
39 end
40 pw_count
41 end
42
43 function part_2(input)
44 start = input[1]
45 finish = input[2]
46 pw_count = 0
47 for first in (start ÷ 100000):(finish ÷ 100000)
48 for second in first:9
49 if first * 100000 + second * 10000 > finish
50 break
51 end
52 for third in second:9
53 for forth in third:9
54 for fifth in forth:9
55 for sixth in fifth:9
56 pw = (
57 first * 100000
58 + second * 10000
59 + third * 1000
60 + forth * 100
61 + fifth * 10
62 + sixth
63 )
64 # Ensure in range.
65 if pw >= start && pw <= finish
66 if (
67 (first == second && second != third)
68 || (first != second && second == third && third != forth)
69 || (second != third && third == forth && forth != fifth)
70 || (third != forth && forth == fifth && fifth != sixth)
71 || (forth != fifth && fifth == sixth)
72 )
73 pw_count += 1
74 end
75 end
76 end
77 end
78 end
79 end
80 end
81 end
82 pw_count
83 end
84
85 input = map(readlines(open("input.txt"))) do line
86 map(x -> parse(Int, x), split(strip(line), '-'))
87 end[1]
88
89 println("Julia:")
90 println("Part 1: ", part_1(input))
91 println("Part 2: ", part_2(input))