Compare commits
No commits in common. "29b20e27fc3b78c536b0e7764ba7dbf677530134" and "9848440f3ff1e58d02db16330aa6982b2e92329d" have entirely different histories.
29b20e27fc
...
9848440f3f
|
@ -1,58 +0,0 @@
|
||||||
# run me with awk -f sol.awk < input
|
|
||||||
|
|
||||||
/\[/ {
|
|
||||||
gsub("^ ", "[ ]")
|
|
||||||
gsub(" {4}", " [ ]")
|
|
||||||
gsub("^\\[|\\] \\[|\\]$", "")
|
|
||||||
lines[nlines++] = $0
|
|
||||||
if (nstacks < length())
|
|
||||||
nstacks = length()
|
|
||||||
}
|
|
||||||
|
|
||||||
/^$/ {
|
|
||||||
for (i = 1; i <= nstacks; i++) {
|
|
||||||
s = ""
|
|
||||||
for (j = nlines-1; j >= 0; j--) {
|
|
||||||
c = substr(lines[j], i, 1)
|
|
||||||
if (c != " ") s = s c
|
|
||||||
}
|
|
||||||
stack[i] = s
|
|
||||||
stack2[i] = s
|
|
||||||
print s "."
|
|
||||||
}
|
|
||||||
print "----"
|
|
||||||
}
|
|
||||||
|
|
||||||
function reverse(s) {
|
|
||||||
r = ""
|
|
||||||
for (i = length(s); i > 0; i--)
|
|
||||||
r = r substr(s, i, 1)
|
|
||||||
return r
|
|
||||||
}
|
|
||||||
|
|
||||||
function move(S, n, fr, to, flip) {
|
|
||||||
#print n, fr, to
|
|
||||||
m = length(S[fr]) - n
|
|
||||||
if (flip) chunk = reverse(substr(S[fr], m+1))
|
|
||||||
else chunk = substr(S[fr], m+1)
|
|
||||||
#print stack[to]
|
|
||||||
#print stack[fr]
|
|
||||||
S[to] = S[to] chunk
|
|
||||||
S[fr] = substr(S[fr], 1, m)
|
|
||||||
#print stack[to]
|
|
||||||
#print stack[fr]
|
|
||||||
}
|
|
||||||
|
|
||||||
/^move .* from .* to .*/ {
|
|
||||||
move(stack, $2, $4, $6, 0)
|
|
||||||
move(stack2, $2, $4, $6, 1)
|
|
||||||
}
|
|
||||||
|
|
||||||
END {
|
|
||||||
for (i = 1; i <= nstacks; i++) {
|
|
||||||
p1 = p1 substr(stack[i], length(stack[i]))
|
|
||||||
p2 = p2 substr(stack2[i], length(stack2[i]))
|
|
||||||
}
|
|
||||||
print p1
|
|
||||||
print p2
|
|
||||||
}
|
|
1014
day07/input
1014
day07/input
File diff suppressed because it is too large
Load Diff
23
day07/sample
23
day07/sample
|
@ -1,23 +0,0 @@
|
||||||
$ cd /
|
|
||||||
$ ls
|
|
||||||
dir a
|
|
||||||
14848514 b.txt
|
|
||||||
8504156 c.dat
|
|
||||||
dir d
|
|
||||||
$ cd a
|
|
||||||
$ ls
|
|
||||||
dir e
|
|
||||||
29116 f
|
|
||||||
2557 g
|
|
||||||
62596 h.lst
|
|
||||||
$ cd e
|
|
||||||
$ ls
|
|
||||||
584 i
|
|
||||||
$ cd ..
|
|
||||||
$ cd ..
|
|
||||||
$ cd d
|
|
||||||
$ ls
|
|
||||||
4060174 j
|
|
||||||
8033020 d.log
|
|
||||||
5626152 d.ext
|
|
||||||
7214296 k
|
|
|
@ -1,46 +0,0 @@
|
||||||
# run me with awk -f sol.awk < input
|
|
||||||
|
|
||||||
BEGIN { depth = 0 }
|
|
||||||
|
|
||||||
/^\$/ { cmd = $2 }
|
|
||||||
|
|
||||||
/^\$ cd \/$/ { depth = 0; next }
|
|
||||||
/^\$ cd \.\.$/ { depth -= 1; next }
|
|
||||||
/^\$ cd/ { cwd[depth++] = $3; next }
|
|
||||||
/^\$ ls$/ { next }
|
|
||||||
|
|
||||||
function add(sz) {
|
|
||||||
sizes["/"] += sz
|
|
||||||
path = ""
|
|
||||||
for (i = 0; i < depth; i++) {
|
|
||||||
path = path "/" cwd[i]
|
|
||||||
sizes[path] += sz
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
cmd == "ls" && $1 != "dir" {
|
|
||||||
#print(dir "/" $2, $1)
|
|
||||||
add($1)
|
|
||||||
}
|
|
||||||
|
|
||||||
END {
|
|
||||||
print sizes["/"]
|
|
||||||
# for (i in sizes) { print i, sizes[i] }
|
|
||||||
|
|
||||||
t1 = 0
|
|
||||||
for (i in sizes) {
|
|
||||||
if (sizes[i] <= 100000) {
|
|
||||||
t1 += sizes[i]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
print t1
|
|
||||||
|
|
||||||
t2 = 0
|
|
||||||
for (i in sizes) {
|
|
||||||
if (70000000 - sizes["/"] + sizes[i] >= 30000000) {
|
|
||||||
if (sizes[i] < t2 || t2 == 0)
|
|
||||||
t2 = sizes[i]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
print t2
|
|
||||||
}
|
|
38
day07/sol.py
38
day07/sol.py
|
@ -1,38 +0,0 @@
|
||||||
import sys
|
|
||||||
from collections import defaultdict
|
|
||||||
cmds = open("input").read().split("$")
|
|
||||||
|
|
||||||
cwd = []
|
|
||||||
sizes = defaultdict(lambda: 0)
|
|
||||||
for cmd in cmds:
|
|
||||||
cmd = cmd.strip()
|
|
||||||
if not cmd:
|
|
||||||
continue
|
|
||||||
print(cmd)
|
|
||||||
if cmd.startswith("cd "):
|
|
||||||
dir = cmd.split()[1]
|
|
||||||
if dir == "..":
|
|
||||||
cwd.pop()
|
|
||||||
elif dir == "/":
|
|
||||||
cwd = []
|
|
||||||
else:
|
|
||||||
cwd.append(dir)
|
|
||||||
elif cmd.startswith("ls\n"):
|
|
||||||
files = cmd.splitlines()[1:]
|
|
||||||
for file in files:
|
|
||||||
sz, name = file.split()
|
|
||||||
if sz == 'dir':
|
|
||||||
pass
|
|
||||||
else:
|
|
||||||
print(cwd, name, sizes)
|
|
||||||
for i in range(len(cwd)+1):
|
|
||||||
sizes['/'.join(cwd[:i])] += int(sz)
|
|
||||||
else:
|
|
||||||
print("bad command:" +cmd)
|
|
||||||
|
|
||||||
|
|
||||||
print(sizes)
|
|
||||||
|
|
||||||
print(sum(sz for sz in sizes.values() if sz <= 100000))
|
|
||||||
|
|
||||||
print(min(sz for sz in sizes.values() if 70000000 - sizes[''] + sz >= 30000000))
|
|
Loading…
Reference in New Issue