Wenn Sie eine Nachricht mit Kühlschrankmagneten schreiben, werden Sie häufig feststellen, dass Sie ein 1
durch ein ersetzen I
. In dieser Herausforderung besteht Ihr Ziel darin, herauszufinden, ob eine Nachricht mit den Buchstaben einer anderen Nachricht geschrieben werden kann. Die erlaubten Substitutionen sind:
A = 4
B = 8
C = U
E = M = W = 3
G = 6 = 9
I = 1
L = 7
N = Z
O = 0
R = 2
S = 5
Zum Beispiel kann die Nachricht CIRCA 333
kann buchstabieren werden neu geordnet ICE CREAM
, wobei die ersten beiden 3
s um 180 Grad gedreht sind zwei zu machen E
s, und die letzten 3
gedreht um 90 Grad entgegen dem Uhrzeigersinn eine machen M
. Leerzeichen können in den Nachrichten enthalten sein, sollten jedoch in Ihrer Lösung nicht berücksichtigt werden, da sie durch Platzieren der Magnete auf dem Kühlschrank erstellt werden.
Eingang
Zwei Zeichenfolgen (oder Zeichenarrays). Alle Nachrichten stimmen überein^[A-Z0-9 ]+$
Ausgabe
Wahrheit, wenn die beiden Eingabezeichenfolgen gültige Umlagerungen voneinander sind, sonst falsch.
Beispiele
["CIRCA 333", "ICE CREAM"] => true
["DCLV 00133", "I LOVE CODE"] => true
["WE ARE EMISSARIES", "33 423 3315542135"] => true
["WE WANT ICE CREAM", "MET CIRCA 334 MEN"] => true
["I HAVE ICE CREAM", "HAVE 2 ICE CREAMS"] => false
Weitere Beispiele
Dies sind alle Wörter mit mehr als 15 Buchstaben, die einem anderen Wort zugeordnet sind. Einige sind triviale Substitutionen, aber ich habe alles eingeschlossen, was ich gefunden habe.
["ANTHROPOMORPHISE","ANTHROPOMORPHISM"]
["ANTIPHILOSOPHIES","ANTIPHILOSOPHISM"]
["CIRCUMSTANTIALLY","ULTRAMASCULINITY"]
["DECENTRALIZATION","DENEUTRALIZATION"]
["DIMETHYLNITROSAMINE","THREEDIMENSIONALITY"]
["INSTITUTIONALISE","INSTITUTIONALISM"]
["INTERCRYSTALLINE","INTERCRYSTALLIZE"]
["INTERNATIONALISE","INTERNATIONALISM"]
["OVERCENTRALIZATION","OVERNEUTRALIZATION"]
["OVERCENTRALIZING","OVERNEUTRALIZING"]
["PREMILLENNIALISE","PREMILLENNIALISM"]
["TRANSCENDENTALIZE","TRANSCENDENTALIZM"]
Da dies eine Code-Golf-Herausforderung ist, gewinnt die kürzeste Lösung! Ich akzeptiere die kürzeste Lösung innerhalb von 7 Tagen nach der Veröffentlichung. Viel Spaß beim Golfen!
verbunden
BEARBEITEN : Fehler in den Ersetzungen gemacht, hatte G = 6
und 6 = 9
als separate Ersetzungen, sie zu einer zusammengeführt.
T
undL
nicht austauschbar sind, kann ich nicht hinzufügenT = 7
. Das gleiche giltN = Z = 2
, was dies implizieren würdeN = Z = R = 2
. Die Art der von Ihnen vorgeschlagenen Substitutionen würde jedoch zu einer schwierigeren Version dieser Herausforderung führen, die ich zu einem späteren Zeitpunkt veröffentlichen könnte. Ich wollte nur sehen, ob solche Herausforderungen zuerst gut aufgenommen werden.false
.Antworten:
Japt ,
38363330 BytesÜbernimmt die Eingabe als Array von 2 Zeichenfolgen.
Probieren Sie es aus oder führen Sie alle Testfälle aus
Dank ETHProductions 3 Bytes gespart
quelle
r¶
am Ende tun , um 3 Bytes zu sparen.Python 2 ,
145131130129125 ByteProbieren Sie es online!
Alt:
Python 2 , 125 Bytes
Probieren Sie es online!
quelle
Ruby ,
997271 BytesProbieren Sie es online!
Nimmt ein Array von Zeichenfolgen auf, setzt die Eingabe wie in allen Testfällen in Großbuchstaben voraus.
-1 Byte von benj2240 golfen.
quelle
!
, um ein Byte zu speichernJavaScript (ES6),
102100 ByteNimmt die Eingabe als zwei Zeichenfelder in der aktuellen Syntax an
(a)(b)
. Gibt einen Booleschen Wert zurück.Probieren Sie es online!
Wie?
Verwenden Sie die Hilfsfunktion g () für jeden Eingang s :
Die Ziffern 0 bis 8 und die Buchstaben X , Y und Z bleiben unverändert. Alles andere wird explizit übersetzt.
Code:
Wir sortieren die Zeichen (die am Anfang alle Leerzeichen enthalten), fügen sie zusammen und entfernen alle führenden Leerzeichen.
Code:
Schließlich vergleichen wir beide Ausgaben.
quelle
Retina 0,8,2 , 42 Bytes
Probieren Sie es online! Nimmt Eingaben in separaten Zeilen vor, Link enthält jedoch Testfälle und Header. Erläuterung:
Ordnen Sie alle Buchstaben einem minimalen Satz zu und löschen Sie die Leerzeichen.
Sortieren Sie jede Zeichenfolge in der Reihenfolge.
Vergleichen Sie die beiden Werte.
quelle
APL (Dyalog Unicode) , 49 Byte SBCS
-1 danke an ngn.
Anonyme implizite Präfixfunktion.
Probieren Sie es online!
⎕R
PCRE R eplace:'UMWZ '
diese fünf Zeichen⎕D,
durch die Ziffern voran,¨
getrennt (stellen jeweils in eine Zeichenfolge , anstatt ein einzelnes Zeichen sein)mit:
⊂⍬
nichts'OIREASGLBGCEEN',
von diesen Zeichen voran(
…)
Wenden darauf folgende implizite Funktion an:(
…)¨
Wenden auf jede folgende stillschweigende Funktion an:⊂
umschließe es (um es als Ganzes zu behandeln)⍋⌷¨
Verwenden Sie jeden der Indizes, die ihn sortieren würden, um den gesamten String zu indizieren (sortieren).≡/
sind sie identisch? (Lit. Match Reduktion)quelle
''
->⍬
Python 2 , 108 Bytes
Probieren Sie es online!
Es gibt 23 Äquivalenzklassen von Zeichen. Mit der 36-stelligen Zeichenfolge ordnen
'85930A4614012B3C4D5EF6378GH9AI2J3KL7'
wir jedes Zeichen seiner Äquivalenzklasse zu (wobei Leerzeichen ignoriert werden) und sortieren dann das resultierende Array. Zwei Zeichenfolgen sind äquivalent, wenn die resultierenden Listen gleich sind.quelle
Java 10,
262260258216208174 Bytes-2 Bytes dank @Arnauld .
-76 Bytes dank @ OlivierGrégoire .
Probieren Sie es online aus.
Erläuterung:
quelle
"A4B8CUEMEWE3G6G9I1L7NZO0R2S5".split("(?<=\\G.{2})")
scheint zu funktionieren ... obwohl ich nicht mal genau weiß wie. : p{2}
kann.
für weitere -2 Bytes sein. Ich bin mir auch nicht 100% sicher, wie es funktioniert. Ich weiß,(?<= ... )
wird verwendet, um zu teilen, aber nachgestellte Begrenzer pro Element zu behalten . Aber ich bin ein bisschen verwirrt, warum(?=\\G..)
(führendes Trennzeichen beibehalten) diesbezüglich nicht funktioniert. Und weiß auch nicht so recht, wie sich das\\G..
vs hier..
im Split verhält. Mal sehen, ob ich es irgendwo rauskriegen kann, weil ich nicht neugierig bin. ; p Wie auch immer, danke für die gespeicherten Bytes. Muss\\G
beim Teilen von Blöcken mit gerader Größe beachtet werden. :)(?<=\\G..)
einer Teilung benötigen , habe ich eine StackoverFlow-Frage erstellt, die etwas Licht ins Dunkel bringt . Grundsätzlich ist es undefiniertes Verhalten, das in fast jeder Sprache anders funktioniert. Obwohl\G
es sich bei Java um eine Null-Länge handelt, mit dem positiven Blick hinter die Aufteilung, widerspricht es in gewisser Weise beiden Regeln, die das hier gezeigte Verhalten verursachen. Es ist mir persönlich immer noch ein bisschen vage, aber zumindest hat es in dieser Antwort 4 Bytes gespart. ;)R , 123 Bytes
Probieren Sie es online!
utf8ToInt
wandelt einen String in einen Vektor von Unicode-Codepunkten um.aber das hilft hier nicht weiter, weil es sich tatsächlich um Ganzzahlen und nicht um logische Werte handelt.!sd(a-b)
ist ein Byte kürzer als,all(a==b)
quelle
!any
anstelle von,!sd
wie die Elemente alle gleich sein könnten, aber 1. Versuchen Sie:f(list("BCDEF","ABCDE"))
J , 56 Bytes
Probieren Sie es online!
Erläuterung:
&
für beide linken und rechten Argumente-.&' '
entfernt Leerzeichen aus der Eingabe,rplc
ersetzt'0123456789UMWZ';"0'OIREASGLBGCEEN'"1
die Zeichen in der Eingabe durch Ersetzen der Zeichen in der linken Spalte durch die Zeichen in der rechten: (hier aus Platzgründen transponiert)/:~@
und sortiert die resultierenden Zeichenfolgen-:
Sind die sortierten Zeichenfolgen gleich?Meine anfängliche Lösung:
J ,
7773 BytesProbieren Sie es online!
Erläuterung:
(' '-.~])
Entfernt Leerzeichen aus beiden Argumenten unde."1
testet jedes Zeichen auf Mitgliedschaft in der folgenden Tabelle:[:(,a.,.@-.,)'EMW3','G69',9 2$'A4B8CUI1L7NZO0R2S5'"1
die Referenz:1#.
addiert die Vergleichstabellen für jedes Argument-:&
passen sie zusammenquelle
Perl 6 , 55 Bytes
Probieren Sie es online!
Arbeitet mit einer beliebigen Anzahl von Zeichenketten.
quelle
Python 2 , 111 Bytes
Probieren Sie es online!
116 Bytes
Probieren Sie es online!
quelle
Python 3 , 105 Bytes
Probieren Sie es online!
quelle
Jelly ,
3934 BytesProbieren Sie es online!
quelle
05AB1E ,
3833 BytesProbieren Sie es online aus oder überprüfen Sie alle Testfälle .
Erläuterung:
Sehen Sie sich meinen Tipp 05AB1E an (Abschnitte So komprimieren Sie Zeichenfolgen, die nicht Teil des Wörterbuchs sind, und So komprimieren Sie große Ganzzahlen ), um zu verstehen, warum dies so
.•2Θ`ĆĀÑεÉ•
ist"abemwgilorsuz"
und•B/óÕ¦•
ist48333917025
.quelle