Zadanie
Twoim zadaniem jest konwersja tekstu na średniowieczną ortografię.
Detale
j
jest konwertowany nai
iJ
naI
.u
aU
na początku słowa są konwertowane odpowiednio nav
iV
.v
iV
w dowolnym miejscu oprócz początku słów są konwertowane odpowiednio nau
iU
.s
jest konwertowany naſ
(U + 017F), chyba że na końcu słowa lub poprzedzony innyms
.
Okular
- Słowo jest zdefiniowane jako ciąg liter w
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
. - Wszystkie słowa będą miały co najmniej dwie litery.
- Dane wejściowe będą się składały wyłącznie z drukowalnych znaków ASCII (U + 0020 - U + 007E).
- Nie będzie więcej niż dwa kolejne wystąpienia
s
. Oznacza to,sss
że nie będzie podciągiem danych wejściowych.
Przypadki testowe
Poszczególne słowa:
Input Output
------------------------
Joy Ioy
joy ioy
Universe Vniuerſe
universe vniuerſe
Success Succeſs
successfull ſucceſsfull
Supervise Superuiſe
supervise ſuperuiſe
Super-vise Super-viſe
I've I've
majors maiors
UNIVERSE VNIUERSE
0universe 0vniuerſe
0verify 0verify
I0ve I0ve
_UU_ _VU_
_VV_ _VU_
ss_ ſs_
Cały akapit:
Input: Christian Reader, I have for thy use collected this small Concordance, with no small labour. For being to comprise much in little roome, I was to make choyse of the most principall and usefull places, and to rank them under such words as I thought most essentiall and materiall in the sentence, because the scant roome allotted unto me, would not permit that I should expresse them under every word in the verse, as it is the manner in large Concordances.
Output: Chriſtian Reader, I haue for thy vſe collected this ſmall Concordance, with no ſmall labour. For being to compriſe much in little roome, I was to make choyſe of the moſt principall and vſefull places, and to rank them vnder ſuch words as I thought moſt eſsentiall and materiall in the ſentence, becauſe the ſcant roome allotted vnto me, would not permit that I ſhould expreſse them vnder euery word in the verſe, as it is the manner in large Concordances.
SHA-256 hash wyjścia ostatniego testcase jest:
5641899e7d55e6d1fc6e9aa4804f2710e883146bac0e757308afc58521621644
Zrzeczenie się
Medievall ortografia nie jest aż tak konsekwentna. Proszę nie grać, jeśli lubisz stare książki z inną ortografią.
ſ
jako 1 bajt?Super-vise
się staćSuper-viſe
?Odpowiedzi:
SED,
144 140111 bajtówzapisano 29 bajtów dzięki NoOneIsHere
źródło
-e
. Użyj;
s pomiędzy instrukcjami.Python 3 (
128126 bajtów)chr(ord(c.group())^3)
wydaje się przesadny w stosunku do ciągów jednoznakowych, ale może prawdziwy Pythonista może zasugerować golfa. Jednak jest to bardzo wygodne, że^3
wystarczy wymienići <-> j
iu <-> v
.Uwaga: Jedyną rzeczą, która wymaga Python 3, jest znak Unicode: Python 2 narzeka
Non-ASCII character '\xc5' <snip> but no encoding declared
.źródło
\b
ponieważ\b
używa definicji słowa, która zawiera cyfry i znaki podkreślenia.(?i)
.Siatkówka ,
555450 bajtówWypróbuj online! (Pierwszy wiersz włącza pakiet testowy oddzielny od kanału).
źródło
Python 3.5,
124116111118125144142 bajtów:Wydaje się, że to idealna praca dla wyrażeń regularnych !
źródło
J|j
zamiast[Jj]
JavaScript (ES6), 154
Użycie parsowania do identyfikacji znaków alfabetycznych. Uwaga: od niechcenia, ale na szczęście
parseInt('undefined',36)|0
wynosi <0Mniej golfa
Test
źródło
JavaScript (ES6), 111 bajtów
Objaśnienie: Ponieważ regexp JavaScript ma lookbehind, ja zamiast zerwać łańcuch w słowa, które następnie pozwala mi korzystać
^
i\B
jak negatywne i pozytywne literowych lookbehinds.ss
rozwiązuje się to poprzez osobne dopasowywanie, z nieco niezręcznym wyrażeniem zastępującym, które zajmuje mniej bajtów niż albo zastępowanie tylko pierwszego znaku,c
albo dodawanie dodatkowegos
do obu ciągów i stosowanie dopasowującego podłańcucha.źródło
c=>"iIvVuUſ"["jJuUvVs".search(c)]||"ſs"
jest miło. 👍🏻CJam (
8988 bajtów)Demo online
Nigdy nie rozumiałem, dlaczego CJam nie ma wyrażeń regularnych, ale ponieważ nie ma rozwiązania, które ich nie używa.
źródło
Rubinowy, 85 + 1 = 86 bajtów
Uruchom z
ruby -p
(+1 bajt dlap
flagi). Pobiera dane wejściowe na standardowe wejście.Przeprowadź testy na ideone (owiniętym w tam lambda, ponieważ nie możesz dać flag ideone): http://ideone.com/AaZ8ya
źródło