Codegolf - Маршируя По Городу

  • Автор темы Yurik.77
  • Обновлено
  • 21, Oct 2024
  • #1

По городу идет парад! Есть 3 основные группы участников марша: (B) и, держатели плаката (C) и (F) держатели отставания. Кроме того, каждый (П)полицейский во всем городе находится на дежурстве.

Владельцы флага (F) могут маршировать в любом месте парада, но два держателя флага не могут маршировать рядом друг с другом, если только три или более держателей флага не собираются вместе.

Группа (B) должна быть вместе. Все носители плакатов (С) должны находиться за лентой (либо вместе, либо двумя группами).

Учитывая количество держателей флагов, носителей плакатов, участников оркестра и полицейских, разделенных выбранным вами разделителем, выведите по одной строке для каждой возможной конфигурации, расположенной в алфавитном порядке.

Тестовый пример 1:

 
 
 Input:
2 2 2 1
Output:
CCBBFPF
CCFBBFP
CCFBBPF
CCFPBBF
CCFPFBB
CCPFBBF
CFCBBFP
CFCBBPF
CFCFBBP
CFCFPBB
CFCPBBF
CFCPFBB
CFPCBBF
CFPCFBB
CFPFCBB
CPCFBBF
CPFCBBF
CPFCFBB
FCCBBFP
FCCBBPF
FCCFBBP
FCCFPBB
FCCPBBF
FCCPFBB
FCFCBBP
FCFCPBB
FCFPCBB
FCPCBBF
FCPCFBB
FCPFCBB
FPCCBBF
FPCCFBB
FPCFCBB
FPFCCBB
PCCFBBF
PCFCBBF
PCFCFBB
PFCCBBF
PFCCFBB
PFCFCBB
 

Тестовый пример 2:

Input: 3 3 3 0 Output: CCCBBBFFF CCCFFFBBB CCFCFBBBF CCFFFCBBB CFCCFBBBF CFCFCBBBF CFFFCCBBB FCCCFBBBF FCCFCBBBF FCFCCBBBF FCFCFCBBB FFFCCCBBB

Тестовый пример 3:

Input: 2 2 2 0 Output: CCFBBF CFCBBF CFCFBB FCCBBF FCCFBB FCFCBB

Это код-гольф, поэтому побеждает самый короткий исходный код в байтах.
*Примечание. Не учитывается, если выполнение каждого тестового примера занимает более 3 секунд. Я не буду использовать целые числа больше 20.

#код-гольф #комбинаторика #перестановки

Yurik.77


Рег
19 Oct, 2008

Тем
79

Постов
198

Баллов
623
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно