Path: csiph.com!2.us.feeder.erje.net!feeder.erje.net!1.eu.feeder.erje.net!news.albasani.net!.POSTED!not-for-mail From: Melzzzzz Newsgroups: comp.lang.forth Subject: Re: Project Euler 18. Date: Thu, 12 Jan 2017 11:14:06 +0100 Organization: albasani.net Lines: 52 Message-ID: <20170112111406.7ef47ed5@maxa-pc> References: Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-Trace: news.albasani.net ZPNKGLlaqmmOJeAN/HgMUCQ1sug/6d7SVkkXrkcTvYHUlPjzmVq8we/0CEnxjqdonFjQF3DpurOL/jAoIMa9hg== NNTP-Posting-Date: Thu, 12 Jan 2017 10:14:06 +0000 (UTC) Injection-Info: news.albasani.net; logging-data="gmhiYlHC4ZDEAzheKOb4JF9MxQZI4zPmcGa++Q8igHjAAhxav1so1KvhcxzcNwxMsJSEEIvXFNJ2qsVGi/jNOHLQrW1URBrZrM2FRyjc9M5FAoNp2pnjK0Mtoz9Q9B/d"; mail-complaints-to="abuse@albasani.net" X-Newsreader: Claws Mail 3.14.1 (GTK+ 2.24.31; x86_64-unknown-linux-gnu) Cancel-Lock: sha1:MxoOaYZerLzLZI8d2JW+e6SyMVk= Xref: csiph.com comp.lang.forth:53952 On Thu, 12 Jan 2017 06:21:39 +0000 (UTC) "Robert L." wrote: > Find the maximum total from top to bottom of the triangle below: > > Ruby: > > triangle = > "75 > 95 64 > 17 47 82 > 18 35 87 10 > 20 04 82 47 65 > 19 01 23 75 03 34 > 88 02 77 73 07 63 67 > 99 65 04 28 06 16 70 92 > 41 41 26 56 83 40 80 70 33 > 41 48 72 33 47 32 37 16 94 29 > 53 71 44 65 25 43 91 52 97 51 14 > 70 11 33 28 77 73 17 78 39 68 17 57 > 91 71 52 38 17 14 91 43 58 50 27 29 48 > 63 66 04 68 89 53 67 30 73 16 69 87 40 31 > 04 62 98 27 23 09 70 98 73 93 38 53 60 04 23". > each_line.map{|line| line.scan( /\d+/ ).map &:to_i} > > $max_total = 0 > def maximize( sum, column, delta, (row,*rest) ) > if !row > $max_total = [$max_total, sum].max > else > column.upto(column + delta){|i| maximize(sum + row[i], i, 1, > rest)} end > end > maximize(0,0,0,triangle) > $max_total > > ===> > 1074 > > In Forth? > > https://projecteuler.net/problem=67 NOTE: This is a much more difficult version of Problem 18. It is not possible to try every route to solve this problem, as there are 299 altogether! If you could check one trillion (1012) routes every second it would take over twenty billion years to check them all. There is an efficient algorithm to solve it. ;o) -- press any key to continue or any other to quit...