Add files via upload

This commit is contained in:
Peter Norvig 2024-12-16 18:08:27 -08:00 committed by GitHub
parent bc4aeacb27
commit 907d62c912
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 624 additions and 219 deletions

File diff suppressed because it is too large Load Diff

View File

@ -22,7 +22,7 @@
"from collections import Counter, defaultdict, namedtuple, deque, abc\n", "from collections import Counter, defaultdict, namedtuple, deque, abc\n",
"from dataclasses import dataclass, field\n", "from dataclasses import dataclass, field\n",
"from itertools import permutations, combinations, cycle, chain, islice\n", "from itertools import permutations, combinations, cycle, chain, islice\n",
"from itertools import count as count_from, product as cross_product\n", "from itertools import count as count_from, product as cross_product, takewhile\n",
"from typing import *\n", "from typing import *\n",
"from statistics import mean, median\n", "from statistics import mean, median\n",
"from math import ceil, floor, factorial, gcd, log, log2, log10, sqrt, inf, atan2\n", "from math import ceil, floor, factorial, gcd, log, log2, log10, sqrt, inf, atan2\n",
@ -168,7 +168,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 14, "execution_count": 78,
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
"source": [ "source": [
@ -200,17 +200,13 @@
" f' WRONG; expected answer is {self.solution}')\n", " f' WRONG; expected answer is {self.solution}')\n",
" return f'Puzzle {self.puzzle:4.1f}: {secs} seconds, answer {self.got:<15}{comment}'\n", " return f'Puzzle {self.puzzle:4.1f}: {secs} seconds, answer {self.got:<15}{comment}'\n",
"\n", "\n",
"def report(answers):\n", "def summary(answers):\n",
" \"\"\"Print a report that summarizes the answers.\"\"\"\n",
" for d in sorted(answers):\n", " for d in sorted(answers):\n",
" print(answers[d])\n", " print(answers[d])\n",
" secs = sum(answers[d].secs for d in answers)\n", " times = [answers[d].secs for d in answers]\n",
" print(f'\\nTotal time {secs:.4f} seconds, Mean time {secs/len(answers):.4f} seconds')\n", " print(f'\\nCorrect: {quantify(answers[d].ok for d in answers)}/{len(answers)}')\n",
"\n", " print(f'\\nTime in seconds: {median(times):.4f} median, {mean(times):.4f} mean, {sum(times):.4f} total.')"
"def test_answer():\n",
" print(answer(0.1, unknown))\n",
" print(answer(0.2, 2**39, lambda: 2**39))\n",
" print(answer(0.3, 2**39, lambda: 2**39+1))\n",
" print(answer(10.4, unknown, lambda: 2 + 2))"
] ]
}, },
{ {
@ -581,6 +577,8 @@
" \"\"\"Print a representation of the grid.\"\"\"\n", " \"\"\"Print a representation of the grid.\"\"\"\n",
" for row in self.to_rows(xrange, yrange):\n", " for row in self.to_rows(xrange, yrange):\n",
" print(*row, sep=sep)\n", " print(*row, sep=sep)\n",
"\n",
" def __str__(self): return cat(self.to_rows())\n",
" \n", " \n",
" def plot(self, markers={'#': 's', '.': ','}, figsize=(14, 14), **kwds):\n", " def plot(self, markers={'#': 's', '.': ','}, figsize=(14, 14), **kwds):\n",
" \"\"\"Plot a representation of the grid.\"\"\"\n", " \"\"\"Plot a representation of the grid.\"\"\"\n",