Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine
 
PerlMonks  

(dws)Re: (Golf) Fragment Reassembly

by dws (Chancellor)
on May 02, 2001 at 09:26 UTC ( #77244=note: print w/ replies, xml ) Need Help??


in reply to (Golf) Fragment Reassembly

For my first round of Golf at the Monastery, here's a non-strict, non-polynomial approach.

sub assemble { ## Begin Golf $w=join'',@_;t("",@_);$w} sub t{my$s=shift;$w=$s if!@_ and length$s<length$w; return if!@_;my@b=(@_,@_); map{t($_,@b[0..$#_-1])}_($s,shift@b)while(@b>@_)} sub _{my($a,$b)=@_;$l=length$a;for(0..$l){$x=substr($a,0,$_).$b; return$x if substr($x,0,$l)eq$a} ## End Golf } print assemble qw(GATTACA ATTACA GATT AAGAT CCC)
emits AAGATTACACCC
That's 248 by my count (less the extra newlines that I threw in to avoid ugly wrapping). There's a 20 character test that prunes the search space back, but not enough (I think) to make it a polynomial solution.

Update: This is polynomial after all. I was too lazy to work that out at first. Bah.


Comment on (dws)Re: (Golf) Fragment Reassembly
Select or Download Code
Re: (dws)Re: (Golf) Fragment Reassembly
by dws (Chancellor) on May 02, 2001 at 21:20 UTC
    A bit of tuning after reading japhy's Golf advice drops the score to 243
    sub assemble { ## Begin Golf $w=join'',@_;t("",@_);$w} sub t{my$s=shift;$w=$s if!@_ and length$s<length$w; return if!@_;my@b=(@_,@_); map{t($_,@b[0..@_-2])}_($s,shift@b)while(@b>@_)} sub _{($a,$b)=@_;$l=length$a;for(0..$l){$x=substr($a,0,$_).$b; last if substr($x,0,$l)eq$a}$x ## End Golf } print assemble qw(GATTACA ATTACA GATT AAGAT CCC)

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (10)
As of 2014-12-20 17:57 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    Is guessing a good strategy for surviving in the IT business?





    Results (97 votes), past polls