### Re: (Golf) Minimizing the Bacon Number

by bjelli (Pilgrim)
 on May 15, 2001 at 02:35 UTC ( #80383=note: print w/replies, xml ) Need Help??

in reply to (Golf) Minimizing the Bacon Number

My first try at golf:

```sub b {
\$M = scalar keys %t;
\$m = \$M *= \$M;
foreach  ( keys %t ) {
\$r = c( \$_ );
(\$m,\$n) = (\$r, \$_) if (\$r < \$m );
}
\$n;
}

sub c {
@s=@_;
%b  = ( \$s[0] => \$b=\$sum=0 );
while ( @s > 0 ) {
\$b ++;
@s = grep {  ! exists( \$b{\$_}  ) }
map { @{\$t{\$_}} } @s;
@b{ @s } = (\$b) x scalar(@s);
\$sum += \$b * scalar(@s);
return \$M if \$sum >  \$m
}
\$sum;
}

works for graphs too, I think.

Update: I can write that down in 196:

```sub b{\$M=\$m=@_*@_;for(keys %t){\$r=c(\$_);(\$m,\$n)=(\$r,\$_)if(\$r<\$m)}\$n}su
+b c{%b=(\$_[0]=>\$b=\$sum=1);while(@_){\$b++;@_=grep{!\$b{\$_}}map{@{\$t{\$_}
+}}@_;@b{@_}=(\$b)x@_;\$sum+=\$b*@_;return\$M if\$sum>\$m}\$sum}

slower but shorter: down to 177:

```sub b{\$M=\$m=@_*@_;for(keys %t){\$r=c(\$_);(\$m,\$n)=(\$r,\$_)if(\$r<\$m)}\$n}su
+b c{%b=(\$_[0]=>\$b=\$sum=1);while(@_){\$b++;@_=grep{!\$b{\$_}}map{@{\$t{\$_}
+}}@_;@b{@_}=(\$b)x@_;\$sum+=\$b*@_}\$sum}

I never new how hard obfuscation is! </code>

```--
Brigitte    'I never met a chocolate I didnt like'    Jellinek
http://www.horus.com/~bjelli/         http://perlwelt.horus.at```

Create A New User
Node Status?
node history
Node Type: note [id://80383]
help
Chatterbox?
 [Discipulus]: Corion are you would able to realize such thing? O_O [Corion]: In the same vein I have a script that automates Firefox to enter some data into another system. It's not faster than the people using the script if they were to do it manually, but they prefer not having to check the data and not having typos when ... [Corion]: ... entering the data [Corion]: Discipulus: I don't know whether I could really do that, but the init process itself mostly launches other processes, and the whole startup is just following a path of dependencies and making sure they are all running. Which basically is what ... [Discipulus]: when at work my time is (temporarly) owned by the firm, so i do not care (coworkers whatch movies.. I code Perl) [Corion]: ... make already does, except for files instead of programs. But maybe with some /proc hackery, that could be eliminated and one could use plain make :-D [choroba]: systemd just makes is asynchronous [choroba]: so, make -j [Corion]: Discipulus: Yeah - but when writing Perl to save time (instead of having fun), it helps to look whether you're actually saving time ;) Why spend 5 minutes doing manually what you can spend three years automating? ;) [Corion]: choroba: Oh, yeah :-D

How do I use this? | Other CB clients
Other Users?
Others rifling through the Monastery: (4)
As of 2017-07-27 09:30 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?
I came, I saw, I ...

Results (408 votes). Check out past polls.