Java: Gerador de combinações de true e false dando o número N;

Liguei para simplificar a tarefa, tanto quanto possível, para que eu pudesse aplicá-lo ao meu algoritmo.

E aqui está o desafio para matemáticos e programadores:

Eu preciso criar um método onde eu passe o parâmetro int n:

public void optionality_generator(int n){
  //some kind of loops, or recursions...to make it workable
  System.out.println("current combination: ...");
}

A saída deve mostrar todas as combinações possíveis de true e false.

Aqui está exemplos onde N = 1; N = 2; N = 3; N = 4; N = 5 em que x = falso e 0 = verdadeiro; Por favor, note que as linhas de quebra vazias são apenas para você reconhecer mais facilmente os padrões. Espero que tenha incluído todas as combinações possíveis:

Combination of 1:
0
x

Combination of 2:
00
x0
0x
xx

Combination of 3:
000
X00
0X0
00X
XX0
0XX
XXX

Combination of 4:
0000

X000
0X00
00X0
000X

XX00
X0X0
X00X

0XX0
0X0X

00XX

XXX0
XX0X
X0XX
0XXX

XXXX

Combination of 5:
00000
X0000
0X000
00X00
000X0
0000X

XX000
X0X00
X00X0
X000X

X0X00
X00X0
X000X

0XX00
0X0X0
0X00X

00XX0
00X0X

000XX

XXX00
XX0X0
XX00X

X0XX0
X0X0X
X00XX

0XXX0
0XX0X

00XXX

XXXX0
XXX0X
XX0XX
X0XXX
0XXXX

XXXXX

Além disso, se você ver a saída, aqui está o padrão que eu reconheci, que todas as combinações são invertidas na metade (por exemplo, a primeira combinação é 00000, a última será XXXXX, segunda X0000, uma antes da última será 0XXXX, etc.) . Talvez, esse padrão ajude a tornar todo o algoritmo mais eficiente, não tendo certeza disso. Agradeço antecipadamente!

questionAnswers(7)

yourAnswerToTheQuestion