Versão mais curta do Skyscrapers Challenge
Tarefa
Dada uma variedade de alturas de construção e um número inteiro positivo k
, encontre todas as permutações (sem duplicatas) das alturas de modo que exatamentek
construções sejam visíveis.
Qualquer edifício ocultará todos os edifícios de altura menor ou igual atrás dele.
Qualquer formato para entrada e saída é válido.
A matriz de entrada nunca estará vazia.
Caso não seja possível ver exatamente o mesmo número de prédios, produza algo que não possa ser uma resposta, mas que não exista erro.
Exemplos:
(O comprimento da saída é mostrado para saídas muito longas, mas sua saída deve ser todas as permutações possíveis)
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
Isso é código-golfe, então o código mais curto ganha
Opcional: Se possível, você pode adicionar algo como if length is greater than 20: print length else print answer
. No rodapé, não no código.
[1,2,3,4,5],5 -> [(1,2,3,4,5)]
. Nenhum dos casos de teste atuais garante que as respostas possam suportar a exibição de todos os edifícios (embora eu não saiba se alguém realmente tem algum problema com isso).