Done puzzle 45
authorNeil Smith <neil.git@njae.me.uk>
Fri, 17 Mar 2017 09:20:27 +0000 (09:20 +0000)
committerNeil Smith <neil.git@njae.me.uk>
Fri, 17 Mar 2017 09:20:27 +0000 (09:20 +0000)
euler45.ipynb [new file with mode: 0644]

diff --git a/euler45.ipynb b/euler45.ipynb
new file mode 100644 (file)
index 0000000..70a5dc9
--- /dev/null
@@ -0,0 +1,118 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Note that the _n_ th hexagonal number is the $2(n-1)+1$th triangle number. Therefore, we can find a number that is both pentagonal and hexagonal.\n",
+    "\n",
+    "The _n_ hexagonal number is never smaller than the _n_ th pentagonal number, so the idea is to generate the next hexagonal number, then all pentagonal numbers until we find one that is larger than the largest hexagonal one found so far."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 8,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       ":pentagonal"
+      ]
+     },
+     "execution_count": 8,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "def pentagonal(n)\n",
+    "  n * (3 * n - 1) / 2\n",
+    "end"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 9,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       ":hexagonal"
+      ]
+     },
+     "execution_count": 9,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "def hexagonal(n)\n",
+    "  n * (2 * n - 1)\n",
+    "end"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 11,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "31977, 27693, 1533776805\n"
+     ]
+    }
+   ],
+   "source": [
+    "h_i = 144\n",
+    "p_i = 1\n",
+    "\n",
+    "finished = false\n",
+    "\n",
+    "while !finished\n",
+    "  while pentagonal(p_i) < hexagonal(h_i)\n",
+    "    p_i += 1\n",
+    "  end\n",
+    "  if pentagonal(p_i) == hexagonal(h_i)\n",
+    "    puts \"#{p_i}, #{h_i}, #{pentagonal(p_i)}\"\n",
+    "    finished = true\n",
+    "  end\n",
+    "  h_i += 1\n",
+    "end"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "collapsed": true
+   },
+   "outputs": [],
+   "source": []
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Ruby 2.4.0",
+   "language": "ruby",
+   "name": "ruby"
+  },
+  "language_info": {
+   "file_extension": ".rb",
+   "mimetype": "application/x-ruby",
+   "name": "ruby",
+   "version": "2.4.0"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}