Skip to content

Commit 03298c6

Browse files
committed
Add day 24
1 parent 5396993 commit 03298c6

File tree

5 files changed

+319
-7
lines changed

5 files changed

+319
-7
lines changed

2021/24/24.cpp

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
#include <bits/stdc++.h>
2+
using namespace std;
3+
4+
long long calcz(long long num) {
5+
long long w = 0, x = 0, z = 0, p = 0;
6+
7+
8+
p=(long long)(1e13); w=(num/p)%10; x=z%26; x+=14; x=x!=w; z*=25*x+1; z+=(w+8)*x; if (!w) return -p;
9+
p=(long long)(1e12); w=(num/p)%10; x=z%26; x+=13; x=x!=w; z*=25*x+1; z+=(w+8)*x; if (!w) return -p;
10+
p=(long long)(1e11); w=(num/p)%10; x=z%26; x+=13; x=x!=w; z*=25*x+1; z+=(w+3)*x; if (!w) return -p;
11+
p=(long long)(1e10); w=(num/p)%10; x=z%26; x+=12; x=x!=w; z*=25*x+1; z+=(w+10)*x;if (!w) return -p;
12+
p=(long long)(1e9); w=(num/p)%10; x=z%26; z/=26; x+=-12; x=x!=w; z*=25*x+1; z+=(w+8)*x; if (!w||x) return -p;
13+
p=(long long)(1e8); w=(num/p)%10; x=z%26; x+=12; x=x!=w; z*=25*x+1; z+=(w+8)*x; if (!w) return -p;
14+
p=(long long)(1e7); w=(num/p)%10; x=z%26; z/=26; x+=-2; x=x!=w; z*=25*x+1; z+=(w+8)*x; if (!w||x) return -p;
15+
p=(long long)(1e6); w=(num/p)%10; x=z%26; z/=26; x+=-11; x=x!=w; z*=25*x+1; z+=(w+5)*x; if (!w||x) return -p;
16+
p=(long long)(1e5); w=(num/p)%10; x=z%26; x+=13; x=x!=w; z*=25*x+1; z+=(w+9)*x; if (!w) return -p;
17+
p=(long long)(1e4); w=(num/p)%10; x=z%26; x+=14; x=x!=w; z*=25*x+1; z+=(w+3)*x; if (!w) return -p;
18+
p=(long long)(1e3); w=(num/p)%10; x=z%26; z/=26; x+=0; x=x!=w; z*=25*x+1; z+=(w+4)*x; if (!w||x) return -p;
19+
p=(long long)(1e2); w=(num/p)%10; x=z%26; z/=26; x+=-12; x=x!=w; z*=25*x+1; z+=(w+9)*x; if (!w||x) return -p;
20+
p=(long long)(1e1); w=(num/p)%10; x=z%26; z/=26; x+=-13; x=x!=w; z*=25*x+1; z+=(w+2)*x; if (!w||x) return -p;
21+
p=(long long)(1e0); w=(num/p)%10; x=z%26; z/=26; x+=-6; x=x!=w; z*=25*x+1; z+=(w+7)*x; if (!w||x) return -p;
22+
return z;
23+
}
24+
25+
int main() {
26+
for (long long i = 99999999999999; i > 0; i--) {
27+
long long z = calcz(i);
28+
if (z < 0)
29+
i += z + 1;
30+
if (z == 0) {
31+
cout << i << endl;
32+
return 0;
33+
}
34+
}
35+
}
36+

2021/24/24.jl

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# Already parsed input file, since this one depends so much on the input.
2+
# Making it general is not very useful.
3+
4+
function main()
5+
div_z = [1, 1, 1, 1, 26, 1, 26, 26, 1, 1, 26, 26, 26, 26]
6+
add_x = [14, 13, 13, 12, -12, 12, -2, -11, 13, 14, 0, -12, -13, -6]
7+
add_w = [8, 8, 3, 10, 8, 8, 8, 5, 9, 3, 4, 9, 2, 7]
8+
num = 11111111111111
9+
function calculate_z()
10+
z, x = 0, 0
11+
for p=13:-1:0
12+
i = 14 - p
13+
w = (num ÷ 10^p) % 10
14+
x = (z % 26 + add_x[i]) != w
15+
z = z ÷ div_z[i] * (25x+1) + (w+add_w[i]) * x
16+
(w == 0 || div_z[i] == 26 && x != 0) && return num += 10^p;
17+
end
18+
return z
19+
end
20+
solutions = []
21+
add_sol() = (push!(solutions, num); (num += 1))
22+
while num < 1e14
23+
calculate_z() == 0 && add_sol()
24+
end
25+
println(solutions[end])
26+
println(solutions[1])
27+
end
28+
main()
29+

2021/24/input.ans

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
79997391969649
2+
16931171414113

2021/24/input.in

Lines changed: 252 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,252 @@
1+
inp w
2+
mul x 0
3+
add x z
4+
mod x 26
5+
div z 1
6+
add x 14
7+
eql x w
8+
eql x 0
9+
mul y 0
10+
add y 25
11+
mul y x
12+
add y 1
13+
mul z y
14+
mul y 0
15+
add y w
16+
add y 8
17+
mul y x
18+
add z y
19+
inp w
20+
mul x 0
21+
add x z
22+
mod x 26
23+
div z 1
24+
add x 13
25+
eql x w
26+
eql x 0
27+
mul y 0
28+
add y 25
29+
mul y x
30+
add y 1
31+
mul z y
32+
mul y 0
33+
add y w
34+
add y 8
35+
mul y x
36+
add z y
37+
inp w
38+
mul x 0
39+
add x z
40+
mod x 26
41+
div z 1
42+
add x 13
43+
eql x w
44+
eql x 0
45+
mul y 0
46+
add y 25
47+
mul y x
48+
add y 1
49+
mul z y
50+
mul y 0
51+
add y w
52+
add y 3
53+
mul y x
54+
add z y
55+
inp w
56+
mul x 0
57+
add x z
58+
mod x 26
59+
div z 1
60+
add x 12
61+
eql x w
62+
eql x 0
63+
mul y 0
64+
add y 25
65+
mul y x
66+
add y 1
67+
mul z y
68+
mul y 0
69+
add y w
70+
add y 10
71+
mul y x
72+
add z y
73+
inp w
74+
mul x 0
75+
add x z
76+
mod x 26
77+
div z 26
78+
add x -12
79+
eql x w
80+
eql x 0
81+
mul y 0
82+
add y 25
83+
mul y x
84+
add y 1
85+
mul z y
86+
mul y 0
87+
add y w
88+
add y 8
89+
mul y x
90+
add z y
91+
inp w
92+
mul x 0
93+
add x z
94+
mod x 26
95+
div z 1
96+
add x 12
97+
eql x w
98+
eql x 0
99+
mul y 0
100+
add y 25
101+
mul y x
102+
add y 1
103+
mul z y
104+
mul y 0
105+
add y w
106+
add y 8
107+
mul y x
108+
add z y
109+
inp w
110+
mul x 0
111+
add x z
112+
mod x 26
113+
div z 26
114+
add x -2
115+
eql x w
116+
eql x 0
117+
mul y 0
118+
add y 25
119+
mul y x
120+
add y 1
121+
mul z y
122+
mul y 0
123+
add y w
124+
add y 8
125+
mul y x
126+
add z y
127+
inp w
128+
mul x 0
129+
add x z
130+
mod x 26
131+
div z 26
132+
add x -11
133+
eql x w
134+
eql x 0
135+
mul y 0
136+
add y 25
137+
mul y x
138+
add y 1
139+
mul z y
140+
mul y 0
141+
add y w
142+
add y 5
143+
mul y x
144+
add z y
145+
inp w
146+
mul x 0
147+
add x z
148+
mod x 26
149+
div z 1
150+
add x 13
151+
eql x w
152+
eql x 0
153+
mul y 0
154+
add y 25
155+
mul y x
156+
add y 1
157+
mul z y
158+
mul y 0
159+
add y w
160+
add y 9
161+
mul y x
162+
add z y
163+
inp w
164+
mul x 0
165+
add x z
166+
mod x 26
167+
div z 1
168+
add x 14
169+
eql x w
170+
eql x 0
171+
mul y 0
172+
add y 25
173+
mul y x
174+
add y 1
175+
mul z y
176+
mul y 0
177+
add y w
178+
add y 3
179+
mul y x
180+
add z y
181+
inp w
182+
mul x 0
183+
add x z
184+
mod x 26
185+
div z 26
186+
add x 0
187+
eql x w
188+
eql x 0
189+
mul y 0
190+
add y 25
191+
mul y x
192+
add y 1
193+
mul z y
194+
mul y 0
195+
add y w
196+
add y 4
197+
mul y x
198+
add z y
199+
inp w
200+
mul x 0
201+
add x z
202+
mod x 26
203+
div z 26
204+
add x -12
205+
eql x w
206+
eql x 0
207+
mul y 0
208+
add y 25
209+
mul y x
210+
add y 1
211+
mul z y
212+
mul y 0
213+
add y w
214+
add y 9
215+
mul y x
216+
add z y
217+
inp w
218+
mul x 0
219+
add x z
220+
mod x 26
221+
div z 26
222+
add x -13
223+
eql x w
224+
eql x 0
225+
mul y 0
226+
add y 25
227+
mul y x
228+
add y 1
229+
mul z y
230+
mul y 0
231+
add y w
232+
add y 2
233+
mul y x
234+
add z y
235+
inp w
236+
mul x 0
237+
add x z
238+
mod x 26
239+
div z 26
240+
add x -6
241+
eql x w
242+
eql x 0
243+
mul y 0
244+
add y 25
245+
mul y x
246+
add y 1
247+
mul z y
248+
mul y 0
249+
add y w
250+
add y 7
251+
mul y x
252+
add z y

2021/dummy.py

Lines changed: 0 additions & 7 deletions
This file was deleted.

0 commit comments

Comments
 (0)