{ "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 'array-numbers.rb'" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ ":sequence" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "def sequence(n0=0, &generator)\n", " Enumerator.new do |yielder|\n", " n = n0\n", " loop do\n", " yielder.yield generator.call(n)\n", " n = n + 1\n", " end\n", " end\n", "end" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[0, 2, 4, 6, 8]" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sequence {|n| n * 2}.lazy.take(5).force" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[6, 8, 10, 12, 14]" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sequence(3) {|n| n * 2}.lazy.take(5).force" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "22" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sequence {|n| n * 2}.lazy.select {|n| n > 20}.first" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[1, 2, 4, 5, 7, 8]" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "125874.to_digits.sort" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[1, 2, 4, 5, 7, 8]" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(125874 * 2).to_digits.sort" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "1" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "[125874.to_digits.sort, (125874 * 2).to_digits.sort, 124578.to_digits.sort].to_set.length" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ ":identical_multiples" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "def identical_multiples(n, max_multiplier)\n", " (1..max_multiplier).map {|m| (n * m).to_digits.sort}.to_set.length == 1\n", "end" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "true" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "identical_multiples(125874, 2)" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "142857" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sequence(1) {|n| n}.lazy.select {|n| identical_multiples n, 6}.first" ] }, { "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 }