Version plus courte de Skyscrapers Challenge
Tâche
Étant donné un tableau de hauteurs de bâtiment et un entier positif k
, trouvez toutes les permutations (sans doublons) des hauteurs de telle sorte que les k
bâtiments soient exactement visibles.
Tout bâtiment cachera tous les bâtiments plus courts ou de hauteur égale derrière lui.
Tout format d'entrée et de sortie est valide.
Le tableau d'entrée ne sera jamais vide.
Dans le cas où il n'est pas possible de voir exactement autant de bâtiments, sortez tout ce qui ne peut pas être une réponse mais pas d'erreur.
Exemples:
(La longueur de sortie est indiquée pour les sorties très longues, mais votre sortie doit être toutes les permutations possibles)
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
C'est le code-golf donc le code le plus court gagne
Facultatif: si possible, pouvez-vous ajouter quelque chose comme if length is greater than 20: print length else print answer
. Dans le pied de page, pas dans le code.
la source
[1,2,3,4,5],5 -> [(1,2,3,4,5)]
. Aucun des cas de test actuels ne garantit que les réponses peuvent prendre en charge l'affichage de tous les bâtiments (même si je ne sais pas si cela a réellement un problème avec cela).Réponses:
05AB1E ,
109 octetsEssayez-le en ligne ou vérifiez (presque) tous les cas de test (le cas de test expire
[1,2,3,4,5,6,7,8,9],4
).Le pied de page du TIO fait ce que OP a demandé en bas:
Explication:
la source
if length is greater than 20: print length; else print answer;
est a̶ ̶b̶y̶t̶e̶ ̶l̶o̶n̶g̶e̶r̶ de longueur égale par rapport au programme lui-même. xDHaskell, 73 octets
Essayez-le en ligne!
la source
Gelée ,
1210 octetsEssayez-le en ligne!
-2 octets par @Erik the Outgolfer
Il s'agit d'une fonction dyadique prenant les hauteurs du bâtiment et
k
dans cet ordre.la source
ʋ
! (il est assez ancien queƇ
, en fait: P)Pyth,
1816 octetsEssayez-le ici .
Notez que la version en ligne de l'interpréteur Pyth génère une erreur de mémoire sur le plus grand scénario de test.
la source
Perl 6 ,
8163 octets-18 octets grâce à nwellnhof!
Essayez-le en ligne!
Bloc de code anonyme qui prend les entrées au curry, par exemple
f(n)(list)
. C'est.unique(:with(*eqv*))
énormément long cependant:(
Explication:
la source
;
finalement;)Japt , 11 octets
Essayez-le en ligne!
Pour les sorties plus longues, l'ajout
} l
à la fin produira la longueur à la place. L'interprète en ligne arrive à expiration pour le[1,2,3,4,5,6,7,8,9],4
scénario de test, indépendamment de la sortie de la longueur ou de la liste.Explication:
la source
JavaScript (ES6),
108107 octetsPrend l'entrée comme
(k)(array)
. Imprime les résultats avecalert()
.Essayez-le en ligne!
Commenté
la source
Python 2 ,
114113 octetsEssayez-le en ligne!
-1 octet, grâce aux ovs
Python 3 , 113 octets
Essayez-le en ligne!
la source
J,
4338 octets-5 octets après avoir incorporé une optimisation à partir de la réponse O5AB13 de Kevin
Essayez-le en ligne!
non golfé
explication
nous listons simplement toutes les perms possibles
i.@!@#@] A. ]
, en prenant leurs éléments uniq avec~.
, puis en les filtrant par le nombre de bâtiments visibles, qui doit être égal à l'entrée gauche.la logique clé est dans le verbe entre parenthèses qui calcule le nombre de bâtiments visibles:
Ici, nous utilisons un scan maximum
>./\
pour garder un décompte du plus haut bâtiment vu jusqu'à présent. Ensuite, nous prenons simplement les éléments uniques de l'analyse maximale, et c'est le nombre de bâtiments visibles.la source