Sie müssen eine Pyramide aus Würfeln bauen. Würfel können aus 2 Blickwinkeln betrachtet werden:
_____ _____
/\ \ / /\
/ \____\ /____/ \
\ / / \ \ /
\/____/ \____\/
Dies ist ein Beispiel für Würfel der Größe 2 aus den 2 möglichen Winkeln. Die Höhe der Würfel ist ein $size
Schrägstrich (oder ein umgekehrter Schrägstrich), und die Breite des Würfels ist ein 2 * $size
Unterstrich. Die Breite der obersten Ebene sollte einen zusätzlichen Unterstrich enthalten.
Die Eingabe erfolgt als Zeichenfolge, die eine Zahl (Würfelgröße), einen Schrägstrich oder einen umgekehrten Schrägstrich (zur Angabe von Richtung / Winkel) und eine andere Zahl (Höhe der Pyramide) enthält.
Beispiele:
Eingang:
1/1
Ausgabe:
___
/\__\
\/__/
Eingang:
1\1
Ausgabe:
___
/__/\
\__\/
Eingang:
2/1
Ausgabe:
_____
/\ \
/ \____\
\ / /
\/____/
Eingang:
1/2
Ausgabe:
___
___/\__\
/\__\/__/
\/__/\__\
\/__/
Eingang:
2\2
Ausgabe:
_____
/ /\
/____/ \_____
\ \ / /\
\____\/____/ \
/ /\ \ /
/____/ \____\/
\ \ /
\____\/
Eingang:
1/3
Ausgabe:
___
___/\__\
___/\__\/__/
/\__\/__/\__\
\/__/\__\/__/
\/__/\__\
\/__/
- Nachgestellte / führende Leerzeichen sind in Ordnung.
- Standardlücken sind nicht zulässig.
- Sie können davon ausgehen, dass Eingaben immer gültig sind.
- Sie können davon ausgehen, dass die Eingabe keine zu große Ausgabe verursacht, z. B .: kein Zeilenumbruch, wenn die Ausgabe auf dem Terminal gedruckt wird.
- Größe des Würfels & Höhe der Pyramide ist positiv (dh ≥ 1)
- Das ist Code-Golf, also gewinnt der kürzeste Code in Bytes.
Aktueller Gewinner ist:
Glen O mit 270 Bytes in Julia
Herausforderung bleibt offen. Wenn Sie die aktuelle Bestleistung erzielen, aktualisiere ich die akzeptierte Antwort.
Antworten:
Julia -
503455369346313270 BytesUngolfed:
Verwendung:
oder
quelle
Perl, 343 Bytes
Mehrzeilig mit Kommentaren:
Beispielausgabe:
Ich habe auch versucht, es mit dem gleichen Algorithmus als C-Funktion zu implementieren, in der Hoffnung, Bytes aus dem Luxus von Variablennamen mit einzelnen Zeichen zu sparen, aber es endete 15 Bytes größer, bei 358 Bytes (muss mit
-std=c89
unter gcc kompiliert werden , um aufzuhören) dasvoid
im Funktionsheader):quelle
printf("%c" --> putchar(
,printf("\n") --> puts("")
, alle int Erklärungen außerhalb der Funktion bewegen, dann kann man das beseitigenint
(siehe meta.codegolf.stackexchange.com/q/5532/15599 ), ändern Sie alle Zeichenliterale für ihre ASCII-Codes, z' ' --> 32
. Das Refactoring von for-Schleifenfor(k+1;z--;)
kann ebenfalls hilfreich sein, ist jedoch schwieriger.e
kann ein Int sein, vorausgesetzt, Sie initialisieren es auf Null.sscanf
überschreibt nur das niederwertigste Byte und hinterlässt eventuell vorhandenen Müll in den anderen drei Bytes.main
stattdessen drei zusätzliche Zeichenj
, müssen aber keine Parameter übergebens
, und Sie können die automatische Initialisierung globaler Variablen nutzen.Ruby, 332
Das einzige, was bisher gemacht wurde, ist das Eliminieren von Kommentaren und Einrückungen. Ich werde später Golf spielen.
Ich richte eine Reihe von Leerzeichen ein und stecke die einzelnen Zeichen hinein. Es gibt eine Menge Überzeichnungen von einem Würfel auf den anderen (Arbeiten von unten nach oben) und innerhalb des Würfels selbst, um zusätzlichen Code zu vermeiden. Ich mache die Pyramide, indem ich eine Raute zeichne (ähnlich wie /codegolf//a/54297/15599 ) und die obere Hälfte unterdrücke.
Der schwierige Teil war das Zeichnen des skalierbaren Würfels. Ich habe mit einem Perimeter-Sechseck mit 2n + 1
_
Zeichen an den horizontalen Seiten begonnen. Ich hatte auch 2n + 1/
und\
, also hatte ich eine zu viele, aber indem_
ich die letzte geplottet habe, habe ich sie überschrieben.Die internen Linien sind die einzigen, die abhängig von der Richtung, in die der Würfel zeigt, geändert werden. Ich zeichne alles
/
und\
mit einer einzigen Aufgabe.abs
Dies hilft, die Richtung umzukehren, undi>>9&1
fügt den negativen Werten von i eine zusätzliche 1 hinzu, wodurch der obere Teil nach unten abgesenkt wird. Füri
= 0 ist eines der erforderlichen Symbole_
überzeichnet, sodass die Auswahlzeichenfolge'\_/'
alle drei Symbole enthält, die nach dem Vorzeichen von ausgewählt wurdeni
.Der Leerraum um die Ausgabe ist groß, aber nicht zu groß: 4 * p * n hoch und 8 * p * n breit (letzteres soll ermöglichen, dass sich der Apex-Würfel immer in der Mitte der Ausgabe befindet.) Leerzeichen ", um ganze Zeilen einzuschließen, kann aber bei Bedarf überarbeitet werden.
Ungolfed Code
quelle