263 with some more micro-optimization (hey, that's what I do...):
sub t{sprintf('%04b',@_)=~y/01/ w/r& bcgw}sub p{printf"%s%8s$/",t(15-$
+_),t$_ for@_;print$/}sub r{my($h,$s,%s)=@_;($s^15||p@$h)|r([@$h,$_],$
+_,$_,1,%s)for grep!$s{$_}&!($s&8&&~$s&$_&7)&!(~$s&8&&$s&~$_&7)&&($z=$
+s^$_)&8&&(($z&=7)<3|$z==4),15,grep$_%3,1..14}r[0],0,0,1
Tricks: (1) grep with brackets usually costs an extra character; (2) barewords don't need quotes; (3) play with -- nay, mercilessly abuse! -- precedence; (4) spelling
y/// as
tr/// makes Baby Jesus cry.
I wonder if one of Ton's magic formulae could be applied? (See Golf: Magic Formula for Roman Numerals.)
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.