Skip to content

Commit 3a54699

Browse files
committed
feat: 2024 day 12
1 parent ccb8b7c commit 3a54699

File tree

3 files changed

+246
-100
lines changed

3 files changed

+246
-100
lines changed

2024/12a.py

+52
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
from aoc import *
2+
3+
4+
def search(i, j, m, visited, grouped: set):
5+
visited.add((i, j))
6+
plant = m[i, j]
7+
[
8+
search(di, dj, m, visited, grouped)
9+
for di, dj in [
10+
(i + di, j + dj)
11+
for di, dj in ((1, 0), (0, 1), (-1, 0), (0, -1))
12+
if (i + di, j + dj) in m
13+
and (i + di, j + dj) not in visited
14+
and m[i + di, j + dj] == plant
15+
]
16+
]
17+
grouped.update(visited)
18+
return visited
19+
20+
21+
def main(infi: str):
22+
inp = load_map_dd(infi)
23+
values = {v for v in inp.values()}
24+
grouped = set()
25+
groups = [
26+
search(i, j, inp, set(), grouped)
27+
for (i, j), plant in inp.items()
28+
if (i, j) not in grouped
29+
]
30+
return sum(
31+
len(g)
32+
* sum(
33+
1
34+
for _, _ in [
35+
(i + di, j + dj)
36+
for i, j in g
37+
for di, dj in ((1, 0), (0, 1), (-1, 0), (0, -1))
38+
if (i + di, j + dj) not in g
39+
]
40+
)
41+
for g in groups
42+
)
43+
44+
45+
DAY = 12
46+
FILE_TEST = f"{DAY}_testa.txt"
47+
# FILE_TEST = f"{DAY}_testb.txt"
48+
FILE_EXP = f"{DAY}_exp.txt"
49+
FILE = f"{DAY}.txt"
50+
# test_and_submit(main, FILE_TEST, FILE_EXP, FILE, DAY)
51+
# print(main(FILE_TEST))
52+
print(main(FILE))

2024/12b.py

+93
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
from aoc import *
2+
from collections import Counter
3+
4+
5+
def search(i, j, m, visited, grouped: set):
6+
visited.add((i, j))
7+
plant = m[i, j]
8+
[
9+
search(di, dj, m, visited, grouped)
10+
for di, dj in [
11+
(i + di, j + dj)
12+
for di, dj in ((1, 0), (0, 1), (-1, 0), (0, -1))
13+
if (i + di, j + dj) in m
14+
and (i + di, j + dj) not in visited
15+
and m[i + di, j + dj] == plant
16+
]
17+
]
18+
grouped.update(visited)
19+
return visited
20+
21+
22+
def main(infi: str):
23+
inp = load_map_dd(infi)
24+
values = {v for v in inp.values()}
25+
maxi, maxj = map_dd_size(inp)
26+
grouped = set()
27+
groups = [
28+
search(i, j, inp, set(), grouped)
29+
for (i, j), plant in inp.items()
30+
if (i, j) not in grouped
31+
]
32+
pos_to_groupid = {
33+
(i, j): gid for (gid, g) in enumerate(groups) for (i, j) in g
34+
}
35+
36+
fences = 0
37+
c = Counter()
38+
for i in range(-1, maxi):
39+
prevstate = (inp[i, 0], inp[i + 1, 0])
40+
if not (prevstate[0] == prevstate[1]):
41+
c[pos_to_groupid.get((i, 0), None)] += 1
42+
c[pos_to_groupid.get((i + 1, 0), None)] += 1
43+
# print(
44+
# 'counting between', inp.get((i, 0)), 'and', inp.get((i + 1, 0))
45+
# )
46+
for j in range(1, maxj):
47+
if (state := (inp[i, j], inp[i + 1, j])) != prevstate and state[
48+
0
49+
] != state[1]:
50+
# Upper plant changed, add fence for it
51+
if state[0] != prevstate[0] or prevstate[0] == prevstate[1]:
52+
c[pos_to_groupid.get((i, j), None)] += 1
53+
# print('UP adding to', inp.get((i, j)), f'between {inp[i, j], inp[i + 1, j]}')
54+
# Lower plant changed, add fence for it
55+
if state[1] != prevstate[1] or prevstate[0] == prevstate[1]:
56+
c[pos_to_groupid.get((i + 1, j), None)] += 1
57+
# print('DOWN adding to', inp.get((i + 1, j)), f'between {inp[i, j], inp[i + 1, j]}')
58+
prevstate = state
59+
# print('horizontal')
60+
for j in range(-1, maxj):
61+
prevstate = (inp[0, j], inp[0, j + 1])
62+
if not (prevstate[0] == prevstate[1]):
63+
c[pos_to_groupid.get((0, j), None)] += 1
64+
c[pos_to_groupid.get((0, j + 1), None)] += 1
65+
# print(
66+
# 'counting between', inp.get((0, j)), 'and', inp.get((0, j + 1))
67+
# )
68+
for i in range(1, maxi):
69+
if (state := (inp[i, j], inp[i, j + 1])) != prevstate and state[
70+
0
71+
] != state[1]:
72+
# Left plant changed, add fence for it
73+
if state[0] != prevstate[0] or prevstate[0] == prevstate[1]:
74+
c[pos_to_groupid.get((i, j), None)] += 1
75+
# print('LEFT adding to', inp.get((i, j)), f'between {inp[i, j], inp[i, j + 1]}')
76+
# Right plant changed, add fence for it
77+
if state[1] != prevstate[1] or prevstate[0] == prevstate[1]:
78+
c[pos_to_groupid.get((i, j + 1), None)] += 1
79+
# print('RIGHT adding to', inp.get((i, j + 1)), f'between {inp[i, j], inp[i, j + 1]}')
80+
prevstate = state
81+
return sum(len(g) * c[gid] for gid, g in enumerate(groups))
82+
83+
84+
DAY = 12
85+
FILE_TEST = f"{DAY}_testa.txt"
86+
FILE_TEST = f"{DAY}_testb.txt"
87+
FILE_TEST = f"{DAY}_testc.txt"
88+
FILE_TEST = f"{DAY}_testd.txt"
89+
FILE_EXP = f"{DAY}_exp.txt"
90+
FILE = f"{DAY}.txt"
91+
# test_and_submit(main, FILE_TEST, FILE_EXP, FILE, DAY)
92+
# print(main(FILE_TEST))
93+
print(main(FILE))

README.org

+101-100
Original file line numberDiff line numberDiff line change
@@ -1,100 +1,101 @@
1-
* About
2-
Solutions in *Python*. I'm using the =advent-of-code-data= package to submit
3-
my answers.
4-
* Personal Stats 2024
5-
| Day | Time | Rank | Score | Time | Rank | Score |
6-
|-----+----------+------+-------+----------+-------+-------|
7-
| 11 | 00:16:43 | 4574 | 0 | 04:24:24 | 13605 | 0 |
8-
| 10 | 00:54:16 | 7416 | 0 | 00:56:37 | 6784 | 0 |
9-
| 9 | 00:39:02 | 4986 | 0 | 10:22:50 | 20801 | 0 |
10-
| 8 | 00:20:56 | 2671 | 0 | 00:32:01 | 2868 | 0 |
11-
| 7 | 00:12:12 | 1988 | 0 | 00:14:41 | 1405 | 0 |
12-
| 6 | 00:14:23 | 2159 | 0 | 05:31:24 | 15698 | 0 |
13-
| 5 | 00:14:31 | 2554 | 0 | 00:26:53 | 2592 | 0 |
14-
| 4 | 00:21:24 | 4410 | 0 | 00:42:23 | 5290 | 0 |
15-
| 3 | 00:08:31 | 3378 | 0 | 00:16:11 | 2633 | 0 |
16-
| 2 | 00:10:49 | 3106 | 0 | 00:39:31 | 6052 | 0 |
17-
| 1 | 00:04:51 | 1876 | 0 | 00:08:59 | 2365 | 0 |
18-
* Personal Stats 2023
19-
| Day | Time | Rank | Score | Time | Rank | Score |
20-
| 25 | 00:45:17 | 1080 | 0 | 00:45:20 | 937 | 0 |
21-
| 24 | 00:27:23 | *377* | 0 | 01:57:16 | 764 | 0 |
22-
| 23 | 00:40:17 | 1657 | 0 | 06:48:54 | 3913 | 0 |
23-
| 22 | 01:39:20 | 2321 | 0 | 02:28:12 | 2405 | 0 |
24-
| 21 | 00:23:33 | 2411 | 0 | >24h | 9413 | 0 |
25-
| 20 | 01:03:20 | 1715 | 0 | 01:46:14 | 1301 | 0 |
26-
| 19 | 00:26:14 | 1268 | 0 | 01:26:05 | 1664 | 0 |
27-
| 18 | 00:50:35 | 2886 | 0 | 01:33:41 | 1959 | 0 |
28-
| 17 | 02:40:34 | 3303 | 0 | 03:16:28 | 3227 | 0 |
29-
| 16 | 00:41:04 | 2466 | 0 | 01:44:13 | 4653 | 0 |
30-
| 15 | 00:11:01 | 3854 | 0 | 00:39:21 | 3283 | 0 |
31-
| 14 | 00:19:42 | 3158 | 0 | 01:41:49 | 4234 | 0 |
32-
| 13 | 00:32:26 | 2393 | 0 | 01:04:59 | 2973 | 0 |
33-
| 12 | >24h | 37571 | 0 | >24h | 24563 | 0 |
34-
| 11 | 00:18:24 | 1783 | 0 | 00:38:21 | 3102 | 0 |
35-
| 10 | 00:42:29 | 2518 | 0 | 04:51:26 | 6396 | 0 |
36-
| 9 | 00:14:23 | 2422 | 0 | 00:17:56 | 2118 | 0 |
37-
| 8 | 00:12:05 | 3114 | 0 | 15:25:43 | 37964 | 0 |
38-
| 7 | 00:54:31 | 6134 | 0 | 01:05:32 | 4267 | 0 |
39-
| 6 | *00:08:17* | 1844 | 0 | *00:10:36* | 1335 | 0 |
40-
| 5 | 00:37:03 | 4259 | 0 | >24h | 72220 | 0 |
41-
| 4 | 00:10:40 | 3478 | 0 | 00:28:37 | 4095 | 0 |
42-
| 3 | 00:24:41 | 2221 | 0 | 00:31:51 | 1615 | 0 |
43-
| 2 | 09:09:47 | 55095 | 0 | 09:13:47 | 51351 | 0 |
44-
| 1 | 00:09:59 | 4908 | 0 | 00:20:00 | 1732 | 0 |
45-
* Personal Stats 2021
46-
| Day | Time | Rank | Score | Time | Rank | Score |
47-
| 25 | 01:02:27 | 2625 | 0 | | | |
48-
| 24 | 06:02:51 | 2267 | 0 | 06:04:39 | 2168 | 0 |
49-
| 22 | 00:12:35 | 809 | 0 | | | |
50-
| 21 | 00:31:09 | 3235 | 0 | >24h | 21369 | 0 |
51-
| 20 | 00:49:55 | 1685 | 0 | 00:50:27 | 1436 | 0 |
52-
| 19 | 03:14:39 | 1480 | 0 | 03:25:05 | 1385 | 0 |
53-
| 18 | 02:24:54 | 1946 | 0 | 02:35:38 | 1938 | 0 |
54-
| 17 | 15:08:33 | 19264 | 0 | 15:20:18 | 17709 | 0 |
55-
| 16 | 04:32:37 | 7383 | 0 | 04:54:37 | 6476 | 0 |
56-
| 15 | 00:26:35 | 1655 | 0 | 02:01:16 | 3978 | 0 |
57-
| 14 | 00:26:39 | 4660 | 0 | 01:06:26 | 3216 | 0 |
58-
| 13 | 00:31:53 | 3517 | 0 | 00:35:29 | 2692 | 0 |
59-
| 12 | 00:20:43 | 1645 | 0 | 00:41:46 | 2108 | 0 |
60-
| 11 | 00:17:20 | 934 | 0 | 00:20:15 | 930 | 0 |
61-
| 10 | 00:06:50 | *605* | 0 | 00:21:18 | 2001 | 0 |
62-
| 9 | 00:11:59 | 2324 | 0 | 00:53:03 | 4305 | 0 |
63-
| 8 | 00:09:47 | 1801 | 0 | 01:07:50 | 2640 | 0 |
64-
| 7 | 00:05:02 | 1481 | 0 | 00:19:24 | 4935 | 0 |
65-
| 6 | 00:07:41 | 1893 | 0 | 01:53:34 | 10437 | 0 |
66-
| 5 | 00:13:36 | 1275 | 0 | 00:42:40 | 3413 | 0 |
67-
| 4 | 00:29:45 | 2571 | 0 | 00:53:34 | 3834 | 0 |
68-
| 3 | 00:33:21 | 10609 | 0 | 00:47:44 | 5089 | 0 |
69-
| 2 | 00:05:39 | 3733 | 0 | 00:08:33 | 3205 | 0 |
70-
| 1 | *00:02:33* | 1048 | 0 | *00:06:39* | 1169 | 0 |
71-
* Personal Stats 2020
72-
| Day | Time | Rank | Score | Time | Rank | Score |
73-
| 25 | 00:32:11 | 2354 | 0 | 00:32:44 | 1968 | 0 |
74-
| 24 | 00:23:36 | 1362 | 0 | 01:21:19 | 2287 | 0 |
75-
| 23 | 00:53:56 | 2265 | 0 | 02:09:18 | 1579 | 0 |
76-
| 22 | 00:17:33 | 2337 | 0 | 01:50:06 | 2972 | 0 |
77-
| 21 | 01:09:20 | 2557 | 0 | 01:29:52 | 2620 | 0 |
78-
| 20 | 01:45:13 | 2354 | 0 | 13:18:21 | 3901 | 0 |
79-
| 19 | 02:48:48 | 3837 | 0 | 14:13:20 | 8175 | 0 |
80-
| 18 | 01:47:16 | 4744 | 0 | 03:35:09 | 5552 | 0 |
81-
| 17 | 00:33:19 | 1331 | 0 | 00:36:42 | 1106 | 0 |
82-
| 16 | 00:23:47 | 2622 | 0 | 04:33:09 | 7351 | 0 |
83-
| 15 | 00:33:20 | 3788 | 0 | 00:34:38 | 2298 | 0 |
84-
| 14 | 00:21:44 | 1768 | 0 | 00:46:54 | 1578 | 0 |
85-
| 13 | 00:11:14 | 2147 | 0 | 00:23:40 | *275* | 0 |
86-
| 12 | 00:15:27 | 1937 | 0 | 00:51:47 | 3360 | 0 |
87-
| 11 | 00:28:26 | 2117 | 0 | 00:40:18 | 1544 | 0 |
88-
| 10 | 00:10:41 | 2601 | 0 | 15:03:27 | 24828 | 0 |
89-
| 9 | 00:10:31 | 2331 | 0 | 00:21:49 | 2594 | 0 |
90-
| 8 | 00:08:46 | 1779 | 0 | 00:23:44 | 2166 | 0 |
91-
| 7 | 01:23:47 | 6990 | 0 | 01:32:08 | 5165 | 0 |
92-
| 6 | 00:11:55 | 4452 | 0 | 00:18:16 | 3274 | 0 |
93-
| 5 | 00:10:47 | 1436 | 0 | 00:15:09 | 1320 | 0 |
94-
| 4 | >24h | 60291 | 0 | >24h | 51929 | 0 |
95-
| 3 | 00:11:52 | 2945 | 0 | 00:25:23 | 4018 | 0 |
96-
| 2 | 00:11:46 | 2696 | 0 | 00:15:04 | 2083 | 0 |
97-
| 1 | *00:07:22* | 631 | 0 | *00:08:34* | 548 | 0 |
98-
* License
99-
All source code files are under /GPL-3.0 License/. See =LICENSE= for more
100-
information.
1+
* About
2+
Solutions in *Python*. I'm using the =advent-of-code-data= package to submit
3+
my answers.
4+
* Personal Stats 2024
5+
| Day | Time | Rank | Score | Time | Rank | Score |
6+
|-----+----------+------+-------+----------+-------+-------|
7+
| 12 | 00:43:21 | 4911 | 0 | >24h | 27971 | 0 |
8+
| 11 | 00:16:43 | 4574 | 0 | 04:24:24 | 13605 | 0 |
9+
| 10 | 00:54:16 | 7416 | 0 | 00:56:37 | 6784 | 0 |
10+
| 9 | 00:39:02 | 4986 | 0 | 10:22:50 | 20801 | 0 |
11+
| 8 | 00:20:56 | 2671 | 0 | 00:32:01 | 2868 | 0 |
12+
| 7 | 00:12:12 | 1988 | 0 | 00:14:41 | 1405 | 0 |
13+
| 6 | 00:14:23 | 2159 | 0 | 05:31:24 | 15698 | 0 |
14+
| 5 | 00:14:31 | 2554 | 0 | 00:26:53 | 2592 | 0 |
15+
| 4 | 00:21:24 | 4410 | 0 | 00:42:23 | 5290 | 0 |
16+
| 3 | 00:08:31 | 3378 | 0 | 00:16:11 | 2633 | 0 |
17+
| 2 | 00:10:49 | 3106 | 0 | 00:39:31 | 6052 | 0 |
18+
| 1 | 00:04:51 | 1876 | 0 | 00:08:59 | 2365 | 0 |
19+
* Personal Stats 2023
20+
| Day | Time | Rank | Score | Time | Rank | Score |
21+
| 25 | 00:45:17 | 1080 | 0 | 00:45:20 | 937 | 0 |
22+
| 24 | 00:27:23 | *377* | 0 | 01:57:16 | 764 | 0 |
23+
| 23 | 00:40:17 | 1657 | 0 | 06:48:54 | 3913 | 0 |
24+
| 22 | 01:39:20 | 2321 | 0 | 02:28:12 | 2405 | 0 |
25+
| 21 | 00:23:33 | 2411 | 0 | >24h | 9413 | 0 |
26+
| 20 | 01:03:20 | 1715 | 0 | 01:46:14 | 1301 | 0 |
27+
| 19 | 00:26:14 | 1268 | 0 | 01:26:05 | 1664 | 0 |
28+
| 18 | 00:50:35 | 2886 | 0 | 01:33:41 | 1959 | 0 |
29+
| 17 | 02:40:34 | 3303 | 0 | 03:16:28 | 3227 | 0 |
30+
| 16 | 00:41:04 | 2466 | 0 | 01:44:13 | 4653 | 0 |
31+
| 15 | 00:11:01 | 3854 | 0 | 00:39:21 | 3283 | 0 |
32+
| 14 | 00:19:42 | 3158 | 0 | 01:41:49 | 4234 | 0 |
33+
| 13 | 00:32:26 | 2393 | 0 | 01:04:59 | 2973 | 0 |
34+
| 12 | >24h | 37571 | 0 | >24h | 24563 | 0 |
35+
| 11 | 00:18:24 | 1783 | 0 | 00:38:21 | 3102 | 0 |
36+
| 10 | 00:42:29 | 2518 | 0 | 04:51:26 | 6396 | 0 |
37+
| 9 | 00:14:23 | 2422 | 0 | 00:17:56 | 2118 | 0 |
38+
| 8 | 00:12:05 | 3114 | 0 | 15:25:43 | 37964 | 0 |
39+
| 7 | 00:54:31 | 6134 | 0 | 01:05:32 | 4267 | 0 |
40+
| 6 | *00:08:17* | 1844 | 0 | *00:10:36* | 1335 | 0 |
41+
| 5 | 00:37:03 | 4259 | 0 | >24h | 72220 | 0 |
42+
| 4 | 00:10:40 | 3478 | 0 | 00:28:37 | 4095 | 0 |
43+
| 3 | 00:24:41 | 2221 | 0 | 00:31:51 | 1615 | 0 |
44+
| 2 | 09:09:47 | 55095 | 0 | 09:13:47 | 51351 | 0 |
45+
| 1 | 00:09:59 | 4908 | 0 | 00:20:00 | 1732 | 0 |
46+
* Personal Stats 2021
47+
| Day | Time | Rank | Score | Time | Rank | Score |
48+
| 25 | 01:02:27 | 2625 | 0 | | | |
49+
| 24 | 06:02:51 | 2267 | 0 | 06:04:39 | 2168 | 0 |
50+
| 22 | 00:12:35 | 809 | 0 | | | |
51+
| 21 | 00:31:09 | 3235 | 0 | >24h | 21369 | 0 |
52+
| 20 | 00:49:55 | 1685 | 0 | 00:50:27 | 1436 | 0 |
53+
| 19 | 03:14:39 | 1480 | 0 | 03:25:05 | 1385 | 0 |
54+
| 18 | 02:24:54 | 1946 | 0 | 02:35:38 | 1938 | 0 |
55+
| 17 | 15:08:33 | 19264 | 0 | 15:20:18 | 17709 | 0 |
56+
| 16 | 04:32:37 | 7383 | 0 | 04:54:37 | 6476 | 0 |
57+
| 15 | 00:26:35 | 1655 | 0 | 02:01:16 | 3978 | 0 |
58+
| 14 | 00:26:39 | 4660 | 0 | 01:06:26 | 3216 | 0 |
59+
| 13 | 00:31:53 | 3517 | 0 | 00:35:29 | 2692 | 0 |
60+
| 12 | 00:20:43 | 1645 | 0 | 00:41:46 | 2108 | 0 |
61+
| 11 | 00:17:20 | 934 | 0 | 00:20:15 | 930 | 0 |
62+
| 10 | 00:06:50 | *605* | 0 | 00:21:18 | 2001 | 0 |
63+
| 9 | 00:11:59 | 2324 | 0 | 00:53:03 | 4305 | 0 |
64+
| 8 | 00:09:47 | 1801 | 0 | 01:07:50 | 2640 | 0 |
65+
| 7 | 00:05:02 | 1481 | 0 | 00:19:24 | 4935 | 0 |
66+
| 6 | 00:07:41 | 1893 | 0 | 01:53:34 | 10437 | 0 |
67+
| 5 | 00:13:36 | 1275 | 0 | 00:42:40 | 3413 | 0 |
68+
| 4 | 00:29:45 | 2571 | 0 | 00:53:34 | 3834 | 0 |
69+
| 3 | 00:33:21 | 10609 | 0 | 00:47:44 | 5089 | 0 |
70+
| 2 | 00:05:39 | 3733 | 0 | 00:08:33 | 3205 | 0 |
71+
| 1 | *00:02:33* | 1048 | 0 | *00:06:39* | 1169 | 0 |
72+
* Personal Stats 2020
73+
| Day | Time | Rank | Score | Time | Rank | Score |
74+
| 25 | 00:32:11 | 2354 | 0 | 00:32:44 | 1968 | 0 |
75+
| 24 | 00:23:36 | 1362 | 0 | 01:21:19 | 2287 | 0 |
76+
| 23 | 00:53:56 | 2265 | 0 | 02:09:18 | 1579 | 0 |
77+
| 22 | 00:17:33 | 2337 | 0 | 01:50:06 | 2972 | 0 |
78+
| 21 | 01:09:20 | 2557 | 0 | 01:29:52 | 2620 | 0 |
79+
| 20 | 01:45:13 | 2354 | 0 | 13:18:21 | 3901 | 0 |
80+
| 19 | 02:48:48 | 3837 | 0 | 14:13:20 | 8175 | 0 |
81+
| 18 | 01:47:16 | 4744 | 0 | 03:35:09 | 5552 | 0 |
82+
| 17 | 00:33:19 | 1331 | 0 | 00:36:42 | 1106 | 0 |
83+
| 16 | 00:23:47 | 2622 | 0 | 04:33:09 | 7351 | 0 |
84+
| 15 | 00:33:20 | 3788 | 0 | 00:34:38 | 2298 | 0 |
85+
| 14 | 00:21:44 | 1768 | 0 | 00:46:54 | 1578 | 0 |
86+
| 13 | 00:11:14 | 2147 | 0 | 00:23:40 | *275* | 0 |
87+
| 12 | 00:15:27 | 1937 | 0 | 00:51:47 | 3360 | 0 |
88+
| 11 | 00:28:26 | 2117 | 0 | 00:40:18 | 1544 | 0 |
89+
| 10 | 00:10:41 | 2601 | 0 | 15:03:27 | 24828 | 0 |
90+
| 9 | 00:10:31 | 2331 | 0 | 00:21:49 | 2594 | 0 |
91+
| 8 | 00:08:46 | 1779 | 0 | 00:23:44 | 2166 | 0 |
92+
| 7 | 01:23:47 | 6990 | 0 | 01:32:08 | 5165 | 0 |
93+
| 6 | 00:11:55 | 4452 | 0 | 00:18:16 | 3274 | 0 |
94+
| 5 | 00:10:47 | 1436 | 0 | 00:15:09 | 1320 | 0 |
95+
| 4 | >24h | 60291 | 0 | >24h | 51929 | 0 |
96+
| 3 | 00:11:52 | 2945 | 0 | 00:25:23 | 4018 | 0 |
97+
| 2 | 00:11:46 | 2696 | 0 | 00:15:04 | 2083 | 0 |
98+
| 1 | *00:07:22* | 631 | 0 | *00:08:34* | 548 | 0 |
99+
* License
100+
All source code files are under /GPL-3.0 License/. See =LICENSE= for more
101+
information.

0 commit comments

Comments
 (0)