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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy