Tarefa
Sua tarefa é converter um texto em ortografia medieval.
Detalhes
j
é convertido parai
eJ
paraI
.u
eU
no início das palavras são convertidos parav
eV
respectivamente.v
eV
em qualquer lugar, exceto o início das palavras, são convertidos parau
eU
respectivamente.s
é convertido emſ
(U + 017F), a menos que no final da palavra ou precedido por outros
.
Especificações
- Uma palavra é definida como uma sequência de letras em
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
. - Todas as palavras terão pelo menos duas letras.
- A entrada será composta apenas por caracteres ASCII imprimíveis (U + 0020 - U + 007E).
- Não haverá ocorrências superiores a duas consecutivas
s
. Ou seja,sss
não será uma substring da entrada.
Casos de teste
Palavras individuais:
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_
Parágrafo inteiro:
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.
O hash SHA-256 da saída do último caso de teste é:
5641899e7d55e6d1fc6e9aa4804f2710e883146bac0e757308afc58521621644
aviso Legal
A ortografia medieval não é tão confiável. Por favor, não reclame se você deve ler livros antigos com uma ortografia diferente.
ſ
como 1 byte?Super-vise
tornarSuper-viſe
?Respostas:
SED,
144 140111 Byteseconomizou 29 bytes graças a NoOneIsHere
fonte
-e
. Use;
s entre instruções.Python 3 (
128126 bytes)chr(ord(c.group())^3)
parece excessivo para xor uma seqüência de caracteres únicos, mas talvez um Pythonista real possa sugerir um golfe. No entanto, é muito conveniente o^3
suficiente para trocari <-> j
eu <-> v
.Nota: A única coisa aqui que requer Python 3 é o caractere Unicode: o Python 2 reclama
Non-ASCII character '\xc5' <snip> but no encoding declared
.fonte
\b
pois\b
usa a definição de uma palavra que inclui dígitos e sublinhados.(?i)
.Retina ,
555450 bytesExperimente online! (A primeira linha permite um conjunto de testes separado pelo avanço de linha.)
fonte
Python 3.5,
124116111118125144142 bytes:Bem, este parece ser o trabalho perfeito para expressões regulares !
fonte
J|j
em vez de[Jj]
JavaScript (ES6), 154
Usando parseInt para identificar caracteres alfabéticos. Nota: ocasionalmente, mas felizmente
parseInt('undefined',36)|0
é <0Menos golfe
Teste
fonte
JavaScript (ES6), 111 bytes
Explicação: Como a regexp do JavaScript não tem um retaguarda, em vez disso, divido a sequência em palavras, o que me permite usar
^
e\B
como retas negativas e positivas.ss
é tratado combinando separadamente, com a expressão de substituição um pouco estranha que leva menos bytes do que substituir apenas o primeiro caracterec
ou adicionar um extras
a ambas as cadeias e usar a substring correspondente.fonte
c=>"iIvVuUſ"["jJuUvVs".search(c)]||"ſs"
é legal. 👍🏻CJam (
8988 bytes)Demonstração online
Eu nunca entendi por que o CJam não possui regexes, mas como não existe, aqui está uma solução que não os utiliza.
fonte
Ruby, 85 + 1 = 86 bytes
Execute com
ruby -p
(+1 byte parap
sinalizador). Recebe entrada em stdin.Execute os testes no ideone (envolto em um lambda lá porque você não pode dar bandeiras ao ideone): http://ideone.com/AaZ8ya
fonte