{ "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'" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ ":gb_test_one" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "def gb_test_one(n, s)\n", " p = n - 2 * s ** 2\n", " p.prime?\n", "end" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ ":other_goldbach" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "def other_goldbach(n)\n", " s_limit = Math.sqrt(n / 2).floor\n", " (1..s_limit).any? {|s| gb_test_one n, s}\n", "end" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "true" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "other_goldbach(9)" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ ":sequence" ] }, "execution_count": 28, "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": 40, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "#:each>>:drop(1)>:select>" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "odds = sequence {|i| 2 * i + 1}\n", "candidates = odds.lazy.drop(1).select {|i| !i.prime?}" ] }, { "cell_type": "code", "execution_count": 41, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[9, 15, 21, 25, 27, 33, 35, 39, 45, 49]" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "candidates.take(10).force" ] }, { "cell_type": "code", "execution_count": 44, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[5777]" ] }, "execution_count": 44, "metadata": {}, "output_type": "execute_result" } ], "source": [ "candidates.reject {|i| other_goldbach i}.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 }