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.
fonte
[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).Respostas:
05AB1E ,
109 bytesExperimente online ou verifique (quase) todos os casos de teste (o
[1,2,3,4,5,6,7,8,9],4
tempo limite do caso de teste expira).O rodapé do TIO faz o que o OP pediu na parte inferior:
Explicação:
fonte
if length is greater than 20: print length; else print answer;
a̶ ̶b̶y̶t̶e̶ ̶l̶o̶n̶g̶e̶r̶ tem o mesmo comprimento em comparação com o próprio programa. xDHaskell, 73 bytes
Experimente online!
fonte
Gelatina ,
1210 bytesExperimente online!
-2 bytes por @Erik the Outgolfer
Esta é uma função diádica, tendo as alturas do edifício e
k
nessa ordem.fonte
ʋ
! (é bem mais antigo do queƇ
, na verdade: P)Pitão,
1816 bytesExperimente aqui .
Observe que a versão online do interpretador Pyth gera um erro de memória no maior caso de teste.
fonte
Perl 6 ,
8163 bytes-18 bytes graças a nwellnhof!
Experimente online!
Bloco de código anônimo que recebe entrada com curry, por exemplo
f(n)(list)
. Isso.unique(:with(*eqv*))
é irritantemente longo, embora:(
Explicação:
fonte
;
, eventualmente;)Japonês , 11 bytes
Experimente online!
Para saídas mais longas, adicionar
} l
ao final produzirá o comprimento. O intérprete online atinge o tempo limite para o[1,2,3,4,5,6,7,8,9],4
caso de teste, independentemente da saída do comprimento ou da lista.Explicação:
fonte
JavaScript (ES6),
108107 bytesToma entrada como
(k)(array)
. Imprime os resultados comalert()
.Experimente online!
Comentado
fonte
Python 2 ,
114113 bytesExperimente online!
-1 byte, graças a ovs
Python 3 , 113 bytes
Experimente online!
fonte
J,
4338 bytes-5 bytes após incorporar uma otimização da resposta de Kevin O5AB13
Experimente online!
destroçado
explicação
estamos apenas listando todas as permissões possíveis
i.@!@#@] A. ]
, levando itens uniq dos~.
e filtrando-as pelo número de construções visíveis, que devem ser iguais à entrada esquerda.a lógica da chave está no verbo entre parênteses que calcula o número de construções visíveis:
Aqui, usamos uma verificação máxima
>./\
para manter um registro do edifício mais alto visto até agora. Depois, pegamos os elementos exclusivos da verificação máxima, e esse é o número de construções visíveis.fonte