Укороченная версия Skyscrapers Challenge
задача
Учитывая массив высот зданий и положительное целое число k
, найдите все перестановки (без дубликатов) высот, чтобы точно k
были видны здания.
Любое здание будет скрывать за собой все здания меньшей или одинаковой высоты.
Любой формат для ввода и вывода действителен.
Входной массив никогда не будет пустым.
В случае, если невозможно увидеть столько же зданий, выведите все, что не может быть ответом, но без ошибки.
Примеры:
(Длина вывода показана для очень длинных выходов, но ваш вывод должен быть со всеми возможными перестановками)
input:[1,2,3,4,5],2
output: 50
input:[5,5,5,5,5,5,5,5],2
output: []
input:[1,2,2],2
output:[(1,2,2)]
Seeing from the left, exactly 2 buildings are visible.
input:[1,7,4],2
output:[(4, 7, 1), (1, 7, 4), (4, 1, 7)]
input:[1,2,3,4,5,6,7,8,9],4
output:67284
input:[34,55,11,22],1
output:[(55, 34, 11, 22), (55, 22, 34, 11), (55, 34, 22, 11), (55, 11, 34, 22), (55, 22, 11, 34), (55, 11, 22, 34)]
input:[3,4,1,2,3],2
output:31
Это код-гольф, поэтому выигрывает самый короткий код
Необязательно: Если возможно, вы можете добавить что-то вроде if length is greater than 20: print length else print answer
. В нижнем колонтитуле, а не в коде.
[1,2,3,4,5],5 -> [(1,2,3,4,5)]
. Ни один из текущих тестовых примеров не гарантирует, что ответы могут поддерживать показ всех зданий (хотя я не знаю, есть ли у кого-то проблемы с этим).