Langzeit-Lauerer erstmaliges Poster hier.
Schreiben Sie ein Programm mit 3 Eingaben: X, Y und Z.
- X = quer (Spalten)
- Y = unten (Zeilen)
- Z = Ortsmarkierung
Das Programm sollte dann ein visuelles Raster X quer und Y runter drucken. Dieses Gitter kann aus einem beliebigen Zeichen außer "+" bestehen. Jeder 'Ort' erhält eine Indexnummer, die von 1 an Koordinate 1, 1 quer und dann bis zum Ende nach unten zählt.
X und Y werden immer mindestens 3 sein und Z wird niemals größer sein als X * Y
.
Z steht für die Position, die als "+" auf der Position gedruckt wird, sowie für 1 Zeichen links, rechts, oben und unten. Zum Beispiel:
+
+++
+
Wenn die + Zeichen die Kanten abfangen würden (ganz oben, ganz links, ganz rechts und / oder ganz unten), sollte das + entlang derselben Achse zurückprallen und die andere Seite überlaufen.
Beispiele: Eingabe = 5, 5, 13
-----
--+--
-+++-
--+--
-----
Eingabe = 10, 10, 10
-------+++
---------+
---------+
----------
----------
----------
----------
----------
----------
----------
Eingabe = 10, 10, 21
----------
+---------
+++-------
+---------
----------
----------
----------
----------
----------
----------
Bearbeiten: nicht quadratisches Beispiel 16,3,32
---------------+
-------------+++
---------------+
Ich glaube, ich habe alles abgedeckt. Die Eingabe sollte unbegrenzt sein. Wenn Ihr Programm dies erfordert, können Sie sie auf 64 * 64 begrenzen.
Bonuspunkt (kann ich das tun?): Eingabe Z sollte nicht> X * Y sein, aber wenn es größer als Y * Z ist, geben Sie die Mitte + in die Mitte des Gitters aus.
BEARBEITEN: Eingang Z darf nicht größer als X * Y sein
Edit 2:. Einige Änderungen an X und Y vorgenommen, um hoffentlich klarer zu werden
Dies ist Code Golf, kürzester Code gewinnt.
Antworten:
Python 2,
172171 BytesBearbeiten: 1 Byte durch Konvertierung in Funktion gespeichert.
Zurück (besser lesbar):
quelle
JavaScript (ES6), 165 Byte
quelle
Befunge, 175 Bytes
Probieren Sie es online aus!
In der ersten Zeile (und einer kurzen Fortsetzung der zweiten Zeile) werden die Parameter eingelesen und einige Konstanten berechnet - die Koordinaten des Ortes ( lx , ly ) sowie angepasste Koordinaten, die für das Abprallen der Position verantwortlich sind Kanten:
Die zweite und dritte Zeile enthalten die Hauptschleifen über die Höhe und Breite des Gitters, wobei der Ausführungspfad zunächst von rechts nach links verläuft, bevor auf die dritte Zeile von links nach rechts gedreht wird. Für jede Koordinate im Gitter ( gx , gy ) berechnen wir die folgende Bedingung:
Wenn diese Bedingung wahr ist, drücken wir a
"+"
auf den Stapel, wenn false, drücken wir a"-"
. Um eine Verzweigung hier zu vermeiden, drücken wir wirklich nur43 + 2 * !condition
(43 ist der ASCII-Wert von plus und 45 ist minus).Sobald die Schleifen beendet sind, ist das letzte Codebit nur eine Standardausgaberoutine, die alles auf dem Stapel druckt.
quelle
JavaScript (ES6), 170
Immer noch golfbar
Weniger Golf gespielt
Prüfung
quelle