fork download
  1. import java.io.*;
  2.  
  3. public class Main
  4. {
  5. public static void main(String[] args)
  6. {
  7. Permutation.make(2,4,"ABCD".toCharArray(),(str) -> System.out.println(str) );
  8. }
  9. }
  10.  
  11. class Permutation
  12. {
  13. public interface YeldString { void Yeld(String str); }
  14. private static boolean next(int[] idx,int maxvalue)
  15. {
  16. for(int i=idx.length-1;i>=0;idx[i--]=0) if(++idx[i]<maxvalue) return true;
  17. return false;
  18. }
  19. private static String prepare(int[] idx,char[] alphas)
  20. {
  21. char[] str=new char[idx.length];
  22. for(int i=0;i<idx.length;++i) str[i]=alphas[idx[i]];
  23. return new String(str);
  24. }
  25. public static void make(int size,char[] alphas,YeldString yeld)
  26. {
  27. int[] idx=new int[size];
  28. do { yeld.Yeld(prepare(idx,alphas)); } while(next(idx,alphas.length));
  29. }
  30. public static void make(int minsize,int maxsize,char[] alphas,YeldString yeld)
  31. {
  32. for(int size=minsize;size<=maxsize;++size) make(size,alphas,yeld);
  33. }
  34. }
Success #stdin #stdout 0.08s 34088KB
stdin
Standard input is empty
stdout
AA
AB
AC
AD
BA
BB
BC
BD
CA
CB
CC
CD
DA
DB
DC
DD
AAA
AAB
AAC
AAD
ABA
ABB
ABC
ABD
ACA
ACB
ACC
ACD
ADA
ADB
ADC
ADD
BAA
BAB
BAC
BAD
BBA
BBB
BBC
BBD
BCA
BCB
BCC
BCD
BDA
BDB
BDC
BDD
CAA
CAB
CAC
CAD
CBA
CBB
CBC
CBD
CCA
CCB
CCC
CCD
CDA
CDB
CDC
CDD
DAA
DAB
DAC
DAD
DBA
DBB
DBC
DBD
DCA
DCB
DCC
DCD
DDA
DDB
DDC
DDD
AAAA
AAAB
AAAC
AAAD
AABA
AABB
AABC
AABD
AACA
AACB
AACC
AACD
AADA
AADB
AADC
AADD
ABAA
ABAB
ABAC
ABAD
ABBA
ABBB
ABBC
ABBD
ABCA
ABCB
ABCC
ABCD
ABDA
ABDB
ABDC
ABDD
ACAA
ACAB
ACAC
ACAD
ACBA
ACBB
ACBC
ACBD
ACCA
ACCB
ACCC
ACCD
ACDA
ACDB
ACDC
ACDD
ADAA
ADAB
ADAC
ADAD
ADBA
ADBB
ADBC
ADBD
ADCA
ADCB
ADCC
ADCD
ADDA
ADDB
ADDC
ADDD
BAAA
BAAB
BAAC
BAAD
BABA
BABB
BABC
BABD
BACA
BACB
BACC
BACD
BADA
BADB
BADC
BADD
BBAA
BBAB
BBAC
BBAD
BBBA
BBBB
BBBC
BBBD
BBCA
BBCB
BBCC
BBCD
BBDA
BBDB
BBDC
BBDD
BCAA
BCAB
BCAC
BCAD
BCBA
BCBB
BCBC
BCBD
BCCA
BCCB
BCCC
BCCD
BCDA
BCDB
BCDC
BCDD
BDAA
BDAB
BDAC
BDAD
BDBA
BDBB
BDBC
BDBD
BDCA
BDCB
BDCC
BDCD
BDDA
BDDB
BDDC
BDDD
CAAA
CAAB
CAAC
CAAD
CABA
CABB
CABC
CABD
CACA
CACB
CACC
CACD
CADA
CADB
CADC
CADD
CBAA
CBAB
CBAC
CBAD
CBBA
CBBB
CBBC
CBBD
CBCA
CBCB
CBCC
CBCD
CBDA
CBDB
CBDC
CBDD
CCAA
CCAB
CCAC
CCAD
CCBA
CCBB
CCBC
CCBD
CCCA
CCCB
CCCC
CCCD
CCDA
CCDB
CCDC
CCDD
CDAA
CDAB
CDAC
CDAD
CDBA
CDBB
CDBC
CDBD
CDCA
CDCB
CDCC
CDCD
CDDA
CDDB
CDDC
CDDD
DAAA
DAAB
DAAC
DAAD
DABA
DABB
DABC
DABD
DACA
DACB
DACC
DACD
DADA
DADB
DADC
DADD
DBAA
DBAB
DBAC
DBAD
DBBA
DBBB
DBBC
DBBD
DBCA
DBCB
DBCC
DBCD
DBDA
DBDB
DBDC
DBDD
DCAA
DCAB
DCAC
DCAD
DCBA
DCBB
DCBC
DCBD
DCCA
DCCB
DCCC
DCCD
DCDA
DCDB
DCDC
DCDD
DDAA
DDAB
DDAC
DDAD
DDBA
DDBB
DDBC
DDBD
DDCA
DDCB
DDCC
DDCD
DDDA
DDDB
DDDC
DDDD