Język geobitsian to nowa perwersja języka angielskiego, w której słowo jest podzielone na segmenty, z których każdy musi zaczynać się od innej litery. Następnie za każdym razem, gdy jedna z tych liter początkowych pojawia się w innym ciągu, jest ona zastępowana przez cały odpowiadający jej segment, zachowując wielkie litery.
Ten proces nazywa się Geobitsizing .
Na przykład słowo „ Geobity ” może zostać rozbite geo bits, a także nonsensowny wiersz
Algy met a Bear
A Bear met Algy
The Bear was bulgy
The bulge was Algy
byłby z nim geobitsized jako
Algeoy met a Bitsear
A Bitsear met Algeoy
The Bitsear was bitsulgeoy
The bitsulgeoe was Algeoy
ponieważ każdy gstaje się geo, każdy G(chociaż nie ma) staje się Geo, każdy bstaje się bitsi każdy Bstaje się Bits.
Zauważ, że każde podstawienie jest wykonywane względem oryginalnego łańcucha, a nie żadnego kroku pośredniego. np. gdyby geobył gbozamiast, bstworzone nie zastąpiłoby bits.
Wyzwanie
Napisz program lub funkcję, która może generować język geobitsian.
Weź jednowierszowy ciąg złożony z małych liter (az) i spacji. Będzie to słowo użyte jako argument Geobitsizing, ze spacjami oddzielającymi segmenty. Możesz założyć:
- Segmenty nie będą puste. Dlatego spacje nie będą się ze sobą sąsiadować ani znajdować na początku ani na końcu łańcucha.
- Każdy segment zaczyna się od innej litery. Zatem nie może być więcej niż 26.
Na przykład, niektóre ważne ciągi segmentowe należy wspierać to geo bits, butt ner, alex, i do o r k nob(pojedyncze segmenty nas nie mają żadnego wpływu, ale są ważne). Ale geo , butt ner, Alex, i do o r k n obsą nieważne.
Twój program lub funkcja musi również pobrać inny dowolny ciąg znaków, aby zastosować Geobitsizing i wydrukować lub zwrócić wynikowy język Geobitsian.
Możesz założyć, że ten ciąg zawiera tylko znaki nowej linii i ASCII do wydruku.
Pamiętaj, że litery należy zachować od danych wejściowych do wyjściowych.
Oto kilka przykładów wykorzystujących no pro gr am m ingjako argument Geobitsizing:
[empty string] → [empty string]
i → ing
I → Ing
Mmmm, mmm... MmmmMMM: m&m!→ Mmmm, mmm... MmmmMMM: m&m!(bez zmian)
People think bananas are great, don't you? → Proeoprole thingnok bamnoamnoams amre grreamt, dono't you?
Pet a Puppy
Google Wikipedia
↓
Proet am Prouproproy
Groogrle Wingkingproedingam
Zauważ, że wyniki powinny być identyczne bez względu na sposób ułożenia argumentu, np. ing pro m no am grPowinny dawać takie same wyniki jak powyżej.
Najkrótszy kod w bajtach wygrywa.
\\b${l}(\\S+)chociaż kosztuje to 5 bajtów.
abra cadabra, !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~To powinno obejmować wszystkie przypadki krawędzi, a istnieje wiele z nich, jeśli ktoś próbuje użyć regexes ...
["no", "pro", "gr", "am", "m", "ing"]