114 lines
3.9 KiB
Plaintext
114 lines
3.9 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "124fe12d",
|
|
"metadata": {},
|
|
"source": [
|
|
"# [Largest Product in a Grid](https://projecteuler.net/problem=11)\n",
|
|
"\n",
|
|
"Here's that whole grid in a NumPy array."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 1,
|
|
"id": "7d93e5b9",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"import numpy as np\n",
|
|
"grid = np.array([[08,02,22,97,38,15,00,40,00,75,04,05,07,78,52,12,50,77,91,08],\n",
|
|
" [49,49,99,40,17,81,18,57,60,87,17,40,98,43,69,48,04,56,62,00],\n",
|
|
" [81,49,31,73,55,79,14,29,93,71,40,67,53,88,30,03,49,13,36,65],\n",
|
|
" [52,70,95,23,04,60,11,42,69,24,68,56,01,32,56,71,37,02,36,91],\n",
|
|
" [22,31,16,71,51,67,63,89,41,92,36,54,22,40,40,28,66,33,13,80],\n",
|
|
" [24,47,32,60,99,03,45,02,44,75,33,53,78,36,84,20,35,17,12,50],\n",
|
|
" [32,98,81,28,64,23,67,10,26,38,40,67,59,54,70,66,18,38,64,70],\n",
|
|
" [67,26,20,68,02,62,12,20,95,63,94,39,63,08,40,91,66,49,94,21],\n",
|
|
" [24,55,58,05,66,73,99,26,97,17,78,78,96,83,14,88,34,89,63,72],\n",
|
|
" [21,36,23,09,75,00,76,44,20,45,35,14,00,61,33,97,34,31,33,95],\n",
|
|
" [78,17,53,28,22,75,31,67,15,94,03,80,04,62,16,14,09,53,56,92],\n",
|
|
" [16,39,05,42,96,35,31,47,55,58,88,24,00,17,54,24,36,29,85,57],\n",
|
|
" [86,56,00,48,35,71,89,07,05,44,44,37,44,60,21,58,51,54,17,58],\n",
|
|
" [19,80,81,68,05,94,47,69,28,73,92,13,86,52,17,77,04,89,55,40],\n",
|
|
" [04,52,08,83,97,35,99,16,07,97,57,32,16,26,26,79,33,27,98,66],\n",
|
|
" [88,36,68,87,57,62,20,72,03,46,33,67,46,55,12,32,63,93,53,69],\n",
|
|
" [04,42,16,73,38,25,39,11,24,94,72,18,08,46,29,32,40,62,76,36],\n",
|
|
" [20,69,36,41,72,30,23,88,34,62,99,69,82,67,59,85,74,04,36,16],\n",
|
|
" [20,73,35,29,78,31,90,01,74,31,49,71,48,86,81,16,23,57,05,54],\n",
|
|
" [01,70,54,71,83,51,54,69,16,92,33,48,61,43,52,01,89,19,67,48]])"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "d4924c1d",
|
|
"metadata": {},
|
|
"source": [
|
|
"Now we'll just iterate through every 4x4 subgrid of this grid, and for each subgrid, compute the product of the rows, columns, and diagonals, and record the largest product we see."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"id": "7ac0e53c",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"70600674\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"maximum = 0\n",
|
|
"for i in range(0, 16):\n",
|
|
" for j in range(0, 16):\n",
|
|
" subgrid = grid[i:i+4, j:j+4]\n",
|
|
" \n",
|
|
" cols = subgrid.prod(axis=0)\n",
|
|
" rows = subgrid.prod(axis=1)\n",
|
|
" diag = np.diag(subgrid).prod()\n",
|
|
" anti_diag = np.diag(np.fliplr(subgrid)).prod()\n",
|
|
" \n",
|
|
" maximum = max(maximum, *cols, *rows, diag, anti_diag)\n",
|
|
"\n",
|
|
"print(maximum)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "8626099f",
|
|
"metadata": {},
|
|
"source": [
|
|
"#### Copyright (C) 2025 filifa\n",
|
|
"\n",
|
|
"This work is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/) and the [BSD Zero Clause license](https://spdx.org/licenses/0BSD.html)."
|
|
]
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "SageMath 9.5",
|
|
"language": "sage",
|
|
"name": "sagemath"
|
|
},
|
|
"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.11.2"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 5
|
|
}
|