• #### Euler 14.

From B. Pym@21:1/5 to All on Tue May 28 11:39:17 2024
The following iterative sequence is defined for the set of positive
integers:

n -> n/2 (n is even)
n -> 3n + 1 (n is odd)

Using the rule above and starting with 13, we generate the following
sequence:

13 -> 40 -> 20 -> 10 -> 5 -> 16 -> 8 -> 4 -> 2 -> 1

It can be seen that this sequence (starting at 13 and
finishing at 1) contains 10 terms. Although it has not been
proved yet (Collatz Problem), it is thought that all starting
numbers finish at 1.

Which starting number, under one million, produces the longest chain?

NOTE: Once the chain starts the terms are allowed to go above one
million.

Gauche Scheme

(use gauche.collection) ;; find-max

(define (cltz n) (if (odd? n) (+ 1 (* n 3)) (/ n 2)))

(define (d c n)
(if (= n 1) c (d (+ 1 c) (cltz n))))

(find-max (lrange 1 1000000) :key (pa\$ d 1))

===>
837799

--- SoupGate-Win32 v1.05
* Origin: fsxNet Usenet Gateway (21:1/5)
• From HenHanna@21:1/5 to B. Pym on Tue Jul 23 12:24:00 2024
On 5/28/2024 4:39 AM, B. Pym wrote:
The following iterative sequence is defined for the set of positive
integers:

n -> n/2 (n is even)
n -> 3n + 1 (n is odd)

Using the rule above and starting with 13, we generate the following sequence:

13 -> 40 -> 20 -> 10 -> 5 -> 16 -> 8 -> 4 -> 2 -> 1

It can be seen that this sequence (starting at 13 and
finishing at 1) contains 10 terms. Although it has not been
proved yet (Collatz Problem), it is thought that all starting
numbers finish at 1.

Which starting number, under one million, produces the longest chain?

NOTE: Once the chain starts the terms are allowed to go above one
million.

Gauche Scheme

(use gauche.collection) ;; find-max

(define (cltz n) (if (odd? n) (+ 1 (* n 3)) (/ n 2)))

(define (d c n)
(if (= n 1) c (d (+ 1 c) (cltz n))))

(find-max (lrange 1 1000000) :key (pa\$ d 1)) ===> 837799

is this fast?

what does the SUBJ line mean? ( Euler 14.)

--- SoupGate-Win32 v1.05
* Origin: fsxNet Usenet Gateway (21:1/5)
• From Paul Rubin@21:1/5 to HenHanna on Tue Jul 23 13:40:10 2024
HenHanna <HenHanna@devnull.tb> writes:
is this fast?

No it is slow, it needs memoization

what does the SUBJ line mean? ( Euler 14.)

It is problem 14 of projecteuler.net .

--- SoupGate-Win32 v1.05
* Origin: fsxNet Usenet Gateway (21:1/5)
• From Paul Rubin@21:1/5 to Paul Rubin on Thu Jul 25 11:28:23 2024
Paul Rubin <no.email@nospam.invalid> writes:
It is problem 14 of projecteuler.net .

Here is my solution, maybe not idiomatic CL since I don't write much of
that these days. It takes about 0.17 sec of user time on my laptop
using sbcl --script, or 1.1 sec with compiled clisp. It doesn't work
with interpreted clisp because the clisp interpreter has no TRO and so
the tail recursion overflows the stack. I could rewrite it iteratively
but nah. A similar C++ version with gcc -O3 takes about 0.03 sec. I
haven't experimented with changing the size of the memo table or
anything like that. ================================================================

(defun collatz (n)
(cond ((oddp n) (1+ (* 3 n)))
(t (floor n 2))))

(defvar memo (make-array 1000000 :initial-element nil))

(defun clen (n)
(cond ((= n 1) 1)
((<= n 0) 'crash)
((and (< n (length memo)) (aref memo n)) (aref memo n))
(t (let ((a (1+ (clen (collatz n)))))
(if (< n (length memo))
(setf (aref memo n) a))
a))))

(defun run (&optional (n 1) (mi 0) (ma 0))
(if (> n 1000000)
(list mi ma)
(let ((a (clen n))
(nn (1+ n)))
(if (> a ma)
(run nn n a)
(run nn mi ma)))))
(print (run))
(terpri)

--- SoupGate-Win32 v1.05
* Origin: fsxNet Usenet Gateway (21:1/5)
• From HenHanna@21:1/5 to Paul Rubin on Sun Aug 4 13:11:26 2024
On 7/23/2024 1:40 PM, Paul Rubin wrote:
HenHanna <HenHanna@devnull.tb> writes:
is this fast?

No it is slow, it needs memoization

what does the SUBJ line mean? ( Euler 14.)

It is problem 14 of projecteuler.net .

thanks...

i just discovered this:

In 2003 We Discovered a New Way to Generate Primes
396.1K+ views · 1 year ago

22:17 ... number theory (2011) (46 pages).
https://arxiv.org/abs/1101.4274 Eric Rowland, A natural prime-generating recurrence, Journal of Integer ...

--- SoupGate-Win32 v1.05
* Origin: fsxNet Usenet Gateway (21:1/5)
• From HenHanna@21:1/5 to Paul Rubin on Sun Aug 4 20:01:37 2024
On Tue, 23 Jul 2024 20:40:10 +0000, Paul Rubin wrote:

HenHanna <HenHanna@devnull.tb> writes:
is this fast?

No it is slow, it needs memoization

what does the SUBJ line mean? ( Euler 14.)

It is problem 14 of projecteuler.net .

THanks... it seems like a set of simple programming exercises

--- SoupGate-Win32 v1.05
* Origin: fsxNet Usenet Gateway (21:1/5)
• From B. Pym@21:1/5 to B. Pym on Mon Aug 5 02:24:03 2024
B. Pym wrote:

The following iterative sequence is defined for the set of positive
integers:

n -> n/2 (n is even)
n -> 3n + 1 (n is odd)

Using the rule above and starting with 13, we generate the following sequence:

13 -> 40 -> 20 -> 10 -> 5 -> 16 -> 8 -> 4 -> 2 -> 1

It can be seen that this sequence (starting at 13 and
finishing at 1) contains 10 terms. Although it has not been
proved yet (Collatz Problem), it is thought that all starting
numbers finish at 1.

Which starting number, under one million, produces the longest chain?

NOTE: Once the chain starts the terms are allowed to go above one
million.

Gauche Scheme

(use gauche.collection) ;; find-max

(define (cltz n) (if (odd? n) (+ 1 (* n 3)) (/ n 2)))

(define (d c n)
(if (= n 1) c (d (+ 1 c) (cltz n))))

(find-max (lrange 1 1000000) :key (pa\$ d 1))

===>
837799

newLISP

(define (cltz n) (if (odd? n) (+ 1 (* n 3)) (/ n 2)))

(define (d c n) (if (= n 1) c (d (+ 1 c) (cltz n))))

(local (best-n best-cnt cnt)
(for (n 1 999999)
(setq cnt (d 1 n))
(if (> cnt best-cnt) (setq best-n n best-cnt cnt)))
(list best-n best-cnt))

(837799 525)

--- SoupGate-Win32 v1.05
* Origin: fsxNet Usenet Gateway (21:1/5)