Aufgabe
Ihre Aufgabe ist es, einen Text in mittelalterliche Rechtschreibung umzuwandeln.
Einzelheiten
j
wird ini
undJ
nach konvertiertI
.u
undU
am Anfang von Worten zu umgewandeltv
undV
jeweils.v
undV
an jedem Ort , außer Anfang Worte umgewandeltu
undU
jeweils.s
wird inſ
(U + 017F) konvertiert, es sei denn am Ende des Wortes oder vor einem anderens
.
Technische Daten
- Ein Wort ist definiert als eine Folge von Buchstaben in
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
. - Alle Wörter haben mindestens zwei Buchstaben.
- Die Eingabe besteht nur aus druckbaren ASCII-Zeichen (U + 0020 - U + 007E).
- Es werden nicht mehr als zwei aufeinanderfolgende Vorkommen auftreten
s
. Das heißt, essss
wird keine Teilzeichenfolge der Eingabe sein.
Testfälle
Individuelle Wörter:
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_
Ganzer Absatz:
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.
Der SHA-256- Hash der Ausgabe des letzten Testfalls lautet:
5641899e7d55e6d1fc6e9aa4804f2710e883146bac0e757308afc58521621644
Haftungsausschluss
Die mittelalterliche Orthographie ist nicht so konsequent. Bitte beschweren Sie sich nicht, wenn Sie alte Bücher mit einer anderen Rechtschreibung lesen.
ſ
als 1 Byte zählen?Super-vise
werdenSuper-viſe
?Antworten:
SED,
144 140111 Bytes29 Bytes dank NoOneIsHere gespart
quelle
-e
. Verwenden Sie;
s dazwischen Anweisungen.Python 3 (
128126 Bytes)chr(ord(c.group())^3)
fühlt sich übertrieben an, um eine einzelne Zeichenkette zu xor, aber vielleicht kann ein echter Pythonista einen Golf vorschlagen. Es ist jedoch sehr praktisch, dass^3
ausreicht, umi <-> j
und auszutauschenu <-> v
.NB Das einzige, was Python 3 erfordert, ist das Unicode-Zeichen: Python 2 beschwert sich
Non-ASCII character '\xc5' <snip> but no encoding declared
.quelle
\b
da\b
die Definition eines Wortes verwendet wird, das Ziffern und Unterstriche enthält.(?i)
.Netzhaut ,
555450 BytesProbieren Sie es online aus! (Die erste Zeile aktiviert eine vom Zeilenvorschub getrennte Testsuite.)
quelle
Python 3.5,
124116111118125144142 Bytes:Nun, dies scheint der perfekte Job für reguläre Ausdrücke zu sein !
quelle
J|j
anstelle von[Jj]
JavaScript (ES6), 154
Verwenden von parseInt zum Identifizieren von alphabetischen Zeichen. Hinweis: beiläufig aber zum Glück
parseInt('undefined',36)|0
ist <0Weniger Golf gespielt
Prüfung
quelle
JavaScript (ES6), 111 Byte
Erläuterung: Da JavaScript regexp keine Lookbehind hat, ich stattdessen die Zeichenfolge in Worte brechen, die dann mir erlaubt , zu verwenden
^
und\B
als negative und positive Brief Lookbehinds.ss
wird durch separates Matching behandelt, wobei der etwas umständliche Ersetzungsausdruck weniger Bytes benötigt, als entweder nur das erste Zeichen von zu ersetzenc
oders
beiden Zeichenfolgen ein Extra hinzuzufügen und den passenden Teilstring zu verwenden.quelle
c=>"iIvVuUſ"["jJuUvVs".search(c)]||"ſs"
ist schön. 👍🏻CJam (
8988 Bytes)Online-Demo
Ich habe nie verstanden, warum CJam keine regulären Ausdrücke hat, aber da dies nicht der Fall ist, gibt es hier eine Lösung, die sie nicht verwendet.
quelle
Ruby, 85 + 1 = 86 Bytes
Führen Sie mit
ruby -p
(+1 Byte fürp
Flag). Nimmt Eingaben auf stdin vor.Führen Sie die Tests auf ideone aus (dort in ein Lambda gehüllt, weil Sie ideone keine Flags geben können): http://ideone.com/AaZ8ya
quelle