{ "cells": [ { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "true" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "load 'divisors.rb'" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "{3=>1, 5=>1}" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "15.prime_factors" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "3" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "644.prime_factors.length" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ ":k_prime_factors" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "def k_prime_factors(n, k)\n", " (n...(n+k)).all? {|i| i.prime_factors.length == k}\n", "end" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ ":sequence" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "def sequence(&generator)\n", " Enumerator.new do |yielder|\n", " n = 0\n", " loop do\n", " yielder.yield generator.call(n)\n", " n = n + 1\n", " end\n", " end\n", "end" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "#:each>" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "integers = sequence {|i| i}" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[14]" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "integers.lazy.select {|i| k_prime_factors(i, 2)}.take(1).force" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[644]" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "integers.lazy.select {|i| k_prime_factors(i, 3)}.take(1).force" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[134043]" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "integers.lazy.select {|i| k_prime_factors(i, 4)}.take(1).force" ] }, { "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 }