"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Summary\n",
"\n",
"This notebook showed how to find the highest-scoring honeycomb, starting from a brute-force baseline approach (which we didn't actually run) and modifying the approach with three key improvements:\n",
"\n",
"1. **Brute Force Enumeration**: Compute total score for every honeycomb; return the highest-scoring.\n",
"2. **Pangram Lettersets**: Compute total score for honeycombs that are pangram lettersets (with all 7 centers).\n",
"3. **Points Table**: Precompute score for each letterset; for each candidate honeycomb, sum 63 letter subset scores.\n",
"4. **Branch and Bound**: Try all 7 centers only for lettersets that score better than the top score so far.\n",
"\n",
"The key ideas paid off in efficiency improvements:\n",
"\n",
"\n",
"|Approach|Honeycombs|Reduction|`total_score` Time|Speedup|Overall Time|Overall Speedup|\n",
"|--------|----------|--------|----|---|---|---|\n",
"|1. **Brute Force Enumeration**|3,364,900|——|9000 microseconds|——|8.5 hours (est.)|——|\n",
"|2. **Pangram Lettersets**|55,902|60×|9000 microseconds|——|500 sec (est.)|60×|\n",
"|3. **Points Table**|55,902|——|26 microseconds|300×|1.6 seconds|20,000×|\n",
"|4. **Branch and Bound**|8,084 |7×|26 microseconds|——|0.35 seconds|90,000×|\n",
"\n"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.6"
}
},
"nbformat": 4,
"nbformat_minor": 4
}