Krótsza wersja Skyscrapers Challenge
Zadanie
Biorąc pod uwagę tablicę wysokości budynków i dodatnią liczbę całkowitą k
, znajdź wszystkie permutacje (bez duplikatów) wysokości, tak aby dokładnie k
widoczne były budynki.
Każdy budynek ukryje za sobą wszystkie budynki o mniejszej lub równej wysokości.
Każdy format wejściowy i wyjściowy jest prawidłowy.
Tablica wejściowa nigdy nie będzie pusta.
W przypadku, gdy nie można zobaczyć dokładnie tylu budynków, wypisz wszystko, co nie może być odpowiedzią, ale bez błędu.
Przykłady:
(Długość danych wyjściowych jest pokazana dla bardzo długich danych wyjściowych, ale dane wyjściowe powinny zawierać wszystkie możliwe kombinacje)
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
To jest golf golfowy, więc wygrywa najkrótszy kod
Opcjonalnie: jeśli to możliwe, możesz dodać coś takiego if length is greater than 20: print length else print answer
. W stopce, nie w kodzie.
[1,2,3,4,5],5 -> [(1,2,3,4,5)]
. Żaden z bieżących przypadków testowych nie zapewnia, że odpowiedzi mogą obsłużyć pokazywanie wszystkich budynków (chociaż nie wiem, czy rzeczywiście mają z tym problem).