fork download
  1. program ideone;
  2.  
  3. {$MODE OBJFPC}
  4.  
  5. type
  6. TCharset = set of AnsiChar;
  7.  
  8. procedure Anagram(const ACharset: TCharset; const AValue: String = '');
  9. var
  10. LChar: AnsiChar;
  11. begin
  12. if ACharset = [] then
  13. WriteLn(AValue)
  14. else
  15. for LChar in ACharset do
  16. Anagram(ACharset - [LChar], AValue + LChar);
  17. end;
  18.  
  19. procedure PrintAnagrams(const AValue: String);
  20. var
  21. LCharset: TCharset = [];
  22. LChar: AnsiChar;
  23. begin
  24. for LChar in AValue do
  25. LCharset += [LChar];
  26.  
  27. Anagram(LCharset);
  28. end;
  29.  
  30. begin
  31. PrintAnagrams('kura');
  32. end.
Success #stdin #stdout 0s 288KB
stdin
Standard input is empty
stdout
akru
akur
arku
aruk
aukr
aurk
karu
kaur
krau
krua
kuar
kura
raku
rauk
rkau
rkua
ruak
ruka
uakr
uark
ukar
ukra
urak
urka