Kürzere Version von Skyscrapers Challenge
Aufgabe
Suchen Sie bei einer Reihe von Gebäudehöhen und einer positiven Ganzzahl k
alle Permutationen (ohne Duplikate) der Höhen so, dass genau k
Gebäude sichtbar sind.
Jedes Gebäude wird alle kürzeren oder gleich hohen Gebäude dahinter verstecken.
Jedes Format für Ein- und Ausgabe ist gültig.
Das Eingabearray wird niemals leer sein.
Falls es nicht möglich ist, genau so viele Gebäude zu sehen, geben Sie alles aus, was keine Antwort, aber keinen Fehler darstellen kann.
Beispiele:
(Die Länge der Ausgabe wird für sehr lange Ausgaben angezeigt, Ihre Ausgabe sollte jedoch alle möglichen Permutationen enthalten.)
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
Das ist Code-Golf, also gewinnt der kürzeste Code
Optional: Wenn möglich, können Sie so etwas hinzufügen if length is greater than 20: print length else print answer
. In der Fußzeile, nicht im Code.
quelle
[1,2,3,4,5],5 -> [(1,2,3,4,5)]
. Keiner der aktuellen Testfälle stellt sicher, dass Antworten das Anzeigen aller Gebäude unterstützen (obwohl ich nicht weiß, ob tatsächlich ein Problem damit vorliegt).Antworten:
05AB1E ,
109 BytesProbieren Sie es online aus oder überprüfen Sie (fast) alle Testfälle (Timeout des Testfalls
[1,2,3,4,5,6,7,8,9],4
).Fußzeile der TIO macht was OP unten gefragt hat:
Erläuterung:
quelle
if length is greater than 20: print length; else print answer;
Das Komische ist, dass die Fußzeile für a̶ ̶b̶y̶t̶e̶ ̶l̶o̶n̶g̶e̶r̶ im Vergleich zum Programm selbst gleich lang ist. xDHaskell, 73 Bytes
Probieren Sie es online!
quelle
Gelee ,
1210 BytesProbieren Sie es online!
-2 Bytes von @Erik the Outgolfer
Dies ist eine dyadische Funktion, die die Gebäudehöhen und
k
die Reihenfolge einhält.quelle
ʋ
! (Es ist ziemlich älter alsƇ
, eigentlich: P)Pyth,
1816 BytesProbieren Sie es hier aus .
Beachten Sie, dass die Online-Version des Pyth-Interpreters beim größten Testfall einen Speicherfehler auslöst.
quelle
Perl 6 ,
8163 Bytes-18 bytes dank nwellnhof!
Probieren Sie es online!
Anonymer Codeblock, der eingegangene Curry-Daten entgegennimmt, z
f(n)(list)
. Das.unique(:with(*eqv*))
ist aber ärgerlich lang:(
Erläuterung:
quelle
;
;)Japt , 11 Bytes
Probieren Sie es online!
Für die längeren Ausgaben addieren
} l
wird stattdessen die Länge ausgegeben am Ende wird. Der Online-Interpreter läuft für den[1,2,3,4,5,6,7,8,9],4
Testfall aus, unabhängig von der Ausgabe der Länge oder der Liste.Erläuterung:
quelle
JavaScript (ES6),
108107 BytesÜbernimmt die Eingabe als
(k)(array)
. Druckt die Ergebnisse mitalert()
.Probieren Sie es online!
Kommentiert
quelle
Python 2 ,
114113 BytesProbieren Sie es online!
-1 Byte, danke an ovs
Python 3 , 113 Bytes
Probieren Sie es online!
quelle
J
4338 Bytes-5 Bytes nach Einbeziehung einer Optimierung aus Kevins O5AB13-Antwort
Probieren Sie es online!
ungolfed
Erläuterung
Wir
i.@!@#@] A. ]
listen lediglich alle möglichen Dauerwellen auf und nehmen Unikate davon mit~.
und filtern diese nach der Anzahl der sichtbaren Gebäude, die der linken Eingabe entsprechen müssen.Die Schlüssellogik befindet sich im Klammerverb, das die Anzahl der sichtbaren Gebäude berechnet:
Hier verwenden wir einen Max-Scan
>./\
, um eine Übersicht über das höchste Gebäude zu erhalten, das bisher gesehen wurde. Dann nehmen wir nur die einzigartigen Elemente des Max-Scans, und das ist die Anzahl der sichtbaren Gebäude.quelle