[Back to MISC SWAG index]  [Back to Main SWAG index]  [Original]

{
    For those of you out there that really hate getting stuck on a "jumble"
type puzzle, here's a program to solve yer problem.

  [EG. GILTH = ?   LIGHT]

    For those of you who don't really quite know how important recursive
programming is, study and enjoy. The first example [unjumble2] is shorter than
[unjumble1] but it is very inefficient.
}

{$A+,B-,D+,E-,F-,G+,I-,L+,N-,O-,P-,Q-,R-,S-,T-,V-,X-}
{$M 8192,0,655360}

 
{ Swag Ready }
 
program jumble;
{: Can be used to solve that popular "Jumble"(R) puzzle :}
 
 
{ Takes a string and finds all the possiblites of }
{ a scrabmled word.                               }
 
 
{ possiblities len ^ lenth power }
{ with replacement               }
 
procedure unjumble2( S : string );      { unefficient }
VAR count : longInt;

procedure rec( O,S : string; N,len : byte);
VAR I : byte;
 
begin
  IF  n > len then begin
      if  (count mod (80 div (len +2 ))) =0 then Writeln;
      inc( count );
      write( S:len+1 );
 
  end else begin
      For I := 1 to len do begin
          s[n] := o[I];
          Rec(o,S, (N+1), len);
      end;
  end;
end;
 
 
begin
  count := 1;
  rec( s,s, 1,ord(s[0]));
  writeln;
  writeln(count);
end;
 
 
 
{ possibilities len! factorial }
{ without replacement          }
 
procedure unjumble( S : string );       { unefficient }
VAR T     : char;
    Count : longInt;
 
 
procedure rec2( o : string; n,len : byte) ;
VAR I : byte;
begin
  IF  n > len then begin
      if  (count mod (80 div (len +2 ))) =0 then Writeln;
      inc ( count );
      write( o:len+1 );
  end else begin
      For I := n to len do begin
          IF  I <> n then begin
              t := o[n];
              o[n] := o[I];
              o[i] := T;
          end;
          Rec2(o, (N+1), len);
      end;
  end;
end;
 

begin
  count := 1;
  rec2(S,1,ord(s[0]));
  writeln;
  writeln(count);
end;
 
 
begin
unjumble2('snac'); { "cans" backwards }  { 4 = 256 possibilites }
unjumble ('snac');                       { 4!  = 24  possibilites }
end.


[end code]

NOTE: A ten letter word will have 100,000,000,000 poss's via unjumble2
      and 3,628,800 via unjumble - obviously your computer might fail
      before then.

[Back to MISC SWAG index]  [Back to Main SWAG index]  [Original]