To wyzwanie jest inspirowane cytatem Olivera Sacksa:
„W wieku 11 lat mógłbym powiedzieć„ Jestem sodu ”(element 11), a teraz w wieku 79 lat jestem złotem.” - Oliver Sacks
Chcę, żebyś znalazł liczby w ciągu i zastąpił je symbolami odpowiadających im elementów. (1 to H, 2 to He, 3 to Li itp.) Należy przestrzegać kilku zasad:
- Pojedyncze i podwójne cyfry są normalnie zastępowane odpowiadającymi im elementami. Zignoruj 0 na początku liczb. Jeśli liczba zawiera tylko 0, zignoruj ją. Na przykład
1 01 10 0 00
Staje sięH H Ne 0 00
- Więcej niż 2 cyfry razem dzielą się na grupy po 2 sztuki. Na końcu nieparzysta liczba cyfr powinna mieć dodatkową pojedynczą cyfrę. Np. Stałby
0153 5301 153
sięHI IH PLi
Z powodu tej reguły musisz znać tylko elementy od 1 do 99 - Liczby należy traktować tak samo, bez względu na to, jakie znaki je otaczają, a przecinki i kropki dziesiętne nie są częściami liczb.
P90X 42,800 3.14159
stanie sięPThX Mo,Hg0 Li.SiPF
Przykładowe wejścia / wyjścia (I / O):
I: 32289216
O: GeNiUS
I: J08017 5811
O: JOHN CeNa
I: M18227 0592tt10r
O: MArTiN BUttNer
I: De072816
O: DeNNiS
I: D088r1907085
O: DOOrKNOB
I: 13ex A.
O: Alex A.
Dane wejściowe będą miały format najbliższy ciągowi, który ma Twój język.
Układ okresowy w celach informacyjnych:
To jest golf golfowy , więc twój program będzie oceniany w bajtach.
Odpowiedzi:
Mathematica,
969489 bajtówMma ma kilka zestawów danych ...
źródło
JavaScript (ES6), 202 bajty
Pominięty ciąg znaków zawiera niedrukowalne znaki, więc oto zrzut (szesnastkowo odwracalny):
Technika polegała na umieszczeniu wszystkich skrótów elementów w jednym ciągu, oddzielonych niczym - po to jest drugi regex
/[A-Z][a-z]?/g
; pasuje do każdej dużej litery, opcjonalnie z małą literą. Pierwsze wyrażenie regularne/\d\d?/g
dopasowuje każdy zestaw 2 (lub 1) cyfr na wejściu, więc zastępuje każdy zestaw cyfr N elementem o indeksie N w zdekompresowanym dopasowanym ciągu.Oto oryginalny ciąg, jeśli ktoś chciałby go użyć: (
A
na końcach są wypełniacze)Pytania i sugestie mile widziane!
źródło
Uus
iUuo
?+y?...:...
ponieważ zastępujesz grupy cyfr[y]
zamiast[+y]
i zapisać 1 bajtPython 3,
278285 bajtówPrzypadki testowe:
źródło
f('P90X 42,800 3.14159')
zwraca „PThX Mo, Hgs Li.SiPF” zamiast „PThX Mo, Hg0 Li.SiPF” if('1 01 10 0 00')
zwraca „HH Ne s s” zamiast „HH Ne 0 00” . Nawiasem mówiąc, właśnie zastosowałem twoje rozszerzone podejście do krojenia w moim rozwiązaniu Python 2. Dzięki!Python 2,
312304 bajtyTen tworzy funkcję f która przyjmuje ciąg liczb jako argument i zwraca odpowiedni ciąg z zastąpionymi symbolami elementów.
Funkcja iteruje ciągi od jednej do dwóch cyfr ( „1” , „01” , „10” , „00”, ale nie „0” ) lub jednego znaku ( „a” , „0”, ale nie „1” ). W przypadku cyfr ciąg jest konwertowany na liczbę całkowitą i przeglądany w połączonym ciągu symboli elementów, w którym każdy symbol jest dopełniany do dwóch znaków. W przypadku znaków ciąg jest po prostu używany bez wyszukiwania.
Testy dla każdego przykładu w pytaniu wszystkie przebiegają pomyślnie:
źródło