http://www.perlmonks.org?node_id=1069541


in reply to Golf: Cabbage, Goat, Wolf

Prints both solutions in 360 characters.

@s=(0,(grep{$_%3}1..14),15);%m=map{$t=$_,[grep{$z=($t^$_)&7;($t^$_)&8& +& !($t&8&&~$t&$_&7)&&!(~$t&8&&$t&~$_&7)&&($z<3||$z==4)}@s]}@s;sub t{@c=q +w (w g c b);join'',map{$_[0]&2**$_?$c[$_]:'_'}0..3}sub p{printf"%s %s\n" +, t(~$_),t($_)for@_;print$/}sub r{my($s,$e,$h,%s)=@_;($s==$e&&p@$h)||r($ +_ ,$e,[@$h,$_],$_=>1,%s)for grep{!$s{$_}}@{$m{$s}}}r+0,$s[-1],[0],0,1

Update: something's gone wrong in the obfu process. Pls ignore for now.

Update 2: fixed. Even without strict one needs my at times. Now improved to 358 351 characters.