Perl: the Markov chain saw PerlMonks

### Re: (Golf) Fragment Reassembly

by MeowChow (Vicar)
 on May 03, 2001 at 10:55 UTC ( #77591=note: print w/replies, xml ) Need Help??

in reply to (Golf) Fragment Reassembly

Ok, here's my current solution at 192 chars.
```sub a{\$#_?(sort{length\$a<=>length\$b}map{my\$s=\$_;my@l=grep{\$s ne \$_}@_;
+map{my\$t=\$_;my@m=grep{\$t ne \$_}@l;a(i(\$s,\$t),@m)}@l}@_)[0]:pop}
sub i{(\$_,\$t)=@_;chop\$t while!s/\Q\$t\E\$/\$_[1]/&&''ne\$t;\$_;}

print a qw(logger gerbil log analog);
print "\n";
print a qw(GATTACA ATTACA GATT AAGAT CCC);
update1: trimmed another 4 chars from the i sub, and stopped clobbering globals:
```sub i{my(\$s,\$t)=@_;chop\$t while\$s!~s/\Q\$t\E\$/\$_[1]/;\$s}
... if we're clobbering \$_, we can trim another 5:
```sub i{(\$_,\$t)=@_;chop\$t while!s/\Q\$t\E\$/\$_[1]/;\$_}
update2: 163 chars, strict and global-clean, all in one sub, named assemble (or 156 if it's named a):
```sub assemble{\$#_?(sort{length\$a<=>length\$b}map{my\$s=\$_;my@l=grep\$s ne\$
+_,@_;map{my(\$t,\$u)=(\$s,\$_);my@m=grep\$u ne\$_,@l;chop\$u while\$t!~s/\Q\$u
+\E\$/\$_/;assemble(\$t,@m)}@l}@_)[0]:pop}
```   MeowChow
s aamecha.s a..a\u\$&owag.print```

Replies are listed 'Best First'.
Re: Re: (Golf) Fragment Reassembly
by dws (Chancellor) on May 03, 2001 at 11:11 UTC
Ok, here's my current solution at 192 chars.

If we're only counting inside of sub assemble { ... } then I count 185 characters (and it passes my stress tests). Though if you use "assemble", as the problem statement suggests, you're up back up to 192 characters. Still, that's excellent.

Create A New User
Node Status?
node history
Node Type: note [id://77591]
help
Chatterbox?
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others imbibing at the Monastery: (12)
As of 2018-03-22 14:38 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?
When I think of a mole I think of:

Results (276 votes). Check out past polls.

Notices?