Самый элегантный способ создания возможных логических комбинацийJAVA

Программисты JAVA общаются здесь
Anonymous
Самый элегантный способ создания возможных логических комбинаций

Сообщение Anonymous »

Каков наиболее элегантный способ создания возможных логических комбинаций с учетом желаемого максимального количества логических значений?

Пример:

Код: Выделить всё

bool(1) -> [false], [true]
bool(2) -> [false, false], [false, true], [true, false], [true, true]
...
Это моя текущая реализация:

Код: Выделить всё

public static List bool(int n) {
return IntStream.range(0, (int) Math.pow(2, n))
.mapToObj(i -> StringUtils.leftPad(Integer.toBinaryString(i), n, '0').chars().mapToObj(c -> c != '0').toArray(Boolean[]::new))
.collect(Collectors.toList());
}
Однако меня не устраивает тот факт, что я использую целые числа, а затем сопоставляю их с двоичным кодом с помощью StringUtils.leftPad и карты, которая возвращает логическое значение[] вместо логического значения[].

Есть ли более удобный способ сделать это в однострочном формате с использованием Stream API?

Подробнее здесь: https://stackoverflow.com/questions/279 ... mbinations

Вернуться в «JAVA»