Vielen Dank an FryAmTheEggman für die Idee für diese zweite Version.
Version 1 hier .
Nicht ganz so einfache Herausforderung: Bauen Sie bei einer bestimmten Anzahl von Karten das größte Kartenhaus, das Sie können, mit dieser Anzahl von Karten gemäß der folgenden Baureihenfolge:
/\ /\ /\ /\/\
-- -- -- ---- ----
/\ → /\/\ → /\/\ → /\/\ → /\/\/\ → /\/\/\ → /\/\/\ →
/\ /\
-- -- --
/\/\ /\/\ /\/\
---- ---- ----
→ /\/\/\ → /\/\/\ → /\/\/\/\ → ...
Sie beginnen also mit einem einstöckigen Haus, bauen dann die angrenzende Gruppe, legen dann die Brückenkarte ein, bauen dann die Gruppe im zweiten Stock und beginnen dann, Gruppen und Brücken vom ersten Stock diagonal zu bauen, um den dritten Stock zu erreichen, und so weiter auf.
Eine einzelne Karte wird mit a /
, a \
oder a dargestellt --
. Wenn Sie nach der Verwendung so vieler Karten wie möglich nur noch eine Karte übrig haben, geben Sie einfach das aus, was Sie bisher erreicht haben (siehe Beispiel für 3 Karten, das Ergebnis ist das gleiche wie für 2 Karten). Die einzige Ausnahme ist der Fall einer Karte, die eine flache Karte ausgeben muss.
Beispiele:
Input: 1
Output:
-- <a card lying on the floor>
Input: 2
Output:
/\
Input: 3
Output:
/\
Input: 5
Output:
--
/\/\
Input: 10
Output:
/\
----
/\/\/\
Input: 20
Output:
/\
--
/\/\/\
------
/\/\/\/\
Input: 39
Output:
--
/\/\
----
/\/\/\
------
/\/\/\/\
--------
/\/\/\/\/\
Input: 40
Output:
/\
--
/\/\
----
/\/\/\
------
/\/\/\/\
--------
/\/\/\/\/\
Die Eingabe kann numerisch oder eine Zeichenfolge sein und ist immer eine positive Ganzzahl. Die Ausgabe muss genau wie gezeigt sein, wobei führende und nachfolgende Leerzeichen und Zeilenumbrüche zulässig sind.
Dies ist Code-Golf , also kann das kürzeste Programm / die kürzeste Funktion für jede Sprache gewinnen!
Antworten:
Holzkohle , 67 Bytes
Probieren Sie es online aus! Hinweis: Die neueste Version von Charcoal benötigt keine
»«
-2 Bytes. Erläuterung:Lesen Sie die Eingabe als Ganzzahl in
θ
.Sonderfall: Wenn die Eingabe 1 ist, drucken Sie a
-
.η
stellt die Anzahl der Karten dar, die zum Erstellen der nächsten Ebene benötigt werden, zunächst 2. Eine while-Schleife wird wiederholt, solange genügend Karten für die Ebene vorhanden sind.Drucken Sie die linke Hälfte der nächsten Ebene. (Ich wollte die rechte Hälfte drucken, konnte sie aber aus irgendeinem Grund nicht richtig wiedergeben.) Die Anzahl der
-
s ist ein Drittel der Anzahl der Karten in der Ebene, abgerundet. (Siehe auch meine Antwort auf Teil 1.)Subtrahieren Sie die Anzahl der Karten von der eingegebenen Nummer und addieren Sie drei Karten zu der Anzahl, die für die nächste Ebene erforderlich ist.
Spiegeln Sie das Haus so weit. (Damit wird auch die
-
in--
für den Fall von 1 - Karte.)Bewegen Sie den Cursor rechts neben das Haus.
Wiederholen Sie dies für jede verbleibende Karte (falls vorhanden).
Wenn die Karte Modulo 3 ist:
1, dann drucken Sie ein Paar Karten;
2, dann drucken Sie eine horizontale Karte;
Andernfalls überspringen Sie die Karte (da zu diesem Zeitpunkt ein Paar benötigt wird).
quelle
--
(eine flache Karte), aber wenn Sie Ihr Programm gestartet haben, bevor ich diese Anforderung geändert habe, überspringe ich das ...Python 2 , 167
182Bytes167 Bytes
182 Bytes
Erläuterung (167-Byte-Version)
Probieren Sie es online aus!
quelle
<pre><code>...
</code></pre>
Tags um Ihre einzelnen Codeblöcke verwenden, anstatt 4 Leerzeichen einzurücken<pre><code>
Tags<3))+"\n"+" "*v+"/\\"*(h+(r>
als anderes Tag erfasst und dieser Bereich der Lösung nicht angezeigt. Vielleicht könnte uns jemand in der Community, der dies ein wenig besser versteht, darüber informieren, wie wir das vermeiden können ... aber abgesehen davon ist Ihre aktuelle Formatierung perfekt lesbar und macht die Notwendigkeit dieser Art der Formatierung insgesamt zunichte<
für<
und>
für>
Perl 5 , 129 Bytes
Probieren Sie es online aus!
quelle