{ "cells": [ { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "true" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "require \"awesome_print\"" ] }, { "cell_type": "code", "execution_count": 91, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ ":division" ] }, "execution_count": 91, "metadata": {}, "output_type": "execute_result" } ], "source": [ "def division(n, debug: false)\n", " dividend = 10\n", " divisor = n\n", " quotient = \"0.\"\n", " trail = []\n", " while dividend != 0 && !(trail.include?(dividend))\n", " q, r = dividend.divmod(divisor)\n", " puts(\"#{dividend} #{divisor} #{q} #{r} #{!(trail.include?(dividend))} #{trail}\") if debug\n", " if q == 0\n", " dividend *= 10\n", " quotient += \"0\"\n", " trail += [0]\n", " else\n", " trail += [dividend]\n", " quotient += q.to_s\n", " dividend = r * 10\n", " end\n", " end\n", " if dividend != 0\n", " cycle_length = trail.length - trail.rindex(dividend)\n", " else\n", " cycle_length = 0\n", " end\n", " # return quotient, cycle_length, trail + [dividend]\n", " cycle_length\n", "end" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[0, 1]" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "q, r = 1.divmod(8)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[1, 2]" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "q, r = 10.divmod(8)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[2, 4]" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "q, r = 20.divmod(8)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[5, 0]" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "q, r = 40.divmod(8)" ] }, { "cell_type": "code", "execution_count": 92, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "0" ] }, "execution_count": 92, "metadata": {}, "output_type": "execute_result" } ], "source": [ "division(8)" ] }, { "cell_type": "code", "execution_count": 93, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "6" ] }, "execution_count": 93, "metadata": {}, "output_type": "execute_result" } ], "source": [ "division(7)" ] }, { "cell_type": "code", "execution_count": 94, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "1" ] }, "execution_count": 94, "metadata": {}, "output_type": "execute_result" } ], "source": [ "division(3)" ] }, { "cell_type": "code", "execution_count": 95, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2: 0\n", "3: 1\n", "4: 0\n", "5: 0\n", "6: 1\n", "7: 6\n", "8: 0\n", "9: 1\n", "10: 0\n", "11: 2\n", "12: 1\n", "13: 6\n", "14: 6\n", "15: 1\n", "16: 0\n", "17: 16\n", "18: 1\n", "19: 18\n", "20: 0\n", "21: 6\n", "22: 2\n", "23: 22\n", "24: 1\n", "25: 0\n", "26: 6\n", "27: 3\n", "28: 6\n", "29: 28\n", "30: 1\n", "31: 15\n", "32: 0\n", "33: 2\n", "34: 16\n", "35: 6\n", "36: 1\n", "37: 3\n", "38: 18\n", "39: 6\n", "40: 0\n", "41: 5\n", "42: 6\n", "43: 21\n", "44: 2\n", "45: 1\n", "46: 22\n" ] }, { "data": { "text/plain": [ "2..46" ] }, "execution_count": 95, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(2..46).each do |i| puts(\"#{i}: #{division(i)}\") end" ] }, { "cell_type": "code", "execution_count": 99, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "983" ] }, "execution_count": 99, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(1..1000).max_by {|i| division(i)}" ] }, { "cell_type": "code", "execution_count": 97, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "0" ] }, "execution_count": 97, "metadata": {}, "output_type": "execute_result" } ], "source": [ "division(1)" ] }, { "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 }