 good chemistry is complicated,and a little bit messy -LW PerlMonks

### Re: Challenge: Chasing Knuth's Conjecture

by Roy Johnson (Monsignor)
 on Mar 29, 2005 at 17:29 UTC ( #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..\$_) { \$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.

Create A New User
Node Status?
node history
Node Type: note [id://443199]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others contemplating the Monastery: (6)
As of 2019-11-17 12:53 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?
Strict and warnings: which comes first?

Results (86 votes). Check out past polls.

Notices?