Dies ist ein Fenster:
---
| |
---
Fügen wir einige Wände hinzu |
. Platzieren Sie zwei Felder auf beiden Seiten, damit das Fenster viel Platz bietet.
| --- |
| | | |
| --- |
Fügen wir nun ein Dach und eine Decke hinzu. Fügen Sie eine weitere Reihe darüber und darunter hinzu, damit das Fenster in der Mitte des Raums bleibt.
---------
| |
| --- |
| | | |
| --- |
| |
---------
Fügen Sie jetzt einfach ein Dach hinzu. Setzen Sie einen Schrägstrich so weit wie möglich nach links und einen Backslash so weit wie möglich nach rechts, und wir haben Folgendes:
/ \
---------
| |
| --- |
| | | |
| --- |
| |
---------
Bewegen Sie dann den Schrägstrich nach oben und nach rechts. Bewegen Sie den Backslash nach oben und nach links:
/ \
/ \
---------
| |
| --- |
| | | |
| --- |
| |
---------
Wiederholen Sie diesen Vorgang, bis sich die beiden Schrägstriche treffen, und fügen Sie an der Stelle, an der sie sich treffen, ein Sternchen hinzu:
*
/ \
/ \
/ \
/ \
---------
| |
| --- |
| | | |
| --- |
| |
---------
Und du bist fertig! Dies ist ein 1x1 Haus. Ein 2x2 Haus würde so aussehen:
*
/ \
/ \
/ \
/ \
/ \
/ \
/ \
/ \
-----------------
| | |
| --- | --- |
| | | | | | |
| --- | --- |
| | |
|-------|-------|
| | |
| --- | --- |
| | | | | | |
| --- | --- |
| | |
-----------------
und ein 3x2 Haus:
*
/ \
/ \
/ \
/ \
/ \
/ \
/ \
/ \
/ \
/ \
/ \
/ \
-------------------------
| | | |
| --- | --- | --- |
| | | | | | | | | |
| --- | --- | --- |
| | | |
|-------|-------|-------|
| | | |
| --- | --- | --- |
| | | | | | | | | |
| --- | --- | --- |
| | | |
-------------------------
Die Herausforderung
Sie müssen ein vollständiges Programm schreiben, das zwei ganze Zahlen, x und y, verwendet und ein Haus ausgibt, das X Räume breit und Y Räume hoch ist. Ihr Programm sollte in der Lage sein, Häuser bis zu 10x10 zu verarbeiten. IO kann in jedem vernünftigen Format vorliegen. Nachgestellte Leerzeichen in jeder Zeile sind zulässig, und eine nachgestellte neue Zeile ist zulässig.
Kürzeste Antwort in Bytes gewinnt.
f'{name}'
Zeichenkettenformatierung?Python 2,
190181 BytesIch bin mir ziemlich sicher, dass es viel zu Golfen gibt, besonders die Fenster, aber hier ist etwas fürs Erste. Geben Sie Breite und Höhe durch Kommas getrennt ein, z
1,2
.Schnelle und grobe Erklärung:
quelle
JavaScript (ES6),
292270238215200 ByteVielen Dank an @Neil, dass Sie dabei geholfen haben, dieses Problem zu lösen!
Anrufen als:
F(a)(b)
Baut das Dach und baut dann das Kernhaus mit geschichteten Zeichenfolgenwiederholungen zusammen.
quelle
join`|\n`
und nun wünschte ich, ich hätte zu der Zeit einen Kommentar abgegeben. Es wäre eine gute Ausrede gewesen, meinen Teilkommentar zu ergänzen und vorzuschlagen, dass Sie9*a
irgendwann etwas verwenden, was ich nie eingereicht habe, weil es zu kurz war.4*a-1
sieht falsch aus, ich denke es sollte sein4*a
, das würde dir übrigens 4 Bytes sparen.m-i-1
wird--m
.9*a-a
wird8*a
.*\n${[...Array(m)].map(...).join
\ n}\n
`` tun können, aber Sie können eine besser machen und die Zeichenfolge vorher und nachher gleichzeitig verbinden:a=>b=>(p=(c,d=' ')=>d.repeat(c),[p(m=4*a)+`*`,...[...Array(m)].map((c,i)=>p(--m)+'/'+p(i*2+1)+'\\'),y=p(8*a+1,'-')].join`\n`+p(b,`\n`+[x=p(a,'| '),w=p(a,'| --- '),p(a,'| | | '),w,x,y].join`|\n`))
`/${p(i*2+1)}\\`
.C ++, 282 Byte, behebt die Probleme mit dem vorherigen Eintrag:
Ausgabe:
quelle
Ruby, Rev. B 165 Bytes
verwendet eine einzelne Schleife und mehrere andere Golftricks.
Ruby, Rev. A 179 Bytes
Ungolfed
quelle
| \-'
.\-
es bedeutet nichts als Escape-Sequenz, daher\-
wird die nur als 2 Zeichen analysiert. Dann hat natürlich-
eine besondere Bedeutung zutr
, so dass wir die Zeichenfolge' \-'
für die Fenster benötigen , um die-
(Zuordnung C-> Leerzeichen, B->-
und A->,-
da keine Zeichen mehr übrig sind.) Für die Etagen haben wir nur Die Zeichenfolge'-'
und in diesem Falltr
scheint es ein Vergnügen zu sein, sie nur als Literal und nicht als Sonderzeichen zu interpretieren und C = B = A ='-'
zuzuweisen. Alles in allem war es schwierig, mit der Arbeit zu beginnen. Ich bin sicher, es gibt mehr zu tun, wird später bearbeitet.C ++, 258 Bytes Test hier
Ergebnis:
quelle
-
. Die Zwischenetagen werden|
C #,
361353 BytesVolles Programm:
quelle
s=""
innen der Aufmachungen für den werden kann (j) Schleife (man denkej-->0
für den Zustand als gut, undi++<h
in die letzte Schleife),i=0
ein Byte in der Erklärung zur Schleife der aus speichern bewegt werden kann. Sie können auch ein Byte durch die Wiederverwendung zugewiesen leere Strings speichern können (einmalm
zugeordnet ist, können Sie zuweiseno=m
die rettende""
. Ersetzen Sie auch Strings nimmt, so können Sie Verwenden Sieq
stattdessen' '
, und es gibt keine Notwendigkeit für das Leerzeichen nach dem>
beim Deklarierenr
. Kleine Dinge;)VBA, 284 Bytes
Die Ersetzen-Funktion ist ein nützliches Werkzeug, um mehrere Kopien auf eine Weise zu erstellen, die die String-Funktion leider nicht möchte.
Rufen Sie das Direktfenster des VBA-Editors auf, um den besten Effekt zu erzielen:
?H(8,8)
Zum Beispiel.quelle