Browse Source

🔔

master
Roderic Day 5 years ago
parent
commit
3b3b45c67b
2 changed files with 18 additions and 18 deletions
  1. +16
    -0
      toolkit.py
  2. +2
    -18
      y2019/p14.py

+ 16
- 0
toolkit.py View File

rendered += brush[grid.get(complex(x, y))] rendered += brush[grid.get(complex(x, y))]
rendered += '\n' rendered += '\n'
return rendered return rendered


def bsearch(fn, goal, lo, hi):
while hi - lo > 1:
mid = lo + (hi - lo) // 2
if goal < fn(mid):
lo, hi = lo, mid
else:
lo, hi = mid, hi

# check
a, b = fn(lo), fn(hi)
assert a <= goal, 'lower bound too high'
assert goal <= b, 'higher bound too low'

return lo

+ 2
- 18
y2019/p14.py View File

import re import re
import sys import sys


from toolkit import bsearch



text = sys.stdin.read() text = sys.stdin.read()
cookbook = {} cookbook = {}




print(fuel_to_ore({'FUEL': 1})['ORE']) print(fuel_to_ore({'FUEL': 1})['ORE'])


def bsearch(fn, goal, lo, hi):
while hi - lo > 1:
mid = lo + (hi - lo) // 2
if goal < fn(mid):
lo, hi = lo, mid
else:
lo, hi = mid, hi

# check
a, b = fn(lo), fn(hi)
assert a <= goal, 'lower bound too high'
assert goal <= b, 'higher bound too low'

return lo


print(bsearch(lambda n: fuel_to_ore({'FUEL': n})['ORE'], 1E12, 1, 10_000_000)) print(bsearch(lambda n: fuel_to_ore({'FUEL': n})['ORE'], 1E12, 1, 10_000_000))

Loading…
Cancel
Save