Herausforderung Beim
Erstellen einer Funktion werden zwei zweidimensionale Anordnungen von Zeichen (oder Zeichenfolgen, wenn die Programmiersprache keine Zeichen als Datentyp enthält) als Eingaben verwendet: a und b. Wenn Ihre Sprache diese Eingaben nicht unterstützt, können Sie jede andere Standard-Ein-Byte-Variable verwenden.
Ihre Aufgabe ist es festzustellen, ob b a enthält. Wenn dies der Fall ist, geben Sie true zurück. Andernfalls geben Sie false zurück.
Beispieltestfälle
a:
123
456
789
b:
123
456
789
sollte true zurückgeben.
a:
code
golf
b:
thisis
code!!
golf!!
ohyeah
sollte true zurückgeben.
a:
abcd
efgh
ijkl
b:
abcdef
ghijkl
mnopqr
sollte false zurückgeben.
a:
abc
def
b:
1abc2
3def4
5ghi6
sollte true zurückgeben
a:
ab
cd
b:
#ab##
##cd#
sollte false zurückgeben
Kleinste Bytes gewinnen.
a
sich derb
linke Rand nicht befindet, und einen falschen Testfall, bei dem jede Zeilea
in aufeinanderfolgenden Zeilen angezeigt wirdb
, deren linke Kanten jedoch versetzt sind?Antworten:
Brachylog (v2), 4 Bytes
Probieren Sie es online aus!
Am einfachsten als vollständiges Programm ausführen, wie bei einem Entscheidungsproblem üblich , mit einem als Befehlszeilenargument angegebenen Argument, b bei Standardeingabe. Die Frage fragt nach einer Funktion, und das Programm arbeitet auch als Funktion, wobei b links, a rechts und die Ausgabe über eine Ausnahme ausgegeben werden , wenn die Entscheidung falsch ist .
Erläuterung
Das "Assert Rechteck" ist offensichtlich sinnlos, da die Frage dies bereits garantiert. Der Rest des Programms führt die Rasterfindung für uns durch, indem er einen Teilstring der Zeilen und Spalten identifiziert, dh eine Submatrix.
Meta-Diskussion
Wir hatten schon einmal eine sehr ähnliche Frage . Ich würde erwarten, dass die meisten Antworten auf eine Frage in Antworten auf die andere geändert werden können. Ich denke, dies ist die sauberere Version davon.
quelle
Python 2 , 67 Bytes
Probieren Sie es online aus!
Übernimmt die Eingabe als Liste von Tupeln von Zeichen.
Versucht alle Teilgitter von
b
und prüft, ob siea
darunter sind. Die Teilgitter werden durch rekursives Verzweigen erzeugt, indem entweder die erste Reihe entferntb
oder um 90 Grad gedreht wird. Prüft nach genau vier Umdrehungen, ob der Zuschnittb
gleich ista
.quelle
J ,
211587 BytesProbieren Sie es online aus!
-7 Bytes dank Bolce Bussiere
ursprüngliche Antwort
J ,
2115 BytesProbieren Sie es online aus!
-6 Bytes dank FrownyFrog
Wie
<@[
boxed left arg$@[<;.3]
Alle Rechtecke im rechten Argument haben dieselbe Form wie das linke Argumente.&,
quelle
<@[e.&,$@[<;.3]
+/@:,@E.
. E. ist so ziemlich für diese Herausforderung gemacht.Holzkohle , 26 Bytes
Probieren Sie es online aus! Der Link führt zur ausführlichen Version des Codes. Stark basierend auf meiner Antwort auf Zählen der zusammenhängenden Submatrizen , besteht der einzige Unterschied darin, dass ich anstelle der Summe der Übereinstimmungen das Maximum nehme und aufgrund der impliziten Zeichenfolgenkonvertierung aufgrund der Verwendung des
⭆
Ergebnisses bereits eine Zeichenfolge ist, die a speichert Byte.quelle
05AB1E , 10 Bytes
Nimmt
b
als erste Eingabe,a
als zweite. Beide Eingaben als Zeichenmatrizen.Port of @ Mr.Xcoders 05AB1E-Antwort auf diese damit verbundene Herausforderung , also stimmen Sie ihm zu!
Probieren Sie es online aus oder überprüfen Sie alle Testfälle .
Erläuterung:
quelle
Python 2 ,
106118113 BytesProbieren Sie es online aus!
quelle
Wolfram Language (Mathematica) , 46 Bytes
Probieren Sie es online aus!
Curry-Funktion: Anruf mit
f[a][b]
.Gibt es kürzere Alternativen zu
Or@@Or@@@
oderDimensions
?quelle
JavaScript (ES6) ,
131 112105 Byte105 Bytes:
Probieren Sie es online aus!
Änderungen:
m[i]
inx
undn[z]
inl
: Völlig vergessen, dass diese Variablen bereits instanziiert wurden&&
in&
: Beide Seiten des Operators sind bereits Boolesche Werte, sodass ein bitweiser Operator funktioniert112 Bytes:
Probieren Sie es online aus!
Änderungen:
map((c,j)=>{...}).some(s=>s)
insome((c,j)=>{...})
: Redundanzm[i+z].join()
inm[i+z]+''
: Eine kürzere Möglichkeit, das Array in eine Zeichenfolge zu konvertierenindexOf(n[z].join(),j)
inindexOf(n[z],j)
: DieindexOf
Methode wird bereits in eine Zeichenfolge konvertiertn[z]
131 Bytes:
Probieren Sie es online aus!
Lesbar:
Anstatt einzelne Werte zu vergleichen, habe ich geprüft, ob die Linien aus Gitter N in den Linien von Gitter M enthalten sind und an welchen Indizes. Wenn alle Zeilen ab demselben Index enthalten sind, ist das Gitter N im Gitter M enthalten.
quelle
PowerShell ,
711028598 Bytedanke @Jo King; Testfälle hinzugefügt.
Probieren Sie es online aus!
Weniger Golf:
quelle
Javascript, 150 Bytes
Probieren Sie es online aus
quelle