{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "true" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "load 'primes.rb'\n", "load 'array-numbers.rb'" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ ":pandigital?" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "class Integer\n", " def pandigital?\n", " self.to_digits.sort == (1..Math.log10(self).ceil).to_a\n", " end\n", "end" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "2" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Math.log10(21).ceil" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[[12, [1, 2], [1, 2]], [21, [1, 2], [1, 2]], [123, [1, 2, 3], [1, 2, 3]], [132, [1, 2, 3], [1, 2, 3]], [213, [1, 2, 3], [1, 2, 3]], [231, [1, 2, 3], [1, 2, 3]], [312, [1, 2, 3], [1, 2, 3]], [321, [1, 2, 3], [1, 2, 3]], [1234, [1, 2, 3, 4], [1, 2, 3, 4]], [1243, [1, 2, 3, 4], [1, 2, 3, 4]], [1324, [1, 2, 3, 4], [1, 2, 3, 4]], [1342, [1, 2, 3, 4], [1, 2, 3, 4]], [1423, [1, 2, 3, 4], [1, 2, 3, 4]], [1432, [1, 2, 3, 4], [1, 2, 3, 4]]]" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(1..2000).map {|i| [i, i.to_digits.sort, (1..Math.log10(i).ceil).to_a]}.select {|i, ds, ms| ds == ms}" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "false" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "13.pandigital?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Divisibility rule\n", "A number is divisible by 3 iff the sum of its digits is divisible by 3. Therefore, all pandigital numbers, apart from those to 4 and 7, are composite. \n", "\n", "Therefore, we check just the seven digit primes first." ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "7652413" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(1..7).to_a.permutation.select {|ds| ds.to_i.prime?}.map {|ds| ds.to_i}.max" ] }, { "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 }