Herausforderung
Bei einer vorgegebenen Größe s drucken Sie ein Würfelnetz dieser Größe aus Hash-Symbolen ( #
) und Leerzeichen ( ).
Beispiele:
1:
#
# # #
#
#
2:
# #
# #
# # # # # #
# # # # # #
# #
# #
# #
# #
3:
# # #
# # #
# # #
# # # # # # # # #
# # # # # # # # #
# # # # # # # # #
# # #
# # #
# # #
# # #
# # #
# # #
Das Netz kann tatsächlich ein beliebiges gültiges Würfelnetz sein, das sich zu einem Würfel zusammenfalten lässt, zum Beispiel:
# #
# #
# # # # # # # #
# # # # # # # #
# #
# #
# # # #
# # # #
# #
# #
# #
# #
# # # #
# # # #
Regeln
- Das resultierende Netz muss geometrisch gültig sein (in einen Würfel faltbar)
- Standardlücken verboten
- Lesen Sie die Regeln sorgfältig durch
- Dies ist Code-Golf , die kürzeste Antwort gewinnt, wird aber nicht ausgewählt
Antworten:
Python 2, 47 Bytes
Probieren Sie es online!
Druckt dieses Netz, das als linksbündig ausgewählt wurde:
Die Zeilen haben
n
oder4*n
Kopien von'# '
. Für jeden von1,4,1
uns werdenn
so viele Kopien gedruckt ,n
und zwar fürn
Zeilen. Eineexec
Schleife in einerfor
Schleife zu haben, scheint verschwenderisch, aber ich habe nicht besser gesehen.Alternativen, die ich getestet habe:
(Die
def
Funktionen können alle eine kürzere als ein Programm sein.)quelle
Oktave,
58444232 Bytesteilweise inspiriert von @xnors Python-Antwort.
Erstellt ein Quadratmuster von '#' für Eingabe 2, ergibt sich folgendes Muster:
vier
z
s sind horizontal verkettet:z
undy
undz
sind vertikal verkettetProbieren Sie es online!
Vorherige Antwort:
Probieren Sie es online!
Erzeugt eine T-förmige
quelle
Mathematica,
776052 BytesVielen Dank an Martin Ender für das Golfen in 8 Bytes Entfernung!
Unbenannte Funktion, die ein positives ganzzahliges Argument verwendet
#
und eine Zeichenfolge mit Zeilenumbrüchen (einschließlich einer nachgestellten Zeile) zurückgibt; Jede Zeile hat auch ein Leerzeichen. Zunächst definieren wir±
eine Funktion, die ihre Eingabezeiten wiederholt#
. Danna
wird definiert als±"# "
(dies#
ist ein Zeichen, nicht die Eingabe!) und darausb
wird die Menge der#
kurzen Zeilen definiert, während±{a,a,a,a}<>n
die Menge der#
langen Zeilen ist. (In beiden Fällen wird zwischen übereinstimmenden Anführungszeichen ein Zeilenvorschub eingefügt.) Das Endergebnis<>b
verkettet die resultierende Liste der Zeichenfolgen mit der zweiten Kopie des Satzes von kurzen Zeilen. Beispielausgabe bei#=2
( xnors Antwort lehrte mich, dass diese Ausrichtung Golfspieler ist):Vorherige Version dieser Implementierung:
Ursprüngliche Einreichung:
Baut einen String aus
4*(3#+1)
Stücken, von denen jedes entweder"# "
," "
oder"\n"
; berechnet einfach die zu verwendenden Teile basierend auf dem Indexn
. Beispielausgabe bei#=2
:quelle
JavaScript (ES6), 59 Byte
Die Ausgabe enthält ein Leerzeichen am Ende jeder Zeile und ein Leerzeichen am Ende einer neuen Zeile.
quelle
Ruby, 36 Bytes
Verwendung:
Ruby, 38 Bytes
Diese Form ist in Ruby länger, aber ich gehe davon aus, dass es einige Sprachen gibt, in denen sie kürzer ist.
Verwendung:
Beide Antworten können kürzer sein, wenn es zulässig ist, (bevorzugt) ein Array von Zeichenfolgen oder (weniger bevorzugt) eine einzelne Zeichenfolge zurückzugeben, anstatt zu drucken.
quelle
Scala, 56 Bytes
quelle
JavaScript (ES6), 71
Prüfung
quelle
Java 8, 99 Bytes
quelle
V ,
2423201820 BytesMit allen versteckten Zeichen angezeigt
^[
ist0x1b
(Escape-Zeichen-Literal) und^V
ist0x16
(C-v
)Probieren Sie es online!
Ich musste bytecount erhöhen, weil der
Ä
Befehl in diesem neuen V-Pull fehlerhaft warAusgaben in diesem Format:
mit einer führenden Newline
Hexdump:
Erläuterung
Nachdem eine Seite des Netzes fertiggestellt ist, müssen wir das Netz erstellen
Alternative Lösung, wenn wir die Leerzeichen nicht ausgeben:
2120181618 Bytes(Aus dem gleichen Grund wie bei der Top-Lösung wurde dieser TIO-Link geändert.)
Probieren Sie es online!
quelle
V , 14 Bytes (nicht konkurrierend)
Probieren Sie es online!
Aus welchem Grund auch immer, diese Herausforderung deckte zahlreiche Fehler auf. Jetzt, da sie alle repariert sind, ist diese Version leider nicht konkurrierend, aber es ist schön zu sehen, wie eine V-Antwort auf diese Herausforderung aussehen sollte, wenn nicht Tonnen von Bytes hinzugefügt werden müssen, um mit meiner schlampigen Codierung Schritt zu halten.
Erläuterung:
quelle
J
Problem war nicht schlampig Codierung AFAIK, ich denke, es war nur NVIM Standard?Jelly ,
20 bis19 BytesProbieren Sie es online!
-1 dank 44874 (steenbergh).
Ich kann nicht MUDDYFISH HILFE OUTGOLF!
Ist das golfen ???
20 -19 Bytes scheinen einfach zu viel zu sein , siehe Link 1.Erläuterung:
quelle
@
aber die Operanden zu tauschenx
sich:”#xẋ³Wẋ³K€Y
.Holzkohle , 20 Bytes
Der Code endet mit einem Leerzeichen. Probieren Sie es online!
Erläuterung
Charcoal ist eine auf ASCII-Kunst spezialisierte Sprache. Es ist auch unvollständig, fehlerhaft und nicht ausreichend dokumentiert. Es genügt zu sagen, dass dies einiges an Versuch und Irrtum erforderte, bevor es tat, was es sollte.
Nλ
gibt eine Zahl in einλ
.G
ist der Polygon-Befehl, mit dem wir hier ein Rechteck zeichnen.↑λ←×⁶λ↓λ
Gibt den Rand des Polygons an: Aufwärtsschritteλ
, sechsmal nach linksλ
und abwärtsλ
. (Das sind dreiλ
vonλ
Blöcken Seite an Seite.) Die Unterkante des Rechtecks zu entnehmen ist. Das Polygon wird dann mit der Zeichenfolge gefüllt#
.D
kopiert den aktuellen Canvas auf stdout, was ungefähr so aussieht:G
Befehl befindet sich der Cursor in der unteren linken Ecke der Zeichenfläche.M×⁴λ←
bewegt sie sich nach links um 4 malλ
Schritte (entspricht zweiλ
vonλ
Blöcken).Setze sie zusammen und du hast ein Würfelnetz.
quelle
Bash / Unix-Dienstprogramme,
72696866 BytesProbieren Sie es online!
Dies funktioniert unter Verwendung der Tatsache, dass [4 ^ k / 3], wenn es in Basis 2 geschrieben wird, 10101010 ... 01 mit k 1 ist. (Die eckigen Klammern kennzeichnen hier die Bodenfunktion.)
quelle
Pyke, 16 Bytes
Probieren Sie es hier aus!
Gleichwertig
Wegen Unbedruckbaren
Dies setzt ein paar Tricks ein, um die Byteanzahl zu verringern:
[1, 4, 1]
XF
legt die Ausgabe automatisch im Stapel ab"#
am Ende wird mit der letzten getauscht*
, was bedeutet, dass das Schließen"
nicht erforderlich ist. Dies geschieht implizit, wenn das letzte Token eine Zeichenfolge ist.quelle
Python 2 ,
687165 Bytes-6 danke an @sagiksp
Probieren Sie es online!
In Ermangelung einer Möglichkeit, @xnor zu schlagen, poste ich meine rekursive Funktion einfach als alternativen Ansatz. Für f (5) druckt
Dieses Muster wurde einfach gewählt, weil es im Gegensatz zu allen anderen in zwei Teile geteilt werden kann.
quelle
PHP,
6462 Bytes2 Bytes gespart dank Christoph .
Druckt ein Netz wie dieses:
(mit einer führenden Newline)
quelle
while($a="282"[$i++/$s=$argv[1]]*$s)echo str_pad("\n",$a,"# ");
Spart 2 Bytes.Batch, 111 Bytes
quelle
Aufdringlich ,
322928 BytesDruckt das Würfelnetz linksbündig. Das war schwer zu golfen ...
Probieren Sie es online!
quelle
Retina ,
3937 BytesIch benutze Retina zum ersten Mal und versuche immer noch zu verstehen, wie man Dinge macht.
(mit zwei nachgestellten Leerzeichen nach der 4. und 5. Zeile)
Vielen Dank an Martin Ender für das Golfen mit 2 Bytes!
Probieren Sie es online!
quelle
$_
im unteren Bereich, indem nach dem Entfernen der leeren Zeile einige Dinge vertauscht werden. tio.run/nexus/… hat die gleiche Byteanzahl, ist aber etwas hässlicher.QBIC ,
526740 BytesKomplette Neuschreibung:
Dies verwendet nun dieses Muster:
Wo die
-
mit Leerzeichen gefüllt sind.quelle
Pip ,
281716 Bytes15 Byte Code, +1 für
-n
Flag.Nimmt die Größe als Befehlszeilenargument. Probieren Sie es online!
Erläuterung
Das Folgende ist nicht genau, wie die Daten geändert werden, aber es gibt die Grundidee (für
a=2
):quelle
05AB1E , 13 Bytes
Probieren Sie es online!
Erläuterung
Beispiel Eingabe
n=2
quelle
152 Bytes
quelle
SmileBASIC,
5750 BytesErklärt:
Nach dem ersten DRUCKEN (Größe = 2, @ ist die Cursorposition):
Nach dem SCROLL:
Nach dem zweiten DRUCK:
quelle
Common Lisp,
838179 BytesVerwendung:
(funcall #'(lambda(x)(format t"~v@{~v@{# ~}~:*~%~}~v@{~vt~0@*~v{# ~}~%~}"x(* x 3)(* x 2)))2)
Ausgabe:
Wie funktioniert es?
Verbesserungsvorschläge sind willkommen.
quelle