मध्यकालीन ओर्थोग्राफी


9

कार्य

आपका काम एक पाठ को मध्ययुगीन ऑर्थोग्राफी में बदलना है।

विवरण

  1. jमें बदल जाती है iऔर Jकरने के लिए I
  2. uऔर Uशब्द की शुरुआत में करने के लिए बदल रहे हैं vऔर Vक्रमशः।
  3. vऔर Vशब्द की शुरुआत छोड़कर कहीं पर में बदल रही हैं uऔर Uक्रमशः।
  4. sſ(U + 017F) में परिवर्तित किया जाता है, जब तक कि शब्द के अंत में या दूसरे से पहले न हो s

चश्मा

  • एक शब्द को अक्षरों के अनुक्रम के रूप में परिभाषित किया गया है abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
  • सभी शब्दों में कम से कम दो अक्षर होंगे।
  • इनपुट में केवल मुद्रण योग्य ASCII वर्ण (U + 0020 - U + 007E) शामिल होंगे।
  • लगातार दो से अधिक की कोई घटना नहीं होगी s। यही है, sssइनपुट का एक विकल्प नहीं होगा।

परीक्षण के मामलों

व्यक्तिगत शब्द:

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

अस्वीकरण

मेडिएवैल ऑर्थोग्राफ़ी वह कॉन्टेंट नहीं है। यदि आप एक पुराने ऑर्थोग्राफ़ी के साथ बुक करते हैं तो प्लेयेन शिकायत नहीं करते हैं।


1
"आपको आउटपुट में ſ के बजाय f का उपयोग करने की अनुमति है।" इसलिए मूल रूप से। का उपयोग करने के लिए कोई प्रोत्साहन नहीं है क्योंकि यह अधिक बाइट लेता है।
घातक

1
@ फाल्ट फेयर प्वाइंट। उस एक को हटा दिया।
लीक नून

@ LeakyNun क्या हम फिर ſ1 बाइट के रूप में गिन सकते हैं ?
आर। कप

कुछ एल्गोरिदम में fs में बदले जाने पर ff के रूप में वास्तव में प्रोत्साहन होता है यदि
विनाशकारी नींबू

1
नहीं Super-viseबनना चाहिए Super-viſe?
आर। कप

जवाबों:


3

एसईडी, 144 140 111 बाइट्स

NoOneIsHere की बदौलत 29 बाइट्स बचाए

-r -e'y/j/i/g;y/J/I/g;s/ u/ v/g;s/ U/ V/g;s/^u/v/g;s/^U/V/g;s/([^s])s(\w)/\1ſ\2/g;s/(\w)v/\1u/g;s/(\w)V/\1U/g'

1
तुम वीर, बहादुर आत्मा हो।
अलेक्जेंडर -

आप केवल 1 का उपयोग करके कई बाइट्स काट सकते हैं -e;एसबेटिन बयानों का उपयोग करें ।
NoOneIsHere

मुझे नहीं पता था कि आप ऐसा कर सकते हैं। धन्यवाद!!
रिले

2

पायथन 3 ( 128 126 बाइट्स)

import re;lambda k:re.sub("(?<!s)s(?=[a-zA-Z])",'ſ',re.sub("(?i)j|(?<![a-z])u|(?<=[a-z])v",lambda c:chr(ord(c.group())^3),k))

chr(ord(c.group())^3)एक एकल-वर्ण स्ट्रिंग के लिए एक्सर के लिए अत्यधिक महसूस होता है, लेकिन शायद एक असली पायथनोस्टा एक गोल्फ का सुझाव दे सकता है। हालाँकि, यह बहुत सुविधाजनक है जो ^3इंटरचेंज i <-> jऔर के लिए पर्याप्त है u <-> v

नायब यहाँ केवल एक चीज है जिसके लिए पायथन 3 की आवश्यकता है, वह है यूनिकोड चरित्र: अजगर 2 शिकायत करता है Non-ASCII character '\xc5' <snip> but no encoding declared


आप उपयोग नहीं करना चाहिए \bके बाद से \bउपयोग करता है एक शब्द है जिसका अंक और अंडरस्कोर शामिल की परिभाषा।
लीके नन

@ लीकनुन, हम्म। जब मैं एक सुधार के लिए देख रहा हूँ, क्या आप कुछ परीक्षण मामलों को जोड़ सकते हैं?
पीटर टेलर

@ R.Kap। (?i)
पीटर टेलर

@PeterTaylor रुको, वह क्या करता है?
आर। कप

@ R.Kap, यह रेगेक्स केस को असंवेदनशील बनाता है।
पीटर टेलर


1

पायथन 3.5, 124 116 111 118 125 144 142 बाइट्स:

import re;lambda k:re.sub("J|j|(?<![a-zA-Z])[uU]|(?<=[a-zA-Z])[Vv]|(?<!s)s(?=[a-zA-Z])",lambda g:dict(zip('jJuUvVs','iIvVuUſ'))[g.group()],k)

खैर, यह नियमित अभिव्यक्तियों के लिए एकदम सही काम लगता है !


1
आप J|jइसके बजाय का उपयोग कर सकते हैं[Jj]
लीक नून

1

जावास्क्रिप्ट (ईएस 6), 154

ParseInt का उपयोग वर्णमाला वर्णों की पहचान करने के लिए। नोट: आकस्मिक रूप से लेकिन सौभाग्य parseInt('undefined',36)|0से <0 है

s=>[...s].map((c,i)=>((n=v(c))-19?n==31&p>9?'uU':n!=30|p>9?c=='s'&s[i-1]!=c&v(s[i+1])>9?'?':c+c:'vV':'iI')[p=n,c<'a'|0],p=0,v=c=>parseInt(c,36)|0).join``

कम गोल्फ वाला

s=>
  [...s].map(
  (c,i)=>
  ((n=v(c))-19
  ?n==31&p>9
    ?'uU'
    :n!=30|p>9
      ?c=='s'&s[i-1]!=c&v(s[i+1])>9
        ?'ſ'
        :c+c
      :'vV'
  :'iI')[p=n,c<'a'|0],
  p=0,
  v=c=>parseInt(c,36)|0
).join``

परीक्षा

F=
s=>[...s].map((c,i)=>((n=v(c))-19?n==31&p>9?'uU':n!=30|p>9?c=='s'&s[i-1]!=c&v(s[i+1])>9?'ſ':c+c:'vV':'iI')[p=n,c<'a'|0],p=0,v=c=>parseInt(c,36)|0).join``

out=(a,b,c)=>O.textContent+=a+'\n'+b+'\n'+c+'\n\n'

ti='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.'
to='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.'
r=F(ti)
out(to==r?'OK':'KO',ti,r)

test=`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_`
.split('\n').map(t=>{
  var [i,o]=t.split(/\s+/),r=F(i)
  out(o==r?'OK':'KO',i,r)
})
#O {width:90%; overflow:auto; white-space: pre-wrap}
<pre id=O></pre>


1

जावास्क्रिप्ट (ईएस 6), 111 बाइट्स

s=>s.replace(/[a-z]+/gi,w=>w.replace(/j|J|^u|^U|\Bv|\BV|ss|s(?!$)/g,c=>"iIvVuUſ"["jJuUvVs".search(c)]||"ſs"))

स्पष्टीकरण: क्योंकि जावास्क्रिप्ट regexp कोई lookbehind है, मैं बजाय शब्दों में स्ट्रिंग है, जो तब मुझे इस्तेमाल करने की अनुमति देता है को तोड़ने ^और \Bनकारात्मक और सकारात्मक पत्र lookbehinds के रूप में। ssथोड़ा अजीब प्रतिस्थापन अभिव्यक्ति के साथ अलग-अलग मिलान करके निपटा जाता है, जो या तो केवल पहले चरित्र को बदलने cया sदोनों तारों के लिए एक अतिरिक्त जोड़ने या मिलान विकल्प का उपयोग करने की तुलना में कम बाइट्स लेता है ।


c=>"iIvVuUſ"["jJuUvVs".search(c)]||"ſs"अच्छा है। 👍🏻
जॉर्डन

0

सीजाम ( 89 88 बाइट्स)

{32|_'`>\'{<*}:A;SqS++3ew{_1="jJuUvVs"#[-4_{_0=A!3*}_{_0=A3*}_{_)A\0='s=>268*}W]=~f^1=}%

ऑनलाइन डेमो

मुझे कभी समझ में नहीं आया कि सीजेएम के पास रेग्क्स क्यों नहीं है, लेकिन चूंकि यह यहां समाधान नहीं है जो उनका उपयोग नहीं करता है।


0

रूबी, 85 + 1 = 86 बाइट्स

ruby -p( pध्वज के लिए +1 बाइट ) के साथ चलाएँ । स्टड पर इनपुट लेता है।

gsub(/j|(?<=^|[^a-z])u|(?<=[a-z])v|(?<=^|[^s])s(?=[a-z])/i){$&.tr"jJsUuVv","iIfVvUu"}

Ideone पर परीक्षण चलाएं (एक लैम्ब्डा में लिपटे हुए हैं क्योंकि आप विचारधारा को झंडे नहीं दे सकते हैं): http://ideone.com/AnZ चित्र

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.