Tarea
Su tarea es convertir un texto en ortografía medieval.
Detalles
j
se convierte ai
yJ
paraI
.u
yU
al comienzo de las palabras se convierten env
yV
respectivamente.v
yV
en cualquier lugar excepto el comienzo de las palabras se convierten enu
yU
respectivamente.s
se convierte aſ
(U + 017F) a menos que al final de la palabra o precedido por otros
.
Especificaciones
- Una palabra se define como una secuencia de letras en
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
. - Todas las palabras tendrán al menos dos letras.
- La entrada solo consistirá en caracteres ASCII imprimibles (U + 0020 - U + 007E).
- No habrá ocurrencias de más de dos consecutivas
s
. Es decir,sss
no será una subcadena de la entrada.
Casos de prueba
Palabras individuales:
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_
Párrafo entero:
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.
El hash SHA-256 de la salida del último caso de prueba es:
5641899e7d55e6d1fc6e9aa4804f2710e883146bac0e757308afc58521621644
Descargo de responsabilidad
La ortografía de Medievall no es tan constante. Por favor, no complayne si usted ve libros antiguos con una ortografía diferente.
ſ
como 1 byte?Super-vise
convertirseSuper-viſe
?Respuestas:
SED,
144 140111 Bytesahorró 29 bytes gracias a NoOneIsHere
fuente
-e
. Utilice;
s entre declaraciones.Python 3 (
128126 bytes)chr(ord(c.group())^3)
se siente excesivo para xor una cadena de un solo carácter, pero tal vez un Pythonista real pueda sugerir un golf. Sin embargo, es muy conveniente que sea^3
suficiente para intercambiari <-> j
yu <-> v
.Nota: lo único que requiere Python 3 es el carácter Unicode: Python 2 se queja
Non-ASCII character '\xc5' <snip> but no encoding declared
.fuente
\b
ya que\b
usa la definición de una palabra que incluye dígitos y guiones bajos.(?i)
.Retina ,
555450 bytesPruébalo en línea! (La primera línea habilita un conjunto de pruebas separadas por salto de línea).
fuente
Python 3.5,
124116111118125144142 bytes:Bueno, ¡este parece ser el trabajo perfecto para expresiones regulares !
fuente
J|j
lugar de[Jj]
JavaScript (ES6), 154
Usando parseInt para identificar caracteres alfabéticos. Nota: casualmente pero por suerte
parseInt('undefined',36)|0
es <0Menos golf
Prueba
fuente
JavaScript (ES6), 111 bytes
Explicación: Debido a que JavaScript regexp no tiene retrospectiva, en lugar de eso divido la cadena en palabras, lo que me permite usar
^
y\B
como retrospectivas de letras negativas y positivas.ss
se trata haciendo coincidir por separado, con la expresión de reemplazo ligeramente incómoda que requiere menos bytes que reemplazar solo el primer carácterc
o agregar un extras
a ambas cadenas y usar la subcadena coincidente.fuente
c=>"iIvVuUſ"["jJuUvVs".search(c)]||"ſs"
es bueno. 👍🏻CJam (
8988 bytes)Demostración en línea
Nunca entendí por qué CJam no tiene expresiones regulares, pero como no las tiene, aquí hay una solución que no las usa.
fuente
Ruby, 85 + 1 = 86 bytes
Ejecutar con
ruby -p
(+1 byte parap
bandera). Toma entrada en stdin.Ejecute las pruebas en ideone (envuelto en una lambda allí porque no puede darle banderas a ideone): http://ideone.com/AaZ8ya
fuente