day 05 - original solution

This commit is contained in:
yosh 2022-12-05 20:57:52 -05:00
parent a750d1af0d
commit 9cee8f812c
5 changed files with 1077 additions and 4 deletions

29
05.c Normal file
View File

@ -0,0 +1,29 @@
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <stdint.h>
int main(char argc, char **argv)
{
char boxes[9][100]; // 100's probably safe
char (*colptr)[100] = &boxes; // pointer to an array of 100 chars, so pointer to each box
char *buf = NULL;
size_t blen = 0;
char c, i, j; // looping vars
// pass 1, for grabbing boxes array
while (getline(&buf, &blen, stdin)) {
if (*buf == '\n')
break;
printf(buf);
i = 1;
j = 0;
for (c = buf[i]; j < 9; i += 4, j++) {
if (c >= 'A' && c <= 'A') {
}
}
}
free(buffer);
return 0;
}

26
05.sh Executable file
View File

@ -0,0 +1,26 @@
#!/bin/sh
set -euf
# hardcoded input. go ahead, kill me
LINES="GWLJBRTD
CWS
MTZR
VPSHCTD
ZDLTPG
DCQJZRBF
RTFMJDBS
MVTBRHL
VSDPQ
x" # the x is here so that command substitution does not remove trailing newlines
LINES2="$LINES" # part 2
IFS=","
while read -r l; do
set -- $l # 1 = number, 2 = from, 3 = to
# I'm able to save .2 seconds of runtime by replacing all printfs with a here-doc, but that makes this unreadable as fuck
b="$(printf "%s" "$LINES" | sed "${2}q;d" | cut -c -${1})" # p2
c="$(printf "%s" "$b" | rev)" # p1
LINES="$(printf "%s" "$LINES" | sed -E -e "${3}s/^/$b/" -e "${2}s/^.{$1}//")"
LINES2="$(printf "%s" "$LINES2" | sed -E -e "${3}s/^/$c/" -e "${2}s/^.{$1}//")"
done < 05_i2
printf "PART 1\n---\n%s---\nPART 2\n---\n%s" "${LINES%x}" "${LINES2%x}"

503
05_i2 Normal file
View File

@ -0,0 +1,503 @@
1,3,5
5,5,4
6,7,3
6,1,3
1,1,9
1,1,4
3,6,9
2,7,5
1,5,7
1,7,2
2,2,5
2,6,3
6,8,9
7,3,9
1,8,7
8,9,7
5,4,8
1,6,2
2,8,4
9,9,1
2,8,5
1,8,5
5,9,2
1,6,8
5,1,7
1,8,2
2,1,7
1,2,6
4,5,4
2,1,4
13,7,8
3,8,6
2,6,8
10,3,5
2,7,6
3,5,6
10,8,1
1,8,6
6,2,4
1,5,8
5,6,3
2,8,6
1,7,9
2,2,7
3,5,1
2,7,2
6,6,3
7,5,6
5,3,2
10,1,8
2,1,3
8,3,7
9,4,8
1,9,2
2,7,8
4,6,9
1,4,9
5,7,4
3,6,5
1,1,5
14,4,8
3,9,7
4,5,9
2,4,1
27,8,6
2,7,2
2,7,4
4,2,9
7,8,4
10,4,1
18,6,5
6,9,2
1,9,5
11,2,6
2,5,4
1,2,8
2,4,9
2,8,3
1,6,8
4,9,7
4,7,8
7,5,1
4,6,3
2,3,7
6,5,3
2,8,2
14,6,2
3,8,1
15,2,3
1,6,1
14,3,2
2,2,5
1,9,3
13,1,3
4,2,6
10,1,3
2,6,9
6,2,9
6,5,2
2,6,8
7,9,5
1,5,8
2,7,6
34,3,6
19,6,2
12,6,9
3,6,3
2,3,2
1,6,5
17,2,8
2,3,2
8,9,4
7,5,2
5,4,1
4,1,6
1,1,6
6,6,8
2,8,4
17,8,6
2,4,5
17,6,9
22,9,7
1,5,2
20,2,7
29,7,9
1,4,7
3,8,3
1,8,5
3,8,2
2,2,4
27,9,7
2,3,2
1,5,2
18,7,5
1,3,2
1,5,6
18,5,3
1,6,3
2,9,5
10,3,5
4,3,6
1,7,1
1,5,1
6,7,6
1,6,2
4,4,8
5,5,4
1,3,8
2,1,8
2,2,5
3,3,8
6,8,2
1,3,9
1,6,3
6,2,8
7,8,4
8,5,2
5,4,6
2,8,3
2,3,9
1,3,9
2,7,1
2,1,2
12,2,4
1,9,7
1,6,2
9,7,9
1,8,2
9,9,8
6,7,8
4,4,1
6,2,5
1,4,9
3,1,9
6,4,5
5,8,9
8,4,6
3,9,8
1,9,3
3,8,3
5,9,2
3,2,6
3,6,9
3,6,2
4,2,6
6,9,7
1,1,8
8,8,5
20,5,3
2,2,8
6,7,1
10,6,3
4,6,7
4,1,9
2,1,2
3,6,9
5,8,3
3,7,9
17,3,2
1,6,2
2,6,9
1,6,4
12,9,2
1,4,7
8,3,8
8,8,9
7,9,2
1,9,7
18,2,9
1,7,2
2,7,1
1,1,2
4,2,7
15,9,3
1,9,1
2,1,8
6,2,4
8,2,1
2,8,5
2,9,3
4,4,1
2,5,8
2,8,9
14,3,1
2,9,7
2,4,3
1,2,9
5,7,9
21,1,9
2,1,6
3,2,4
1,7,3
19,9,5
1,2,7
1,7,2
3,4,2
19,5,7
2,2,5
1,5,3
1,3,4
8,9,4
1,6,3
1,2,6
1,2,1
8,7,3
5,4,7
2,6,4
1,5,9
1,1,6
1,1,2
2,4,7
1,4,2
2,4,9
1,6,8
1,1,5
1,8,6
1,1,4
25,3,1
1,4,2
2,3,6
3,1,9
6,9,8
1,6,3
1,2,9
15,7,6
2,2,6
1,3,8
1,1,4
6,8,4
1,3,8
1,8,5
2,5,2
8,6,7
1,8,7
1,9,4
9,4,5
19,1,3
9,3,5
6,7,2
2,1,7
7,2,4
7,5,6
5,4,3
3,5,8
1,2,4
2,4,8
14,6,1
6,5,6
1,5,2
7,1,6
1,2,4
4,6,4
1,5,4
2,1,9
2,9,4
2,1,8
9,3,6
3,7,4
4,8,6
3,7,6
1,7,2
1,7,5
3,8,4
26,6,1
8,1,2
1,6,4
5,2,7
2,2,4
10,4,7
1,6,1
22,1,2
1,6,1
6,4,7
1,5,1
1,1,2
21,7,2
38,2,3
8,2,6
2,4,8
2,8,2
1,1,3
1,2,8
1,2,5
6,6,4
2,4,2
2,2,6
1,8,2
28,3,1
11,1,2
8,1,7
4,6,4
8,3,1
8,2,5
6,5,4
2,5,4
8,3,4
22,4,1
2,3,5
33,1,5
26,5,6
4,5,7
2,2,7
2,7,2
2,7,8
2,8,3
6,1,3
5,5,1
1,5,7
7,7,5
4,5,6
5,1,8
4,2,4
2,7,4
2,7,3
5,4,6
1,8,2
1,2,4
10,3,6
44,6,9
2,5,7
1,5,8
41,9,1
1,6,4
2,8,1
1,7,3
1,3,8
2,9,8
29,1,9
2,1,5
2,8,3
1,3,5
2,5,9
1,5,7
25,9,2
10,2,1
1,7,8
2,4,1
2,8,9
1,8,6
4,2,4
4,2,5
1,6,5
1,2,7
2,4,1
18,1,3
8,9,4
15,3,9
3,4,8
4,5,8
4,2,4
10,9,4
4,8,5
2,7,2
11,4,9
12,4,9
2,5,7
4,2,4
5,8,1
1,5,6
1,4,6
1,3,9
1,5,7
4,1,6
6,1,5
6,5,9
3,7,6
9,6,5
8,5,2
7,2,3
1,3,1
7,3,5
2,4,1
1,2,6
2,1,3
8,5,9
3,1,3
1,6,1
2,4,1
1,5,2
2,1,6
2,6,3
2,3,2
2,2,4
1,2,6
3,3,9
2,4,8
3,3,1
4,1,7
2,8,4
7,9,6
1,1,4
11,9,7
3,9,3
14,9,5
6,6,5
4,5,9
10,7,6
1,3,7
2,4,1
4,7,9
9,6,1
3,6,5
15,9,1
1,4,7
4,9,7
12,5,1
3,7,3
4,7,2
1,9,3
22,1,2
21,2,6
3,1,9
1,3,7
1,7,3
1,3,2
8,1,4
1,9,2
7,4,8
3,3,9
3,3,5
4,2,3
1,1,3
4,8,5
2,8,3
5,3,2
6,5,3
2,5,8
2,1,7
2,7,4
15,6,9
8,3,1
3,5,9
2,4,9
8,1,3
8,9,8
1,1,4
3,5,9
4,8,1
1,3,9
2,4,3
2,8,6
3,8,7
8,2,5
3,5,2
4,3,4
3,6,1
2,5,9
4,4,1
2,5,6
1,5,4
2,2,1
4,3,9
1,7,3
2,7,4
2,4,7
1,6,7
1,2,8
2,3,9
14,1,8
1,6,2
2,7,1
3,8,3
6,8,5

513
05_input Normal file
View File

@ -0,0 +1,513 @@
[G] [D] [R]
[W] [V] [C] [T] [M]
[L] [P] [Z] [Q] [F] [V]
[J] [S] [D] [J] [M] [T] [V]
[B] [M] [H] [L] [Z] [J] [B] [S]
[R] [C] [T] [C] [T] [R] [D] [R] [D]
[T] [W] [Z] [T] [P] [B] [B] [H] [P]
[D] [S] [R] [D] [G] [F] [S] [L] [Q]
1 2 3 4 5 6 7 8 9
move 1 from 3 to 5
move 5 from 5 to 4
move 6 from 7 to 3
move 6 from 1 to 3
move 1 from 1 to 9
move 1 from 1 to 4
move 3 from 6 to 9
move 2 from 7 to 5
move 1 from 5 to 7
move 1 from 7 to 2
move 2 from 2 to 5
move 2 from 6 to 3
move 6 from 8 to 9
move 7 from 3 to 9
move 1 from 8 to 7
move 8 from 9 to 7
move 5 from 4 to 8
move 1 from 6 to 2
move 2 from 8 to 4
move 9 from 9 to 1
move 2 from 8 to 5
move 1 from 8 to 5
move 5 from 9 to 2
move 1 from 6 to 8
move 5 from 1 to 7
move 1 from 8 to 2
move 2 from 1 to 7
move 1 from 2 to 6
move 4 from 5 to 4
move 2 from 1 to 4
move 13 from 7 to 8
move 3 from 8 to 6
move 2 from 6 to 8
move 10 from 3 to 5
move 2 from 7 to 6
move 3 from 5 to 6
move 10 from 8 to 1
move 1 from 8 to 6
move 6 from 2 to 4
move 1 from 5 to 8
move 5 from 6 to 3
move 2 from 8 to 6
move 1 from 7 to 9
move 2 from 2 to 7
move 3 from 5 to 1
move 2 from 7 to 2
move 6 from 6 to 3
move 7 from 5 to 6
move 5 from 3 to 2
move 10 from 1 to 8
move 2 from 1 to 3
move 8 from 3 to 7
move 9 from 4 to 8
move 1 from 9 to 2
move 2 from 7 to 8
move 4 from 6 to 9
move 1 from 4 to 9
move 5 from 7 to 4
move 3 from 6 to 5
move 1 from 1 to 5
move 14 from 4 to 8
move 3 from 9 to 7
move 4 from 5 to 9
move 2 from 4 to 1
move 27 from 8 to 6
move 2 from 7 to 2
move 2 from 7 to 4
move 4 from 2 to 9
move 7 from 8 to 4
move 10 from 4 to 1
move 18 from 6 to 5
move 6 from 9 to 2
move 1 from 9 to 5
move 11 from 2 to 6
move 2 from 5 to 4
move 1 from 2 to 8
move 2 from 4 to 9
move 2 from 8 to 3
move 1 from 6 to 8
move 4 from 9 to 7
move 4 from 7 to 8
move 7 from 5 to 1
move 4 from 6 to 3
move 2 from 3 to 7
move 6 from 5 to 3
move 2 from 8 to 2
move 14 from 6 to 2
move 3 from 8 to 1
move 15 from 2 to 3
move 1 from 6 to 1
move 14 from 3 to 2
move 2 from 2 to 5
move 1 from 9 to 3
move 13 from 1 to 3
move 4 from 2 to 6
move 10 from 1 to 3
move 2 from 6 to 9
move 6 from 2 to 9
move 6 from 5 to 2
move 2 from 6 to 8
move 7 from 9 to 5
move 1 from 5 to 8
move 2 from 7 to 6
move 34 from 3 to 6
move 19 from 6 to 2
move 12 from 6 to 9
move 3 from 6 to 3
move 2 from 3 to 2
move 1 from 6 to 5
move 17 from 2 to 8
move 2 from 3 to 2
move 8 from 9 to 4
move 7 from 5 to 2
move 5 from 4 to 1
move 4 from 1 to 6
move 1 from 1 to 6
move 6 from 6 to 8
move 2 from 8 to 4
move 17 from 8 to 6
move 2 from 4 to 5
move 17 from 6 to 9
move 22 from 9 to 7
move 1 from 5 to 2
move 20 from 2 to 7
move 29 from 7 to 9
move 1 from 4 to 7
move 3 from 8 to 3
move 1 from 8 to 5
move 3 from 8 to 2
move 2 from 2 to 4
move 27 from 9 to 7
move 2 from 3 to 2
move 1 from 5 to 2
move 18 from 7 to 5
move 1 from 3 to 2
move 1 from 5 to 6
move 18 from 5 to 3
move 1 from 6 to 3
move 2 from 9 to 5
move 10 from 3 to 5
move 4 from 3 to 6
move 1 from 7 to 1
move 1 from 5 to 1
move 6 from 7 to 6
move 1 from 6 to 2
move 4 from 4 to 8
move 5 from 5 to 4
move 1 from 3 to 8
move 2 from 1 to 8
move 2 from 2 to 5
move 3 from 3 to 8
move 6 from 8 to 2
move 1 from 3 to 9
move 1 from 6 to 3
move 6 from 2 to 8
move 7 from 8 to 4
move 8 from 5 to 2
move 5 from 4 to 6
move 2 from 8 to 3
move 2 from 3 to 9
move 1 from 3 to 9
move 2 from 7 to 1
move 2 from 1 to 2
move 12 from 2 to 4
move 1 from 9 to 7
move 1 from 6 to 2
move 9 from 7 to 9
move 1 from 8 to 2
move 9 from 9 to 8
move 6 from 7 to 8
move 4 from 4 to 1
move 6 from 2 to 5
move 1 from 4 to 9
move 3 from 1 to 9
move 6 from 4 to 5
move 5 from 8 to 9
move 8 from 4 to 6
move 3 from 9 to 8
move 1 from 9 to 3
move 3 from 8 to 3
move 5 from 9 to 2
move 3 from 2 to 6
move 3 from 6 to 9
move 3 from 6 to 2
move 4 from 2 to 6
move 6 from 9 to 7
move 1 from 1 to 8
move 8 from 8 to 5
move 20 from 5 to 3
move 2 from 2 to 8
move 6 from 7 to 1
move 10 from 6 to 3
move 4 from 6 to 7
move 4 from 1 to 9
move 2 from 1 to 2
move 3 from 6 to 9
move 5 from 8 to 3
move 3 from 7 to 9
move 17 from 3 to 2
move 1 from 6 to 2
move 2 from 6 to 9
move 1 from 6 to 4
move 12 from 9 to 2
move 1 from 4 to 7
move 8 from 3 to 8
move 8 from 8 to 9
move 7 from 9 to 2
move 1 from 9 to 7
move 18 from 2 to 9
move 1 from 7 to 2
move 2 from 7 to 1
move 1 from 1 to 2
move 4 from 2 to 7
move 15 from 9 to 3
move 1 from 9 to 1
move 2 from 1 to 8
move 6 from 2 to 4
move 8 from 2 to 1
move 2 from 8 to 5
move 2 from 9 to 3
move 4 from 4 to 1
move 2 from 5 to 8
move 2 from 8 to 9
move 14 from 3 to 1
move 2 from 9 to 7
move 2 from 4 to 3
move 1 from 2 to 9
move 5 from 7 to 9
move 21 from 1 to 9
move 2 from 1 to 6
move 3 from 2 to 4
move 1 from 7 to 3
move 19 from 9 to 5
move 1 from 2 to 7
move 1 from 7 to 2
move 3 from 4 to 2
move 19 from 5 to 7
move 2 from 2 to 5
move 1 from 5 to 3
move 1 from 3 to 4
move 8 from 9 to 4
move 1 from 6 to 3
move 1 from 2 to 6
move 1 from 2 to 1
move 8 from 7 to 3
move 5 from 4 to 7
move 2 from 6 to 4
move 1 from 5 to 9
move 1 from 1 to 6
move 1 from 1 to 2
move 2 from 4 to 7
move 1 from 4 to 2
move 2 from 4 to 9
move 1 from 6 to 8
move 1 from 1 to 5
move 1 from 8 to 6
move 1 from 1 to 4
move 25 from 3 to 1
move 1 from 4 to 2
move 2 from 3 to 6
move 3 from 1 to 9
move 6 from 9 to 8
move 1 from 6 to 3
move 1 from 2 to 9
move 15 from 7 to 6
move 2 from 2 to 6
move 1 from 3 to 8
move 1 from 1 to 4
move 6 from 8 to 4
move 1 from 3 to 8
move 1 from 8 to 5
move 2 from 5 to 2
move 8 from 6 to 7
move 1 from 8 to 7
move 1 from 9 to 4
move 9 from 4 to 5
move 19 from 1 to 3
move 9 from 3 to 5
move 6 from 7 to 2
move 2 from 1 to 7
move 7 from 2 to 4
move 7 from 5 to 6
move 5 from 4 to 3
move 3 from 5 to 8
move 1 from 2 to 4
move 2 from 4 to 8
move 14 from 6 to 1
move 6 from 5 to 6
move 1 from 5 to 2
move 7 from 1 to 6
move 1 from 2 to 4
move 4 from 6 to 4
move 1 from 5 to 4
move 2 from 1 to 9
move 2 from 9 to 4
move 2 from 1 to 8
move 9 from 3 to 6
move 3 from 7 to 4
move 4 from 8 to 6
move 3 from 7 to 6
move 1 from 7 to 2
move 1 from 7 to 5
move 3 from 8 to 4
move 26 from 6 to 1
move 8 from 1 to 2
move 1 from 6 to 4
move 5 from 2 to 7
move 2 from 2 to 4
move 10 from 4 to 7
move 1 from 6 to 1
move 22 from 1 to 2
move 1 from 6 to 1
move 6 from 4 to 7
move 1 from 5 to 1
move 1 from 1 to 2
move 21 from 7 to 2
move 38 from 2 to 3
move 8 from 2 to 6
move 2 from 4 to 8
move 2 from 8 to 2
move 1 from 1 to 3
move 1 from 2 to 8
move 1 from 2 to 5
move 6 from 6 to 4
move 2 from 4 to 2
move 2 from 2 to 6
move 1 from 8 to 2
move 28 from 3 to 1
move 11 from 1 to 2
move 8 from 1 to 7
move 4 from 6 to 4
move 8 from 3 to 1
move 8 from 2 to 5
move 6 from 5 to 4
move 2 from 5 to 4
move 8 from 3 to 4
move 22 from 4 to 1
move 2 from 3 to 5
move 33 from 1 to 5
move 26 from 5 to 6
move 4 from 5 to 7
move 2 from 2 to 7
move 2 from 7 to 2
move 2 from 7 to 8
move 2 from 8 to 3
move 6 from 1 to 3
move 5 from 5 to 1
move 1 from 5 to 7
move 7 from 7 to 5
move 4 from 5 to 6
move 5 from 1 to 8
move 4 from 2 to 4
move 2 from 7 to 4
move 2 from 7 to 3
move 5 from 4 to 6
move 1 from 8 to 2
move 1 from 2 to 4
move 10 from 3 to 6
move 44 from 6 to 9
move 2 from 5 to 7
move 1 from 5 to 8
move 41 from 9 to 1
move 1 from 6 to 4
move 2 from 8 to 1
move 1 from 7 to 3
move 1 from 3 to 8
move 2 from 9 to 8
move 29 from 1 to 9
move 2 from 1 to 5
move 2 from 8 to 3
move 1 from 3 to 5
move 2 from 5 to 9
move 1 from 5 to 7
move 25 from 9 to 2
move 10 from 2 to 1
move 1 from 7 to 8
move 2 from 4 to 1
move 2 from 8 to 9
move 1 from 8 to 6
move 4 from 2 to 4
move 4 from 2 to 5
move 1 from 6 to 5
move 1 from 2 to 7
move 2 from 4 to 1
move 18 from 1 to 3
move 8 from 9 to 4
move 15 from 3 to 9
move 3 from 4 to 8
move 4 from 5 to 8
move 4 from 2 to 4
move 10 from 9 to 4
move 4 from 8 to 5
move 2 from 7 to 2
move 11 from 4 to 9
move 12 from 4 to 9
move 2 from 5 to 7
move 4 from 2 to 4
move 5 from 8 to 1
move 1 from 5 to 6
move 1 from 4 to 6
move 1 from 3 to 9
move 1 from 5 to 7
move 4 from 1 to 6
move 6 from 1 to 5
move 6 from 5 to 9
move 3 from 7 to 6
move 9 from 6 to 5
move 8 from 5 to 2
move 7 from 2 to 3
move 1 from 3 to 1
move 7 from 3 to 5
move 2 from 4 to 1
move 1 from 2 to 6
move 2 from 1 to 3
move 8 from 5 to 9
move 3 from 1 to 3
move 1 from 6 to 1
move 2 from 4 to 1
move 1 from 5 to 2
move 2 from 1 to 6
move 2 from 6 to 3
move 2 from 3 to 2
move 2 from 2 to 4
move 1 from 2 to 6
move 3 from 3 to 9
move 2 from 4 to 8
move 3 from 3 to 1
move 4 from 1 to 7
move 2 from 8 to 4
move 7 from 9 to 6
move 1 from 1 to 4
move 11 from 9 to 7
move 3 from 9 to 3
move 14 from 9 to 5
move 6 from 6 to 5
move 4 from 5 to 9
move 10 from 7 to 6
move 1 from 3 to 7
move 2 from 4 to 1
move 4 from 7 to 9
move 9 from 6 to 1
move 3 from 6 to 5
move 15 from 9 to 1
move 1 from 4 to 7
move 4 from 9 to 7
move 12 from 5 to 1
move 3 from 7 to 3
move 4 from 7 to 2
move 1 from 9 to 3
move 22 from 1 to 2
move 21 from 2 to 6
move 3 from 1 to 9
move 1 from 3 to 7
move 1 from 7 to 3
move 1 from 3 to 2
move 8 from 1 to 4
move 1 from 9 to 2
move 7 from 4 to 8
move 3 from 3 to 9
move 3 from 3 to 5
move 4 from 2 to 3
move 1 from 1 to 3
move 4 from 8 to 5
move 2 from 8 to 3
move 5 from 3 to 2
move 6 from 5 to 3
move 2 from 5 to 8
move 2 from 1 to 7
move 2 from 7 to 4
move 15 from 6 to 9
move 8 from 3 to 1
move 3 from 5 to 9
move 2 from 4 to 9
move 8 from 1 to 3
move 8 from 9 to 8
move 1 from 1 to 4
move 3 from 5 to 9
move 4 from 8 to 1
move 1 from 3 to 9
move 2 from 4 to 3
move 2 from 8 to 6
move 3 from 8 to 7
move 8 from 2 to 5
move 3 from 5 to 2
move 4 from 3 to 4
move 3 from 6 to 1
move 2 from 5 to 9
move 4 from 4 to 1
move 2 from 5 to 6
move 1 from 5 to 4
move 2 from 2 to 1
move 4 from 3 to 9
move 1 from 7 to 3
move 2 from 7 to 4
move 2 from 4 to 7
move 1 from 6 to 7
move 1 from 2 to 8
move 2 from 3 to 9
move 14 from 1 to 8
move 1 from 6 to 2
move 2 from 7 to 1
move 3 from 8 to 3
move 6 from 8 to 5

View File

@ -5,7 +5,9 @@ mainly going to be using shell + posix-defined utilities, probably
this repo will also include online solutions that I think are neat, indicated by "ONLINE" and with credit in the file
## Days
1. awk (uses features exclusive to GNU's implementation, gawk)
2. shell (completely POSIX-conforming implementation)
3. awk (POSIX-conforming)
4. shell (POSIX, no external utilities used)
1. awk (GNU gawk)
2. shell (POSIX)
3. awk (POSIX)
4. shell (POSIX)
5. shell (POSIX; modified input, see 05_i2. could easily be adapted to not rely on it though)
- I also started work on a "general-case" C solution, but it's currently incomplete