задача
Ваша задача - преобразовать текст в средневековую орфографию.
подробности
j
преобразуется вi
иJ
вI
.u
иU
в начале слова преобразуются вv
иV
соответственно.v
иV
в любом месте, кроме начала слова преобразуются вu
иU
соответственно.s
преобразуется вſ
(U + 017F), если только в конце слова не предшествует другоеs
.
Спекуляции
- Слово определяется как последовательность букв в
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
. - Все слова будут иметь как минимум две буквы.
- Ввод будет состоять только из печатных символов ASCII (U + 0020 - U + 007E).
- Там не будет случаев более двух подряд
s
. То естьsss
не будет подстрокой ввода.
Testcases
Отдельные слова:
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_
Весь абзац:
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 хэш выхода последнего TestCase является:
5641899e7d55e6d1fc6e9aa4804f2710e883146bac0e757308afc58521621644
отказ
Орфография Medievall не так уж и велика. Пожалуйста, не жалуйтесь, если у вас есть старые книги с другой орфографией.
ſ
1 байт?Super-vise
статьSuper-viſe
?Ответы:
САС,
144 140111 байтблагодаря NoOneIsHere сэкономлено 29 байт
источник
-e
. Используйте;
s промежуточные операторы.Python 3 (
128126 байтов)chr(ord(c.group())^3)
чувствует себя чрезмерным, чтобы xor односимвольная строка, но, возможно, настоящий Pythonista может предложить гольф. Тем не менее, это очень удобно, что^3
достаточно для обменаi <-> j
иu <-> v
.NB. Единственное, что здесь требует Python 3 - это символ Unicode: Python 2 жалуется
Non-ASCII character '\xc5' <snip> but no encoding declared
.источник
\b
так как\b
использует определение слова, которое включает цифры и подчеркивания.(?i)
,Retina ,
555450 байтПопробуйте онлайн! (Первая строка включает отдельный набор тестов перевода строки.)
источник
Python 3.5,
124116111118125144142 байта:Ну, это похоже на идеальную работу для регулярных выражений !
источник
J|j
вместо[Jj]
JavaScript (ES6), 154
Использование parseInt для идентификации буквенных символов. Примечание: случайно, но, к счастью
parseInt('undefined',36)|0
, <0Меньше гольфа
Тестовое задание
источник
JavaScript (ES6), 111 байт
Объяснение: Поскольку JavaScript регулярного выражение не имеет никакого просмотра назад, я вместо того, чтобы разбить строку на слова, которые затем позволяет мне использовать
^
и в\B
качестве отрицательного и положительных буквенного просмотра назад.ss
решается путем сопоставления по отдельности, с немного неуклюжим выражением замены, которое занимает меньше байтов, чем либо замена только первого символаc
или добавление дополнительногоs
к обеим строкам и использование соответствующей подстроки.источник
c=>"iIvVuUſ"["jJuUvVs".search(c)]||"ſs"
это мило. JCJam (
8988 байт)Онлайн демо
Я никогда не понимал, почему в CJam нет регулярных выражений, но поскольку здесь нет решения, которое их не использует.
источник
Рубин, 85 + 1 = 86 байт
Запуск с
ruby -p
(+1 байт дляp
флага). Принимает вход на стандартный ввод.Запустите тесты на ideone (там есть лямбда, потому что вы не можете задать флаги ideone): http://ideone.com/AaZ8ya
источник