Geben Sie die Eingabe ein tilesX
und tilesY
erstellen Sie eine Methode, mit der aus den Kacheln ein rechteckiger Ring entsteht.
Die Funktion muss die Kacheln in einem Ring wie folgt anordnen:
tilesX
undtilesY
sind immer positive ganzzahlige Werte, können nicht 0 seintilesX
undtilesY
nicht immer gleich, erwarten Werte wie:2x5
,6x3
usw.- Eine Überprüfung auf ungültige Eingabe ist nicht erforderlich
- Sie können die Kacheln auf beliebige Weise anzeigen, einschließlich 2D-Arrays, ASCII-Grafiken oder gedrucktem Text.
- Es gibt keine strenge Möglichkeit, wie die Eingabe übergeben wird, solange es sich um zwei Ganzzahlen handelt.
- Kann keine Linie sein, das Zeichnen einer Rechteckgröße von
tilesX
undtilesY
Pixel ist ungültig - Der kürzeste Code gewinnt
Antworten:
Dyalog APL, 8 Bytes
Dieser monadische Funktionszug verwendet Höhe und Breite als richtige Argumente und gibt ein 2D-Array mit 0 (Rand) und 1 (Innen) zurück. Testen Sie es auf TryAPL .
Wie es funktioniert
quelle
MATL , 10 Bytes
Dies gibt ein Array aus, das Nullen und Einsen enthält.
Probieren Sie es online aus!
Fügen Sie für die grafische Ausgabe
1YG
am Ende hinzu, um das Array als Bild ( 13 Byte ) anzuzeigen :Probieren Sie es bei MATL Online aus! Zum Beispiel,
produziert
quelle
HTML / JS / CSS,
198194 BytesGrafische Ausgabeversion. Die Byteanzahl enthält
f=
weder die drei<input>
Elemente, die nur zu Demonstrationszwecken verwendet werden. 3 Bytes dank @IsmaelMiguel gespeichert.quelle
f=(n,m)=>{d.style.width=n*25+'px';d.style.height=m*25+'px';}
vereinfacht werdenf=(n,m)=>with(d.style)width=n*25+'px',height=m*25+'px';
?with
spart mir 3 Bytes, aber ich brauche immer noch das{}
s. Auf der anderen Seite;
ist das unnötig, also habe ich das auch entfernt.MATL , 10 Bytes
Eingabeargumente sind Höhe und Breite als Ganzzahlen. Die Ausgabe ist eine Größenmatrix,
height x width
bei der die Grenzkacheln 0 und die inneren Werte 1 sind.Probieren Sie es online aus!
Erläuterung
Gleiche Logik wie meine andere Antwort mit weniger Bytes.
quelle
MATLAB,
3231 BytesDadurch wird eine anonyme Funktion erstellt, die dann wie
ans([4 5])
im Arbeitsbereich ausgeführt werden kann.Eingabe ist
[height, width]
und Ausgabe ist eine Matrix mit 1 in der Mitte und 0 für die Grenze.Die Art und Weise, wie dies funktioniert, ist eine Matrix von denen, die die Größe der Eingabe haben. Es wird dann mit einer 3 x 3-Identifikationsmatrix mit Einsen auf der Diagonale gefaltet. Wir verwenden die
same
Eingabe bisconv2
(hier verkürzt's'
), um das Ergebnis auf der gleichen Größe wie die Eingabe zu halten.Wir wollen dann die Ausgabe in einen Binärwert mit 0 um die Grenze und 1 innerhalb konvertieren. Wir benutzen die Ungleichung
>2
weil alle Kantenpixel ein Ergebnis <3 haben und alle Nicht-Grenzelemente ein Ergebnis von 3 haben.Für die grafische Ausgabe:
quelle
Gelee , 10 Bytes
Gibt ein Raster von 0 (Rand) und zurück 1 (Innen) zurück. Probieren Sie es online aus!
Wie es funktioniert
quelle
Julia,
4634 BytesDies ist eine Funktion, die zwei Ganzzahlen akzeptiert und ein zweidimensionales boolesches Array zurückgibt.
Wir konstruieren eine n × m- Matrix unter Verwendung eines Array-Verständnisses mit einer Doppelschleife
for
. Für jeden Index von 1 bis n und 1 bis m , dh für jedes Element der Matrix, setzen wir den Wert auf,true
wenn n > i > 1 und 1 < j < m . Dies gilt überall außer an den Grenzen, sodass das resultierende Arraytrue
s in der Mitte undfalse
s um den Rand herum hat.Beispiele:
12 Bytes dank Dennis gespart!
quelle
CJam, 20 Bytes
Die Eingabe sollte in der Form erfolgen
height width
, die Ausgabe ist ein ASCII-Raster mit Leerzeichen für die Mitte und#
für die Grenze verwendet.Testen Sie es hier.
Erläuterung
quelle
Pyke,
1615 BytesProbieren Sie es hier aus!
Erläuterung:
Verwenden Sie diesen Code für eine hübsche Ausgabe .
Oder 13 Bytes mit einer auf Null gesetzten Maske am Rand (mittlere Zeichen ungleich Null)
Probieren Sie es hier aus!
quelle
JavaScript (ES6), 80
82 85Bearbeiten Sie 3 gespeicherte Bytes thx @Neil
Bearbeiten Sie 2 Bytes, die
reduce
einmal gespeichert wurdenAnonyme Funktion, die eine mehrzeilige Zeichenfolge zurückgibt
Prüfung
quelle
!--h|!o
ist schon eine ganze Zahl? Ansonsten mag ich die Verwendung von!o
.Ruby, 63 Bytes
Anonyme Funktion, druckt nach STDOUT. Grenze ist
#
.quelle
JavaScript (ES6), 97 Byte
Erstellt einen Ring von
0
s. Wahrscheinlich ein schrecklicher Ansatz, aber ich wollte Randfälle vermeiden.quelle
JavaScript (ES6), 77 Byte
quelle
f(4)(4)
->Array [ Array[4], Array[4], Array[4], Array[4] ]
Netzhaut ,
4543 BytesDie Eingabe sollte in der Form erfolgen
height width
, die Ausgabe ist ein ASCII-Raster, das1
für die Mitte und#
für die Grenze verwendet wird.Probieren Sie es online aus!
Erläuterung
Konvertieren Sie jede Zahl
N
in eine Folge vonN
Einsen (dh konvertieren Sie die Eingabe in unär).Passen Sie jedes
1
anheight
und ersetzen Sie es durchwidth
, während Sie alles andere zusammenbringen und entfernen. Wir tun dies, indem wir eine geteilte Phase missbrauchen. Dadurch wird einw x h
Raster erstellt.Schließlich ersetzen wir jedes
1
durch ein#
, das entweder in der ersten Zeile, der letzten Zeile oder am Anfang oder Ende einer Zeile steht.quelle
Eigentlich 23 Bytes
Probieren Sie es online aus!
Dieser Ansatz ist meinem Ansatz bei dieser damit verbundenen Herausforderung sehr ähnlich .
Erläuterung:
quelle
QBasic, 69 Bytes
Nimmt Abmessungen als
width,height
. Der boolesche Wert aus dem is-it-on-the-border-Test wird einfach gedruckt:-1
für wahr und0
für falsch. Ein Probelauf sieht folgendermaßen aus:Bonus: Grafische Version, 88 Bytes
Ich glaube, das zählt als "keine Linie". Wenn der
MOD
Ausdruck falsch ist (0), wirdPSET
ein schwarzes Pixel gezeichnet. Wenn es wahr ist (-1), zeichnet esPSET
anscheinend ein weißes Pixel. Hier ist17,31
in 2x Größe gezeigt:quelle
TSQL,
10710597 Bytesquelle
Einhorn ,
2623 BytesDenn wer mag keine Einhörner?!
Erläuterung (Ausgabe "Listenprogramm"):
Ausgabe für
tilesX
= 3,tilesY
= 5:Hinweis: Diese Version funktioniert nur für
tilesX
bis zu 6 undtilesY
bis zu 5. In der Frage wird jedoch nicht erwähnt, welchen Bereich wir unterstützen müssen. gehe ich davon aus, dass dies in Ordnung ist. Andernfalls führt eine kleine Erweiterung des Programms zu dieser Alternative, die einen etwas größeren Bereich unterstützt:Einhorn,
3027 BytesDurch Hinzufügen
x0y9
, das die Box bei (0,9) startet, arbeitet das Programm fürtilesX
bis zu 9 undtilesY
bis zu 9 (da die Eingabe nur bis zu 9 geht).quelle
J, 16 Bytes
Verwenden Sie die Form
$
, um ein Rechteck mit allen Einsen in der Größe der Eingaben zu erstellen, und verwenden Sie dann die komplementäre Form von Ändern}
, um das Innere in Nullen umzuwandeln.Probieren Sie es online aus!
quelle
Perl 5 , 76 + 1 (
-a
) = 77 BytesProbieren Sie es online aus!
quelle
Perl 5, 45 + 1 (
-p
) = 46 BytesDie folgenden 45 Bytes verarbeiten tileY = 1 nicht
Probieren Sie es online aus
quelle