Na podstawie listy liczb i odpowiadających im liter wprowadź ciąg znaków, zamień znaki tego ciągu na równoważną liczbę / literę i wyślij wynik.
Lista
- 1 = a
- 2 = b
- 3 = c
- 4 = d
- 5 = e
- 6 = f
- 7 = g
- 8 = godz
- 9 = i
- 0 = j
Wejście
thisisastring1124
Wynik
t89s9s1str9n7aabd
Zasady
- Liczby są równoważne tylko małym literom.
- Każda postać spoza listy pozostanie bez zmian.
- Łańcuch wejściowy nie może zawierać spacji.
- Dozwolony jest pełny program lub funkcja.
- Ponieważ jest to gra w golfa, wygrywa najmniej bajtów.
Odpowiedzi:
bash, 18 bajtów
Wypróbuj online!
źródło
Python 3 ,
7668 bajtówWypróbuj online!
źródło
Perl 5 , 17 bajtów
Wypróbuj online!
źródło
05AB1E ,
139 bajtówWypróbuj online!
Wyjaśnienie
źródło
Perl 6 ,
4523 bajtówWypróbuj online!
Po prostu regex transliteracji.
źródło
TR/1..90a..j/a..j1..90/
tio.runRetina 0.8.2 , 12 bajtów
Wypróbuj online! Wyjaśnienie:
Wykonaj transliterację.
Lista źródłowa to litery
a-j
, a0
następnie cyfry9-1
.Lista docelowa to odwrócona lista źródłowa, tzn. Cyfry
1-9
, a0
następnie literyj-a
.źródło
J , 38 bajtów
Wypróbuj online!
źródło
Python 2 ,
8278 bajtówWypróbuj online!
-4 dzięki dzięki @ovs
źródło
JavaScript (ES6), 66 bajtów
Wypróbuj online!
źródło
R , 40 bajtów
Wypróbuj online!
Zaskakujące jest, że R jest przyzwoity w tego rodzaju wyzwaniach łańcuchowych , ponieważ ma
tr
podobną funkcję jak w odpowiedzi Bash . Nie mam pojęcia, dlaczego istnieje, ale jestem za to wdzięczny!źródło
MS-SQL, 71 bajtów
Nowa funkcja SQL 2017
TRANSLATE
wykonuje zamianę pojedynczych znaków, dlatego idealnie nadaje się do tego celu. Zobacz moją podobną odpowiedź w poprzednim wyzwaniu .Dane wejściowe pochodzą z wcześniej istniejącej tabeli t z kolumną varchar v , zgodnie z naszymi regułami IO . Aby zastąpić tylko małe litery, tabelę należy utworzyć za pomocą sortowania z rozróżnianiem wielkości liter :
źródło
Galaretka , 16 bajtów
Wypróbuj online!
źródło
Pyth , 13 bajtów
Wypróbuj tutaj!
Wyjaśnienie
źródło
Haskell ,
8066 bajtówWypróbuj online!
źródło
REXX, 57 bajtów
źródło
C (gcc) ,
8172 bajtówDzięki Giacomo Garabello za sugestie.
Wypróbuj online!
źródło
putchar(...)
->*s=...
a pozostałe 4 zastępując*s-48U<11
z*s<59
Wypróbuj online!*s<59
psuje się, jeśli takie znaki$
są na wejściu, dlatego zrobiłem*s-48U
([0..47] staje się [-48 ..- 1], co staje się dużą wartością bez znaku). Ponieważ pytanie nie określało, czy nie -alnum były ważne, poszedłem z bardziej konserwatywną interpretacją.PowerShell, 94 bajty
Skrypt testowy:
Wyjaśnienie
$args
- ciągi argumentów$args|% t*y
- rozwija się do|ForEach-Object -Method ToCharArray
ekwiwalentu"$args".ToCharArray()
($s='1a2b3c4d5e6f7g8h9i0j').IndexOf($_)
- znajdź znak w ciągu, zwraca pozycję lub -1, jeśli nie zostanie znaleziony. Niech $ s przechowuje ciąg zawierający sparowany znak na pozycjach sąsiadów, które różnią się ostatnim bitem: 0 + 1, 2 + 3, 4 + 5 ....if(1+($p=...))
- jeśli pozycja została znaleziona$p-bxor1
- bit pozycji xor 1źródło
-bxor1
.R , 107 bajtów
Wypróbuj online!
Pierwsza próba, zdecydowanie możliwa do ulepszenia ...
źródło
chartr
myślę, że jest tu twój przyjaciel.Rdza , 96 bajtów
Wypróbuj online!
Nie jest bezpieczny dla Unicode, gdyby był, byłby jeszcze dłuższy.
źródło
K4 , 38 bajtów
Rozwiązanie:
Wyjaśnienie:
Wyszukaj każdy znak na liście,
"abcdefghij1234567890"
a następnie indeksuj na liście, na"1234567890abcdefghijX"
którejX
znajduje się oryginalny znak.Musisz znaleźć krótszy sposób na zbudowanie ciągów ...
Premia:
Inne rozwiązanie dla 38 bajtów :
źródło
Yabasic , 135 bajtów
Pobiera dane wejściowe z konsoli i dane wyjściowe do konsoli.
Wypróbuj online!
źródło
Japt ,
4442 bajtyWypróbuj online!
źródło
sed, 44 bajty
Trochę nudno, przyznaję.
Testowanie:
źródło