{ "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": 13, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[1, 2, 3, 4]" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "1234.to_digits" ] }, { "cell_type": "code", "execution_count": 53, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ ":valid" ] }, "execution_count": 53, "metadata": {}, "output_type": "execute_result" } ], "source": [ "def valid(n, debug=false)\n", " digits = n.to_digits\n", " perms = digits.permutation.select {|ds| ds.to_i.prime?}.to_set.to_a.permutation(3)\n", " puts \"perms: #{perms}\" if debug\n", " triples = perms.to_a.map {|t| t.map {|ds| ds.to_i}}\n", " puts \"triples: #{triples}\" if debug\n", " valids = triples.select {|t| t[0] == n && t[1] > t[0] && t[1] - t[0] == t[2] - t[1]}\n", " puts \"valids: #{valids}\" if debug\n", " valids[0]\n", "end" ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "false" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "valid(1234)" ] }, { "cell_type": "code", "execution_count": 56, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[148748178147, 296962999629]" ] }, "execution_count": 56, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(1000..9999).map {|n| valid n}.select {|t| !t.nil?}.map {|t| t.flat_map {|n| n.to_digits}.to_i}" ] }, { "cell_type": "code", "execution_count": 57, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "perms: #\n", "triples: [[2969, 2699, 9629], [2969, 2699, 6299], [2969, 9629, 2699], [2969, 9629, 6299], [2969, 6299, 2699], [2969, 6299, 9629], [2699, 2969, 9629], [2699, 2969, 6299], [2699, 9629, 2969], [2699, 9629, 6299], [2699, 6299, 2969], [2699, 6299, 9629], [9629, 2969, 2699], [9629, 2969, 6299], [9629, 2699, 2969], [9629, 2699, 6299], [9629, 6299, 2969], [9629, 6299, 2699], [6299, 2969, 2699], [6299, 2969, 9629], [6299, 2699, 2969], [6299, 2699, 9629], [6299, 9629, 2969], [6299, 9629, 2699]]\n", "valids: [[2969, 6299, 9629]]\n" ] }, { "data": { "text/plain": [ "[2969, 6299, 9629]" ] }, "execution_count": 57, "metadata": {}, "output_type": "execute_result" } ], "source": [ "valid(2969, debug=true)" ] }, { "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 }