Форум программистов, компьютерный форум, киберфорум
alhaos
Войти
Регистрация
Восстановить пароль
Рейтинг: 5.00. Голосов: 1.

Задача: Подарочные наборы в кондитерской

Запись от alhaos размещена 22.02.2021 в 11:34
Обновил(-а) alhaos 22.02.2021 в 11:36

Кондитер Виктор, в своей небольшой кондитерской выпекает вкуснейшие рогалики с начинкой из джема. Есть следующие варианты джема для начинки:

- Вишневый,
- Малиновый,
- Сливовый,
- Яблочный,
- Грушевый,
- Абрикосовый.

В подарочную упаковку вмещается четыре рогалика.

Перечислите все варианты наполнения коробки рогаликами с различной начинкой.

Буду пользоваться теми инструментами которыми умею.

Вариант решения:

Представлю каждый бит бинарного числа, которое имеет длину совпадающую с длинной массива как сделанный выбор.

Например:

110101

Вишневый - 1 выбран
Малиновый - 1 выбран
Сливовый - 0 не выбран
Яблочный - 1 выбран
Грушевый - 0 не выбран
Абрикосовый - 1 выбран

Тогда перебирая все бинарные числа от b0(0 десятичное) до b111111(63 десятичное) я получу все варианты выбора, из которые меня будут интересовать только те варианты в которых будут четыре единицы.

Начать можно с числа b001111 так как все числа меньше этого будут содержать меньше четырех единиц.

PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
$array = @("Вишневый", "Малиновый", "Cливовый", "Яблочный", "Грушевый", "Абрикосовый")
 
(0b1111..0b111111).ForEach{
    $bitArray = [System.Collections.BitArray]::new([byte]$_)
    if (($bitArray | Measure-Object -Sum).Sum -eq 4){
        (0..5).ForEach{
            if ($bitArray[$_]){
                $array[$_]
            }
        } -join ", "
    }
}
Код:
Вишневый, Малиновый, Cливовый, Яблочный
Вишневый, Малиновый, Cливовый, Грушевый
Вишневый, Малиновый, Яблочный, Грушевый
Вишневый, Cливовый, Яблочный, Грушевый
Малиновый, Cливовый, Яблочный, Грушевый
Вишневый, Малиновый, Cливовый, Абрикосовый
Вишневый, Малиновый, Яблочный, Абрикосовый
Вишневый, Cливовый, Яблочный, Абрикосовый
Малиновый, Cливовый, Яблочный, Абрикосовый
Вишневый, Малиновый, Грушевый, Абрикосовый
Вишневый, Cливовый, Грушевый, Абрикосовый
Малиновый, Cливовый, Грушевый, Абрикосовый
Вишневый, Яблочный, Грушевый, Абрикосовый
Малиновый, Яблочный, Грушевый, Абрикосовый
Cливовый, Яблочный, Грушевый, Абрикосовый
Размещено в Без категории
Просмотров 317 Комментарии 1
Всего комментариев 1
Комментарии
  1. Старый комментарий
    Если кому нужно будет расписать как работает код по шагам напишите, сделаю.
    Запись от alhaos размещена 22.02.2021 в 11:37 alhaos на форуме
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.