Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl: the Markov chain saw
 
PerlMonks  

Re: Challenge: Chasing Knuth's Conjecture

by Roy Johnson (Monsignor)
on Mar 29, 2005 at 17:29 UTC ( [id://443199]=note: print w/replies, xml ) Need Help??


in reply to Challenge: Chasing Knuth's Conjecture

Here's a fairly straightforward sieve. It finds solutions by repeatedly applying the basic functions to the already-found solutions, so it finds solutions for some incredibly large numbers, but doesn't get 9 (for example), likely due to the limit I put on factorial (no inputs larger than 150). Output strings are effectively unary RPN.
use strict; use warnings; use bigint; # Each element of @formulas is an an op-string: # a string of Fs and Ss, indicating factorial # and square root, in order applied to get the # index my %formulas = (3 => '3'); my $found_new = 1; while ($found_new) { $found_new = 0; # Apply factorial to all formulas while (my ($v, $ops) = each %formulas) { if ($v < 150) { $v = fact($v); $ops .= 'F'; exists $formulas{$v} or $found_new = $formulas{$v} = $ops; } } # Apply sqrt to all formulas while (my ($v, $ops) = each %formulas) { $v = int(sqrt($v)); $ops .= 'S'; exists $formulas{$v} or $found_new = $formulas{$v} = $ops; } } for (sort { $a <=> $b } keys %formulas) { print "$_: $formulas{$_}\n"; } sub fact { my $f = 1; for (2..$_[0]) { $f *= $_ } $f; }
Update: instead of iterating a given number of times, iterates until no new solutions are found.

Caution: Contents may have been coded under pressure.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://443199]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others perusing the Monastery: (4)
As of 2024-04-19 14:40 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found