Biorąc pod uwagę dwa ciągi, znajdź tabelę translacji ( szyfr podstawienia ) między nimi, jeśli tłumaczenie nie jest możliwe, wyślij false. Odpowiedź należy zminimalizować i utworzyć od lewej do prawej. Pierwszym tłumaczonym znakiem między słowami musi być pierwszy w tabeli tłumaczeń. Oprócz tego żaden list, który nie został przetłumaczony (w tym samym miejscu, w którym był pierwotnie), NIE powinien znajdować się w tabeli tłumaczeń.
Prawdopodobnie najłatwiejszy do zdefiniowania za pomocą przykładów:
Ważne przypadki
"bat", "sap" => ["bt","sp"]
Zwróć uwagę na kolejność, wynik ["tb","ps"]
nie jest prawidłowy dla tego wyzwania.
"sense", "12n12" => ["se","12"]
Zauważ, że n
nie jest przetłumaczone, ponieważ jest to relacja 1 do 1.
"rabid", "snail" => ["rabd","snal"]
Zauważ, że i
nie jest przetłumaczone, ponieważ jest to relacja 1 do 1.
"ass", "all" => ["s","l"]
A nie jest uwzględnione, pozostaje takie samo, s
może zostać odwzorowane na podstawie l
dopasowania wzorca.
"3121212", "ABLBLBL" => ["312","ABL"]
Idealnie pasuje do wzoru.
Falsy Cases
"banana", "angular" => false
(nie tej samej długości, niemożliwe).
"animal", "snails" => false
(każdego znaku można użyć RAZ tylko po każdej stronie tłumaczenia).
"can","cnn" => false
(n jest domyślnie używane w tłumaczeniu, dlatego zdefiniowanie tabeli translacji za pomocą n-> a byłoby niepoprawne)
Tak więc, [aimal,sails]
jest to nieprawidłowa odpowiedź, czyniąca to fałsz.
"a1", "22" => false
Patrz „zastrzeżenia”, jest to wymienione jako fałsz. W tym przypadku, to dlatego, a
i 1
nie mogą oba mapowania 2
. (Każda postać może być użyta RAZ tylko po każdej stronie tłumaczenia).
Ta odpowiedź wydaje się być dobrym punktem odniesienia: /codegolf//a/116807/59376
Jeśli masz pytania dotyczące funkcjonalności dwóch niepublicznych par słów, przejdź do tej implementacji.
Zasady we / wy
- Dane wejściowe mogą być w postaci tablicy 2-elementowej lub 2 osobnych danych wejściowych.
- Dane wyjściowe mogą być rozdzielane tablicą lub znakiem nowej linii / spacji, podobnie jak to pokazano.
- Fałszywe wyjście może wynosić 0, -1 lub fałsz. Błąd / puste wyjście również jest w porządku.
- Masz gwarancję, że
a
nie będą równeb
i ania
nieb
będą puste. a
ib
są sekwencjami liter tylko do wydruku ASCII.
Ostrzeżenia
- Tłumaczenia muszą odbywać się od lewej do prawej, patrz przykład 1.
- Nie wolno wyprowadzać znaków, które pozostają takie same.
- Twój program może przyjmować tylko dwa ciągi
a
ib
. - Każda postać może być użyta RAZ tylko po każdej stronie tłumaczenia. To sprawia, że tłumaczenie
snails
jestanimals
niemożliwe. - Rekurencyjne zamiany nie powinny wystąpić. Przykład zamiany rekurencyjnej:
"a1","22"->[a1,12]
gdzie a jest najpierw zastępowane przez 1, wówczas oba wynikowe 1 są zastępowane przez 2. To nie jest poprawne, zakładamy, że wszystkie tłumaczenia odbywają się niezależnie od siebie, co oznacza, że jest to fałsz. Znaczenie: „a1” z tabelą translacji [a1,12] przyjmuje wartość 12 (nie 22)