Nehmen Sie eine Matrix positiver Ganzzahlen als Eingabe und lassen Sie sie explodieren!
Die Art und Weise, wie Sie eine Matrix auflösen, besteht darin, einfach Nullen um jedes Element, einschließlich der äußeren Ränder, hinzuzufügen.
Eingabe- / Ausgabeformate sind wie immer optional!
Testfälle:
1
-----
0 0 0
0 1 0
0 0 0
--------------
1 4
5 2
-----
0 0 0 0 0
0 1 0 4 0
0 0 0 0 0
0 5 0 2 0
0 0 0 0 0
--------------
1 4 7
-----
0 0 0 0 0 0 0
0 1 0 4 0 7 0
0 0 0 0 0 0 0
--------------
6
4
2
-----
0 0 0
0 6 0
0 0 0
0 4 0
0 0 0
0 2 0
0 0 0
Jelly ,
1211 Bytes-1 Byte dank Erik the Outgolfer (keine Notwendigkeit, getauschte Argumente für einen Join zu verwenden)
Probieren Sie es online! Oder sehen Sie sich eine Testsuite an .
Ein monadischer Link, der Listen von Listen akzeptiert und zurückgibt.
Wie?
quelle
j00,0jµ€Z$⁺
Haskell , 38 Bytes
Probieren Sie es online!
quelle
MATL , 12 Bytes
Eingabe ist eine Matrix mit
;
als Zeilentrennzeichen.Probieren Sie es online!
Erläuterung
quelle
Japt , 18 Bytes
Testen Sie es online! (Verwendet das
-Q
Flag, um die Ausgabe besser zu verstehen.)Ähnlich wie die Gelee-Antwort, aber viel länger ...
Erläuterung
Der äußere Teil des Codes ist nur eine Problemumgehung, um Jellys zu simulieren
⁺
:Der Code selbst ist:
Dieser Vorgang wird zweimal wiederholt und liefert die gewünschte Ausgabe. Das Ergebnis wird implizit gedruckt.
quelle
Schale , 12 Bytes
Nimmt ein ganzzahliges 2D-Array auf und gibt es zurück. Probieren Sie es online!
Erläuterung
Dieselbe Idee wie bei vielen anderen Antworten: Fügen Sie jeder Zeile Nullen hinzu und transponieren Sie zweimal. Die Zeilenoperation wird mit einer Falte implementiert.
quelle
Mathematica, 39 Bytes
Probieren Sie es am Wolfram Sandkasten! Nennen Sie es wie "
r=Riffle[#,0,{1,-1,2}]&/@Thread@#&;r@*r@{{1,2},{3,4}}
".Wie bei vielen anderen Antworten funktioniert dies, indem Nullen in jeder Zeile transponiert und gewechselt werden und dann das Gleiche erneut ausgeführt wird. Inspiriert von Jonathan Allans Jelly-Antwort , aber nur, weil ich diese Antwort zufällig zuerst gesehen habe.
quelle
Dyalog APL, 24 Bytes
4 Bytes gespart dank @ZacharyT
5 Bytes gespart dank @KritixiLithos
Probieren Sie es online!
quelle
1,1,⍴⍵
, oder?{{⍵↑⍨-1 1+⍴⍵}⊃⍪/,/2 2∘↑¨⍵}
um 261 1+
!1+
funktionieren?Oktave, 41 Bytes
Probieren Sie es online!
quelle
Python 3 ,
104 101 97 9386 Bytesw
entfernt und ein unerwünschter Speicherplatz[a,b]
als ob er geradea,b
an eine Liste angehängt hätteProbieren Sie es online!
quelle
w
2 Bytes entfernen und speichern: repl.it/JBPEm+=[r,w]
[j,0]
zuj,0
und[r,m[0]
zu wechselnr,m[0]
?for
Loop-Einzug in eine einzelne Registerkarte ändern .Python 3, 118 Bytes
Zum ersten Mal Golf spielen! Nicht das Beste, aber ich bin sehr stolz, wenn ich es selbst sagen kann!
quelle
+=
und=
von Leerzeichen umgeben, die entfernt werden können. Zusätzlich zu tun+=
zweimal in Folge in eine einzige Anweisung vereinfacht werden könnte, zum Beispiele+=str(d)+'0'
for
Schleife auf eine einzelne Linie reduzieren könnenfor d in c:e+=str(d)+'0'
, aber Sie möchten vielleicht mit einer Join-Map (str, d)) + "0", in which case it becomes pointless to define
e " gehen.z
undr
in dieselbe Zeile setzen (mit einem;
dazwischen) und dabei ein Byte Einrückung sparen.R, 65 Bytes
Vielen Dank an Jarko Dubbeldam und Giuseppe für sehr wertvolle Kommentare!
Code
Die Eingabe für die Funktion muss eine Matrix oder ein zweidimensionales Array sein.
Prüfung
Ausgabe
quelle
a=dim(x)*2+1
stattnrow
undncol
wäre besser. Sie könnten dann tuny=matrix(0);dim(y)=a
und2*1:a[1],2*1:a[2]
.y=array(0,a)
eigentlich noch kürzer.2*1:a[1]
weil:
hat eine höhere Priorität als*
Mathematica, 55 Bytes
quelle
o={0,0}
kann reduziert werden aufo=0{,}
PHP , 98 Bytes
Eingabe als 2D-Array, Ausgabe als String
Probieren Sie es online!
PHP , 116 Bytes
Ein- und Ausgabe als 2D-Array
Probieren Sie es online!
quelle
Clojure, 91 Bytes
Iteriert in Halbschritten über Bereiche.
quelle
Perl 6 , 33 Bytes
Probieren Sie es online!
quelle
Python 2 , 64 Bytes
Probieren Sie es online!
Die Funktion setzt
g
die Eingabe zwischen Nullen. Die Hauptfunktion transponiert die Eingabe beim Anwendeng
und tut dies dann erneut. Vielleicht gibt es eine Möglichkeit, die Wiederholung in der Hauptfunktion zu vermeiden.quelle
JavaScript (ES6),
73 bis72 ByteFormatiert und kommentiert
Das horizontale und vertikale Einfügen von Nullen ist sehr ähnlich. Die Idee hier ist, die gleiche Funktion g () für beide Schritte zu verwenden.
Testfälle
Code-Snippet anzeigen
quelle
Kohle , 49 Bytes
Probieren Sie es online!
Die Eingabe ist eine einzelne Zeichenfolge, die die Zeilen durch ein Semikolon trennt.
quelle
≔E⪪θ;⪫00⪫ι0θFθ⟦⭆ι0ι⟧⭆⊟θ0
aber selbst unter Vermeidung von StringMap denke ich immer noch, dass dies in 27 Bytes getan werden kann.C ++ 17 + Module, 192 Bytes
Eingabe als Zeichenfolgenreihen von cin , Ausgabe bis cout
quelle
C # , 146 Bytes
Daten
Int32[,]
m
Die zu zerlegende MatrixInt32[,]
Die aufgelöste MatrixGolf gespielt
Ungolfed
Ungolfed lesbar
Vollständiger Code
Releases
146 bytes
- Anfangslösung.Anmerkungen
quelle
(int[,] m)=>
,m=>
es reicht nur aus, wenn Siem
angeben, dass es sich bei Ihrer Antwort um ein 2D-Int-Array handelt. Außerdem können Sie ändern,x,
zu,x=0,
und loszuwerden, die bekommenx=0
in der for-Schleife - Initialisierung für -1 Byte. Und Sie können entfernen ,y++
indem von der inneren Schleife=m[x,y];
auf=m[x,y++];
ein zusätzlichen -1 Byte. Aber +1 von mir, und wenn ich einen Port Ihrer Antwort erstelle, ist er auch kürzer als meine aktuelle Java-Antwort. :)Dyalog APL, 24 Bytes
Verbesserungen sind willkommen und erwünscht!
quelle
Python 2 , 92 Bytes
Probieren Sie es online!
quelle
Python 3 + Numpy , 87 Bytes
Probieren Sie es online!
quelle
JavaScript (ES6),
80 bis78 Bytequelle
Pyth, 13 Bytes
Demonstration
Weitere 13:
quelle
APL (Dyalog) , 22 Bytes
Fordert zur Eingabe einer Matrix auf und gibt die beigefügte Matrix zurück.
Probieren Sie es online!
a←⎕
Aufforderung für Matrix und weisen eine⍴
die Maße von a (Zeilen, Spalten)2×
multiplizieren mit zwei1+
füge eins hinzu⍴∘0 1¨
benutze jeden um r die Zahlen Null und Eins (zyklisch) umzugestalten{
…}/
Reduzieren durch Einfügen der folgenden anonymen Funktion zwischen die beiden Zahlen:⍵\a
Erweitern Sie * die Spalten von a entsprechend dem richtigen Argument⍺⍀a
erweitern Sie * die Zeilen davon gemäß dem linken Argument* 0 fügt eine Spalte / Zeile mit Nullen ein, 1 fügt eine ursprüngliche Datenspalte / -zeile ein
quelle
Java 8,
183166162129 BytesEin- und Ausgabe als
int[][]
.-33 Bytes durch Erstellen eines Ports mit der C # - Antwort von @auhmaan .
Erläuterung:
Probieren Sie es hier aus.
quelle
J , 24 Bytes
Probieren Sie es online!
quelle
05AB1E , 22 Bytes
Probieren Sie es online!
Verwendet tatsächlich das gleiche Stück Code 2x, so dass ich es als Zeichenfolge speichern und Eval für -10 Bytes verwenden kann.
quelle