Самый элегантный способ создания возможных логических комбинаций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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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