Done puzzle 64
[project-euler.git] / euler38.ipynb
1 {
2 "cells": [
3 {
4 "cell_type": "code",
5 "execution_count": 1,
6 "metadata": {
7 "collapsed": false
8 },
9 "outputs": [
10 {
11 "data": {
12 "text/plain": [
13 "true"
14 ]
15 },
16 "execution_count": 1,
17 "metadata": {},
18 "output_type": "execute_result"
19 }
20 ],
21 "source": [
22 "load 'array-numbers.rb'"
23 ]
24 },
25 {
26 "cell_type": "code",
27 "execution_count": 15,
28 "metadata": {
29 "collapsed": false
30 },
31 "outputs": [
32 {
33 "data": {
34 "text/plain": [
35 ":pandigital?"
36 ]
37 },
38 "execution_count": 15,
39 "metadata": {},
40 "output_type": "execute_result"
41 }
42 ],
43 "source": [
44 "class Integer\n",
45 " def pandigital?(start=1)\n",
46 " self.to_digits.sort == (start..9).to_a\n",
47 " end\n",
48 "end"
49 ]
50 },
51 {
52 "cell_type": "code",
53 "execution_count": 16,
54 "metadata": {
55 "collapsed": false
56 },
57 "outputs": [
58 {
59 "data": {
60 "text/plain": [
61 "true"
62 ]
63 },
64 "execution_count": 16,
65 "metadata": {},
66 "output_type": "execute_result"
67 }
68 ],
69 "source": [
70 "192384576.pandigital?"
71 ]
72 },
73 {
74 "cell_type": "code",
75 "execution_count": 17,
76 "metadata": {
77 "collapsed": false
78 },
79 "outputs": [
80 {
81 "data": {
82 "text/plain": [
83 "false"
84 ]
85 },
86 "execution_count": 17,
87 "metadata": {},
88 "output_type": "execute_result"
89 }
90 ],
91 "source": [
92 "343553.pandigital?"
93 ]
94 },
95 {
96 "cell_type": "code",
97 "execution_count": 18,
98 "metadata": {
99 "collapsed": false
100 },
101 "outputs": [
102 {
103 "data": {
104 "text/plain": [
105 "false"
106 ]
107 },
108 "execution_count": 18,
109 "metadata": {},
110 "output_type": "execute_result"
111 }
112 ],
113 "source": [
114 "19238457.pandigital?"
115 ]
116 },
117 {
118 "cell_type": "code",
119 "execution_count": 19,
120 "metadata": {
121 "collapsed": false
122 },
123 "outputs": [
124 {
125 "data": {
126 "text/plain": [
127 "false"
128 ]
129 },
130 "execution_count": 19,
131 "metadata": {},
132 "output_type": "execute_result"
133 }
134 ],
135 "source": [
136 "1923845706.pandigital?"
137 ]
138 },
139 {
140 "cell_type": "code",
141 "execution_count": 20,
142 "metadata": {
143 "collapsed": false
144 },
145 "outputs": [
146 {
147 "data": {
148 "text/plain": [
149 "true"
150 ]
151 },
152 "execution_count": 20,
153 "metadata": {},
154 "output_type": "execute_result"
155 }
156 ],
157 "source": [
158 "1923845706.pandigital?(0)"
159 ]
160 },
161 {
162 "cell_type": "code",
163 "execution_count": 25,
164 "metadata": {
165 "collapsed": false
166 },
167 "outputs": [
168 {
169 "data": {
170 "text/plain": [
171 "[2]"
172 ]
173 },
174 "execution_count": 25,
175 "metadata": {},
176 "output_type": "execute_result"
177 }
178 ],
179 "source": [
180 "(2..2).to_a"
181 ]
182 },
183 {
184 "cell_type": "code",
185 "execution_count": 31,
186 "metadata": {
187 "collapsed": false
188 },
189 "outputs": [
190 {
191 "data": {
192 "text/plain": [
193 ":concat_product"
194 ]
195 },
196 "execution_count": 31,
197 "metadata": {},
198 "output_type": "execute_result"
199 }
200 ],
201 "source": [
202 "class Integer\n",
203 " def concat_product(n)\n",
204 " (1..n).flat_map {|m| (self * m).to_digits}.to_i\n",
205 " end\n",
206 "end"
207 ]
208 },
209 {
210 "cell_type": "code",
211 "execution_count": 34,
212 "metadata": {
213 "collapsed": false
214 },
215 "outputs": [
216 {
217 "data": {
218 "text/plain": [
219 "true"
220 ]
221 },
222 "execution_count": 34,
223 "metadata": {},
224 "output_type": "execute_result"
225 }
226 ],
227 "source": [
228 "192.concat_product(3).pandigital?"
229 ]
230 },
231 {
232 "cell_type": "code",
233 "execution_count": 35,
234 "metadata": {
235 "collapsed": false
236 },
237 "outputs": [
238 {
239 "data": {
240 "text/plain": [
241 "true"
242 ]
243 },
244 "execution_count": 35,
245 "metadata": {},
246 "output_type": "execute_result"
247 }
248 ],
249 "source": [
250 "9.concat_product(5).pandigital?"
251 ]
252 },
253 {
254 "cell_type": "code",
255 "execution_count": 48,
256 "metadata": {
257 "collapsed": false
258 },
259 "outputs": [
260 {
261 "data": {
262 "text/plain": [
263 "932718654"
264 ]
265 },
266 "execution_count": 48,
267 "metadata": {},
268 "output_type": "execute_result"
269 }
270 ],
271 "source": [
272 "(1..10**5).to_a.product((2..5).to_a).select {|n, m| n.concat_product(m).pandigital?}.map {|n, m| n.concat_product(m)}.max"
273 ]
274 },
275 {
276 "cell_type": "code",
277 "execution_count": null,
278 "metadata": {
279 "collapsed": true
280 },
281 "outputs": [],
282 "source": []
283 }
284 ],
285 "metadata": {
286 "kernelspec": {
287 "display_name": "Ruby 2.4.0",
288 "language": "ruby",
289 "name": "ruby"
290 },
291 "language_info": {
292 "file_extension": ".rb",
293 "mimetype": "application/x-ruby",
294 "name": "ruby",
295 "version": "2.4.0"
296 }
297 },
298 "nbformat": 4,
299 "nbformat_minor": 0
300 }