Schreiben Sie ein Programm oder eine Funktion, die drei positive ganze Zahlen (W, H und N) enthält. Drucken Sie ein W × H-Raster aus oder geben Sie es zurück .
, wobei jedes N-te .
in der normalen englischen Lesereihenfolge durch ein ersetzt wird X
.
Beispiel: Bei W = 7, H = 3, N = 3 ist das Raster 7 Zeichen breit und 3 Zeichen hoch, und jedes dritte von links oben abgelesene Zeichen ist ein X
:
..X..X.
.X..X..
X..X..X
In ähnlicher Weise wäre die Ausgabe, wenn die Eingabe W = 10, H = 4, N = 5 ist:
....X....X
....X....X
....X....X
....X....X
Anmerkungen
- "Normale Lesereihenfolge" bedeutet, in jeder Zeile von links nach rechts zu gehen, von der obersten bis zur untersten Zeile.
- Wenn N 1 ist, werden alle
.
's zuX
' s. - Sie können anstelle von und zwei beliebige druckbare ASCII- Zeichen verwenden .
.
X
- Wenn Sie space (
- Möglicherweise verwenden Sie anstelle der Zeilenumbrüche, die das Raster formen, kein anderes Element.
- Wenn Sie space (
- Das genaue Eingabeformat und die Reihenfolge von W, H und N sind nicht besonders wichtig. Dinge wie
[H,W,N]
oderN\nW,H
sind in Ordnung. - Eine nachgestellte Zeile in der Ausgabe ist in Ordnung.
- Der kürzeste Code in Bytes gewinnt!
Beispiele
W = 5, H = 3, N = 1
XXXXX
XXXXX
XXXXX
W = 5, H = 3, N = 2
.X.X.
X.X.X
.X.X.
W = 5, H = 3, N = 3
..X..
X..X.
.X..X
W = 5, H = 3, N = 4
...X.
..X..
.X...
W = 5, H = 3, N = 5
....X
....X
....X
W = 5, H = 3, N = 6
.....
X....
.X...
W = 5, H = 3, N = 7
.....
.X...
...X.
W = 5, H = 3, N = 15
.....
.....
....X
W = 5, H = 3, N = 16 (or more)
.....
.....
.....
W = 1, H = 1, N = 1
X
W = 1, H = 1, N = 2 (or more)
.
W = 8, H = 6, N = 2
.X.X.X.X
.X.X.X.X
.X.X.X.X
.X.X.X.X
.X.X.X.X
.X.X.X.X
W = 8, H = 6, N = 3
..X..X..
X..X..X.
.X..X..X
..X..X..
X..X..X.
.X..X..X
W = 8, H = 6, N = 4
...X...X
...X...X
...X...X
...X...X
...X...X
...X...X
W = 8, H = 6, N = 7
......X.
.....X..
....X...
...X....
..X.....
.X......
W = 8, H = 6, N = 16
........
.......X
........
.......X
........
.......X
W = 37, H = 1, N = 4
...X...X...X...X...X...X...X...X...X.
W = 1, H = 10, N = 8
.
.
.
.
.
.
.
X
.
.
code-golf
arithmetic
grid
Calvins Hobbys
quelle
quelle
["..X..X.", ".X..X..", "X..X..X"]
wie das Netz “?Antworten:
J,
95 BytesVerwendet Leerzeichen und
1
erwartet Eingaben im FormularH W f N
Erläuterung:
Verwendung:
Probieren Sie es hier online aus.
quelle
($":&1)
, würde das nicht als 7 Bytes zählen?()
sind nicht Teil der Funktion. du könntest schreibenf =. $":&1
und dann3 7 f 3
.Python 2, 60 Bytes
Dies druckt Platz und
0
anstelle von.
undX
. Die Eingabe erfolgt als Tupel in Form vonw,h,n
.quelle
J, 12 Bytes
Dies ist eine dyadische Funktion, die das Array
H W
als linkes undN
als rechtes Argument verwendet. Verwendung:Erläuterung
quelle
X.
wirklich am kürzesten?_1
Klammern setzen und die Zwischenräume zwischen den Spalten formatieren, und es wurde länger.BBC Basic, 67 ASCII-Zeichen, tokenisierte Dateigröße 43 Byte
Laden Sie den Interpreter unter http://www.bbcbasic.co.uk/bbcwin/download.html herunter
BBC basic verfügt über einen praktischen Befehl zum Begrenzen der Feldbreite. Wir verwenden
STRING$
, umw*h
Kopien der Zeichenfolge vonn-1
Punkten zu erstellen, denen ein X folgt. Dann verwenden wir LEFT $, um dies aufw*h
Zeichen zu kürzen.quelle
Minkolang 0,14 ,
34,30,28,22 BytesAktivieren Sie hier einen Fall und aktivieren Sie hier alle Testfälle. Erwartet Eingaben wie
N W H
.Erläuterung
Da Minkolangs Codebox torusförmig ist, wird dies am Anfang herumlaufen. Wie
n
jetzt jeder annehmen wird-1
, stürzt dies schließlich mit einem Fehler und keiner weiteren Ausgabe ab, was erlaubt ist.quelle
CJam (16 Bytes)
Übernimmt die Eingabe auf dem Stapel in der Reihenfolge
N W H
, gibt die Zeichenfolge mit0
und zurück1
. Online-DemoPräparation
quelle
APL, 13 Bytes
Das dauert
H W
als linkes Argument undN
als rechtes Argument.Erläuterung:
Probieren Sie es online aus: erste Testfälle , letzter Testfall . Beachten Sie, dass meine Kopie von Dyalog keine Boxed-Ausgabe anzeigt.
quelle
CJam, 20 Bytes
Übernimmt die Eingabe als HW N.
quelle
q~_@*,@(S*'X+f=/N*
, mit Eingabe in der Reihenfolge NH W.'X
mit0
, und das wird sein 17MATLAB,
61 5554 BytesWow, ich dachte, MATLAB wäre in dieser Hinsicht wettbewerbsfähig, aber wie falsch lag ich!
Die Funktion erstellt ein Array von Einsen mit den richtigen Dimensionen und setzt dann jedes n-te Element auf 0 (MATLAB behandelt implizit das Umbrechen der Indizes in 2D). Wir addieren dann 45 ('-') zu dieser Zahl und konvertieren sie in ein Zeichen-Array, das zurückgegeben werden soll.
In den Fragen können zwei beliebige ASCII-Zeichen für das Raster verwendet werden. Ich verwende '-' anstelle von 'x', um einige Bytes zu speichern. Das Eingabeformat ist ebenfalls nicht festgelegt, daher sollte es als
[w h],n
- dh als Array mit Breite und Höhe und dann als zweiter Parameter als n angegeben werden.Dies funktioniert auch mit Octave und kann hier online ausprobiert werden . Die Funktion ist bereits im verknüpften Arbeitsbereich eingerichtet, sodass Sie einfach Folgendes aufrufen können:
Welche Ausgänge:
quelle
c=[b'+45,''];
Verarbeitung, 93 Bytes (Java, 104 Bytes)
Der Grund, warum ich Processing anstelle von Java verwendet habe, ist, dass Sie nicht auf den Zeiger durch Tippen zugreifen müssen,
System.out
da auf eine lokale Variable direkt zugegriffen werden kann. Damit habe ich 11 Bytes verdient. Die Funktion gibt das Ergebnis nicht zurück, sondern druckt es aus.quelle
i++%a...
) verschieben. Es sieht so aus, als hätten Sie}
am Ende einen Ersatz übrig, den Sie auch nicht benötigen.Japt ,
33322725 BytesÜbernimmt die Eingabe im Format
und
W H N
. Verwendet"
anstelle von.
undX
verbunden. Probieren Sie es online!Ungolfed und Erklärung
Vorschläge willkommen!
quelle
Vitsy ,
2523222119 BytesVielen Dank an @ Sp3000 für den Hinweis, dass ich kein Duplikat benötige und mir 2 Bytes spare!
Übernimmt die Eingabe als
N W H
. Probieren Sie es online!quelle
K,
21,19,1814 BytesArgumentiert wie folgt
(H W;N)
:In Aktion:
quelle
Pyth -
191817 BytesIch hoffe, es mehr Golf. Übernimmt die Eingabe als
N\n[W, H]
.Test Suite .
quelle
R, 66 Bytes
Dies ist eine Funktion, die drei Ganzzahlen akzeptiert und eine Matrix von Zeichenwerten zurückgibt. Um es aufzurufen, weisen Sie es einer Variablen zu.
Ungolfed:
quelle
JavaScript (ES6),
65-60ByteErläuterung
Prüfung
Code-Snippet anzeigen
quelle
Mathematica, 85 Bytes
Wie bei vielen anderen Lösungen wird hierdurch eine einzelne Zeile erstellt und anschließend partitioniert.
quelle
JavaScript (ES6), 55 Byte
Verwendet das IIFE
f
Schleife, um eine return-Anweisung zu speichern.Ausgabe für w = 5, h = 3, n = 7:
quelle
C # 185 Bytes
Für eine besser lesbare Lektüre:
Verwendung:
quelle
Julia, 50 Bytes
Dies schafft eine Funktion
f
, die drei Ganzzahlen akzeptiert und ein zweidimensionales Array von Zeichenfolgen zurückgibt.Ungolfed:
quelle
Ruby,
6756 BytesDrucken eines Arrays, da es akzeptiert wird.
67 Bytes
Ungolfed:
Verwendung:
quelle
MATLAB, 44 Bytes
Hinweis: Sehr anderer Ansatz als der von Tom Carpenter.
Definiert eine anonyme Funktion, die Eingaben als akzeptiert
[W,H],N
. Ich näherte mich diesem Problem mit not-the-modulo-of- N für ein Array 1: W * H und formte die Lösung dann einfach in ein zweidimensionales Array um, das dann in ein Zeichenarray konvertiert wird.Beispielausgabe für
[5,3],7
:quelle
Common Lisp, SBCL, 94 Bytes
Erläuterung
(=(mod(1+ i)c)0)(=(mod(1+ i)a)0)
sieht ziemlich albern aus (weil es so ähnlich ist, aber ich weiß nicht, ob es gelöst werden kann, indem Bytes gespart werden)Ich benutze
(1+ i)
statti
weildotimes
abi=0
und ich möchte ab starten1
. Es ist auch hilfreich, weil ich(* a b)
anstelle von verwenden kann(1+(* a b))
quelle
Java,
185183 BytesDanke Thomas Kwa, dass du mir 2 Bytes gespart hast!
Ungolfed (ish):
Verwendung:
Vielleicht gewinnt Java eines Tages: P
quelle
>0
anstelle von!=0
und<1
anstelle von verwenden==0
.