लिथ ट्राँथ्लिएटर


28

मेरे दोस्त ने दूसरे दिन एक लिस्प अनुवादक बनाया, यह कहना है कि यह एक स्ट्रिंग लिया और s => th और S => Th परिवर्तित कर दिया। यह काफी लंबा था और मुझे लगा कि यह गोल्फ हो सकता है।

तो कार्य एक प्रोग्राम / फ़ंक्शन बनाना है जो एक इनपुट स्ट्रिंग लेता है, इसे लिस्प में अनुवाद करता है और स्ट्रिंग को आउटपुट करता है

परीक्षण का मामला

Sam and Sally like Sheep        Tham and Thally like Thheep
Sally likes sausages            Thally liketh thauthageth
Sally sells seashells           Thally thellth theathhellth

ध्यान दें कि यह कोई फर्क नहीं पड़ता कि एच हर समय दोहराया जाता है

यह कोड गोल्फ है इसलिए सबसे कम उत्तर जीतता है


13
काश हर कोई अपने हेडर में बाइट्स को बाइट में बदल देता
लीक नून

6
यदि कार्यक्रम का उपयोग नहीं किया जाता है sऔर न ही इसमें Sकहीं भी बोनस अंक होने चाहिए ।
नैट डायमंड

1
मुझे लगता है कि भाषा के नाम स्पष्ट किए जाने चाहिए। प्रतिस्थापन के बिना। कुछ भाषाओं में "th" पहले से मौजूद है, इसलिए यह अस्पष्ट है। और कौन कहता है कि कोई व्यक्ति वास्तव में भविष्य में "कॉमन लिथ" नामक एक अलग भाषा नहीं बनाएगा?
mbomb007

1
@ mbomb007 मैं इसके बारे में बहुत ज्यादा चिंता नहीं करता। मुझे यकीन नहीं है कि वास्तव में आपके जवाब को लिखने का एक डिफ़ॉल्ट तरीका है। अधिकांश प्रश्न मैं देखता हूं कि क्या वे यह करते हैं कि यह कैसे करना है यह सामान्य रूप से उसी तरह है। जैसा कि मैंने समझाया नहीं है कि उत्तर कैसे सेट किया जाना चाहिए, तो उपयोगकर्ता उन्हें शीर्षक देने के लिए स्वतंत्र हैं कि वे कैसे चाहते हैं। एक पेडेंट होने के नाते, मैंने एक भाषा भी नहीं मांगी, इसलिए मैं उनके खिलाफ भी लिख सकता था। लेकिन मैं आपकी बात समझता हूं। मुझे नहीं लगता कि यह चिंता का विषय है
जॉर्ज

2
एक चीज जिसने इस चुनौती को और अधिक रोचक बना दिया होगा, वह है समग्र मामले का संरक्षण, जैसेLOOK OUT A SNAKE!!! -> LOOK OUT A THNAKE!!!
शराबी

जवाबों:


36

आम लिथ, 62

(map()(lambda(u)(princ(case u(#\s"th")(#\S"Th")(t u))))(read))

सबसे पहले, (read)इनपुट (यह एक स्ट्रिंग होना चाहिए)। सीएल में स्ट्रिंग्स अनुक्रम हैं इसलिए हम mapप्रत्येक वर्ण पर पुनरावृति करने के लिए उपयोग करते हैं। पहला तर्क mapपरिणाम के प्रकार का प्रतिनिधित्व करता है (जैसे मैं एक वेक्टर से एक सूची बना सकता था)। जब यह होता है nil, उर्फ (), परिणाम खारिज कर दिया जाता है। फ़ंक्शन जिसे इनपुट पर मैप किया गया है princ( केवल गैर-पठनीय रूप से प्रिंट करें) प्रत्येक वर्ण को छोड़कर, जिन्हें प्रतिस्थापित किया जाना चाहिए।


14
उस भाषा का नाम हालांकि।
जो जेड।

1
@JoeZ। मैंने बस sद्वारा प्रतिस्थापित किया th, जैसे कि हर किसी ने किया: उन Pyson उत्तरों को देखें।
coredump

@coredump वे सभी गलत हैं: यह एक तरफ़ा है: s-> th, S-> Th, th-> th, Th-> Th
आउटगोल्फर

1
@DrGreenEggsandIronMan ज़रूर, (defmacro cathe (&rest args) `(case ,@args))
coredump

1
ठीक है कि अधिक समझ में आता है योग्य


13

JavaThcript ETh6, 38 बाइट्स

सबसे पहले मैं स्पष्ट समाधान के साथ गया

a=>a.replace(/s/g,'th').replace(/S/g,'Th')

लेकिन मैंने इसे 4 बाइट्स में नीचे कर दिया

a=>a.replace(/s/gi,b=>b>'r'?'th':'Th')

यह रेगेक्स iध्वज का उपयोग करता है , जो केस-असंवेदनशील पैटर्न की खोज करता है। जावास्क्रिप्ट के बारे में अच्छी बात यह है कि आप एक अनाम फ़ंक्शन को बदलने (regex) को संभालने के लिए निर्दिष्ट कर सकते हैं।

इसे यहाँ आज़माएँ

f=
a=>a.replace(/s/gi,b=>b>'r'?'th':'Th')

s.innerHTML = [
    'abScdsefSghsij',
    'Sam and Sally like Sheep',
    'Sally likes sausages',
    'Sally sells seashells'
].map(c=>c + ' => ' + f(c)).join`<br>`
<pre id=s>


11
"ई एथ डेथ"?
जो जेड।

मैं सोच रहा था 'Tt'[b>'r']+'h', लेकिन यह एक ही लंबाई है
वाशिंगटन Guedes

1
आपका मतलब 38 बाइटेथ
डाउनगोट

टीआईएल के लिए +1 कि स्ट्रिंग तुलना कोड प्वाइंट वैल्यू के माध्यम से की जाती है
मेयरमोनी

@Upgoat यह मेरी गलती थी।
नील

11

GNU Sed - 17

s/S/Th/g;s/s/th/g

स्पष्ट उत्तर।

$ sed -e "s/S/Th/g;s/s/th/g"

Sam and Sally like Sheep
Tham and Thally like Thheep

Sally likes sausages
Thally liketh thauthageth

Sally sells seashells
Thally thellth theathhellth

17
क्या आपका मतलब जीएनयू थेड था? ;)
m654


8

पायथन 3 - 40 बायथ

पहला गोल्फ!

lambda s:s.translate({115:'th',83:'Th'})

यह strमॉड्यूल की अनुवाद विधि का उपयोग करता है जो अनुवाद तालिका को स्वीकार करता है। अनुवाद तालिका dictकुंजी के रूप में कीकोड और strमूल्य के रूप में इसके स्थान पर एक सरल है ।


1
PP & CG समुदाय में आपका स्वागत है!
एर्ग आउटफोलर

4
क्या मैं आपसे पूछ सकता हूं, आपके पास 2 अलग खाते क्यों हैं?
बैलिंट

@ Bálint जाहिर है, वह केवल 3 प्रतिनिधि के साथ अपने वर्तमान खाते में लॉग इन करना भूल गया , लेकिन स्टैक ओवरफ्लो पर एक अनुभव । और एक नए खाते के साथ पोस्ट किया गया।
user48538

6

जावास्क्रिप्ट ईटीएच ६, ४३ बायथ

s=>s.replace(/s/gi,m=>({s:'th',S:'Th'})[m])

टेथ थुइट:

th=s=>s.replace(/s/gi,m=>({s:'th',S:'Th'})[m])
  
console.log(th('Sam and Sally like Sheep'));
console.log(th('Sally likes sausages'));
console.log(th('Sally sells seashells'));


6
कन्फैथ: आप केवल शीर्षक शीर्षक के थेक के लिए उस टेथ को पढ़ते हैं!
काउंटरक्ल्विस


5

सी, 50 बाइट्स

s(c){c=getchar();c+=c-83&95?0:'h\1';s(printf(&c));}

\1एक वास्तविक \x01बाइट के साथ बदलें ।

jimmy23013 ने एक बाइट को बचाया, और फिर मैंने उनके दृष्टिकोण का उपयोग करके दो और बचाए! धन्यवाद।


मैं टिप्पणी करने वाला था कि &cपैरामीटर टूट गया है। लेकिन यह नहीं है, क्योंकि थोड़ा-सा एंडियन आर्किटेक्चर पर उस की दूसरी बाइट intहोगी 0x00और वास्तव में "स्ट्रिंग" को समाप्त कर देगा ... यह बहुत ही चालाक है, मुझे यह पसंद है!
क्वेंटिन

s(c){c=getchar();c+=c-83&~32?0:26625;s(printf(&c));}
jimmy23013

आप 2 बाइट्स को एक में नहीं धकेल सकते हैं char'h\1'
आउटगॉल्फ

@ E @G, मल्टी-कैरेक्टर कॉन्स्टेंट कार्यान्वयन को परिभाषित करते हैं, bu पूरी तरह से मान्य सी
डेनिस


4

जावा, 71 65 बाइट्स

String t(String s){return s.replace("S","Th").replace("s","th");}

गोल्फ में पहला प्रयास, तो जावा के साथ क्यों नहीं।


2
आप replaceइसके बजायreplaceAll
aditsu

ओह, हाँ, तुम सही हो। धन्यवाद! @aditsu
पागल

3
आप एक फ़ंक्शन के बजाय एक लैम्ब्डा अभिव्यक्ति का उपयोग करके कुछ बाइट्स बचा सकते हैं। s->s.replace("S","Th").replace("s","th")
डेनकर

4

GNU AWK, 31 बाइट्स

gsubरेगेक्स के माध्यम से निचले या ऊपरी एस का अनुवाद करने के लिए फ़ंक्शन का उपयोग करना और बाद में प्रिंट करना। फ़ाइलों के साथ या stdinइस मामले में के साथ काम कर सकते हैं

$ awk '{gsub(/s/,"th");gsub(/S/,"Th")}1' <<< "This is Sparta"                   
Thith ith Thparta


3

पायथन 3 - 46 बाइट्स

lambda s:s.replace("s","th").replace("S","Th")

@DenkerAffe की मदद से 4 बाइट गिराए !


1
पायथन 3 वह भाषा थी जिसे मूल रूप से लिखा गया था। उसके कोड का मेरा संस्करण 59 बाइट्स था, इसलिए हमने ऐसा किया!
जॉर्ज

1
lambda s:s.replace("s","th").replace("S","Th")थोड़ा छोटा है।
डेनकर

@DenkerAffe हां यह छोटा है लेकिन इस मामले में लैम्ब्डा का उपयोग करने के लिए, आपको मूल प्रश्न का उत्तर देने के लिए इनपुट और आउटपुट की आवश्यकता होगी।
जॉर्ज

1
@ घेरा समुदाय की आम सहमति है कि फ़ंक्शन स्टड / स्टडआउट का उपयोग करने के बजाय तर्कों और रिटर्न मूल्यों का उपयोग कर सकते हैं। I / O के लिए हमारे डिफ़ॉल्ट पर एक नज़र डालें । यदि आप निश्चित रूप से उन्हें ओवरराइड कर सकते हैं यदि आप चाहते हैं, तो यह इस विशेष चुनौती में बहुत मायने नहीं रखेगा।
डेनकर

@DenkerAffe ठीक है कि ठीक है। जब मैंने सवाल पूछा तो मेरा मतलब है कि आउटपुट एक प्रतिध्वनि या प्रिंट होगा। लेकिन मैं इसे चूक के लिए छोड़ दूंगा। तो हां लैंबडा का उपयोग करना कम होगा
जॉर्ज

3

सी # 6.0 - 58 बाइट्स

string f(string s)=>s.Replace("s","th").Replace("S","Th");

फ़ंक्शन के तर्क के रूप में इनपुट स्ट्रिंग लेता है।


3

हास्केल, 36 बाइट्स

f 's'="th";f 'S'="Th";f x=[x]
(>>=f)

आपको स्थान की आवश्यकता नहीं है:f's'=...
थ्रीएफएक्स

1
दुख की बात है, मैं करता हूं। हास्केल नामों में एपोस्ट्रोफिस हो सकते हैं। :(
लिन

अरे धिक्कार है कि मैं पूरी तरह से भूल गया। मुझे लगभग कभी भी ज़रूरत नहीं है Char...
थ्री एफ एक्स

8
मैंने सोचा था कि यह "हाथकेल"
पैट्रिक रॉबर्ट्स

3

जंग, 46 बाइट्स

|s:&str|s.replace("s","th").replace("S","Th");

इसे ऑनलाइन आज़माएं!


1
@ mbomb007। मुझे यकीन नहीं है कि आपको इसे संपादित करना चाहिए।
वॉशिंगटन गेदेस

मैं इसका उत्तर देने वाले दिशानिर्देशों का पालन कर रहा हूं। मुझे एक पोस्ट देखने और यह जानने में सक्षम होना चाहिए कि यह किस भाषा में है। कुछ भाषाओं में "th" पहले से मौजूद है, इसलिए यह अस्पष्ट है। और कौन कहता है कि कोई वास्तव में भविष्य में "रूथ" नामक एक अलग भाषा नहीं बनाएगा?
mbomb007

2
@ mbomb007, जो किसी को यह कहना है कि भविष्य में "रूस्ट" नामक एक अलग भाषा नहीं बनाएगी?
msh210

@ msh210 मूट पॉइंट, क्योंकि अगर इस्तेमाल किया गया तो पोस्टर को स्पष्ट करना होगा।
mbomb007

3

PHP, 42 बाइट्स

यदि किसी फ़ाइल से चलाया जाता है:

<?=strtr($argv[1],["s"=>"th","S"=>"Th"]);

ऐसे दोड़ो:

~$ php [file] "This is Silly"

-1 बाइट: अंत में न्यूलाइन को हटा दें
एरिक आउटगॉल्फर

-8 बाइट्स: उद्धरण निकालें। -> php -d error_reporting=0नोटिस को दबाने के लिए उपयोग करते हैं ।
टाइटस

3

टीआई-बेसिक, 126 बाइट्स

Input Str1
inString(Str1,"s
While Ans
sub(Str1,1,Ans-1)+"th"+sub(Str1,Ans+1,length(Str1)-Ans->Str1
inString(Str1,"s
End
inString(Str1,"S
While Ans
sub(Str1,1,Ans-1)+"Th"+sub(Str1,Ans+1,length(Str1)-Ans->Str1
inString(Str1,"S
End
Str1

ये गलत है। Str1कभी नहीं बदलता है, और Ansअंत में एक नंबर धारण करेगा।
lirtosiast

नोट के लिए धन्यवाद, अब तय किया गया। मैं नहीं जानता कि मैं कैसे Str1फिर से बचाना भूल गया ...
टिमटेक जू

यह अभी भी गलत है; जब पहला या अंतिम वर्ण एस होता है, तो यह त्रुटी है। जैसा कि मैंने पहले कहा है, कृपया अपने कोड को पोस्ट करने से पहले उसका परीक्षण करें।
lirtosiast

3

जावा, 101 बायथ

interface a{static void main(String[]A){System.out.print(A[0].replace("S","Th").replace("s","th"));}}

ध्यान दें कि यह पिछले जावा उत्तर के विपरीत एक पूर्ण कार्यक्रम है ।

बोनस (पहले सी प्रीप्रोसेसर को दिया जाना चाहिए )

#define interfaith interface
#define thtatic static
#define Thtring String
#define Thythtem System
#define replaith(x,y) replace(x,y)

interfaith a{thtatic void main(Thtring[]A){Thythtem.out.print(A[0].replaith("S","Th").replaith("s","th"));}}



2

पायथन 3, 53 बाइट्स

def l(s):return s.replace("s","th").replace("S","Th")

उपयोग:

>> l('Sam and Sally like Sheep')

Tham and Thally like Thheep

-7 बाइट्स: lambda s:s.replace("s","th").replace("S","Th")उपयोग:(lambda s:s.replace("s","th").replace("S","Th"))(s)
बाहर निकलना

@ E @GX खैर, यह तुकक्का के जवाब के समान है (जो कि मेरी पहले पोस्ट किया गया था), इसलिए ...
m654

उसके बाद कोई और उत्तर पोस्ट करने का कोई कारण नहीं है।
आउटगोल्फ

@ E @G। जब मैंने अपना पोस्ट किया तब मैंने उसका ध्यान नहीं रखा।
m654

आपके द्वारा पोस्ट किए जाने से पहले एक छोटा नोटिस करने के बाद आप अपना उत्तर हटा सकते हैं।
आउटगॉल्फ

2

गेममेकर भाषा, 74 बाइट्स

return string_replace_all(string_replace_all(argument0,'s','th'),'S','Th')

2

मतलाब, 39 बटेठ

एक दृढ़ दृष्टिकोण:

@(t)strrep(strrep(t,'s','th'),'S','Th')

2

एमैक्थ लिथप, 61 बायथ

(lambda(s)(replace-regexp-in-string"[Ss]\\(\\w*\\)""th\\1"s))

Emacs Lisp पाठ को प्रतिस्थापित करते समय स्मार्ट होने की कोशिश करता है, लेकिन यह स्मार्टनेस तब टूटती है जब प्रतिस्थापित स्ट्रिंग केवल एक स्थान लेती है, अर्थात कैपिटल लेटर S. "सैम और सैली" को "THAM और THally" में परिवर्तित करने से रोकने के लिए, पूरा शब्द। इसके बजाय मिलान किया जाता है। हालाँकि, यह "एसएएम और सैली" को उस तरीके से भी संभालता है, जिसे कोई "थैम एंड थाली" बनाना चाहता है।


2

x86 मशीन कोड, 19 बाइट्स

हेक्स में:

86ac3c5374043c73750440aab068aa84c075eec3

इनपुट:: ESIइनपुट स्ट्रिंग EDI,: आउटपुट बफर।

disassembly:

_loop:
0:  ac          lodsb       
1:  3c 53       cmp al,'S'  
3:  74 04       je _th      
5:  3c 73       cmp al,'s'  
7:  75 04       jne _nth    
_th:
9:  40          inc eax     ;[Ss]->[Tt]
a:  aa          stosb       
b:  b0 68       mov al,'h'  
_nth:
d:  aa          stosb       
e:  84 c0       test al,al  
10: 75 ee       jnz _loop   
12: c3          ret         

आप test al, 'S'एक बार में दोनों की जांच करने के लिए उपयोग कर सकते हैं
anatolyg

2

Befunge 98, 37 49 बाइट्स

मूल संस्करण :

~:"s"- #v_$"ht",>,
_;#-"S":<;$"hT",^ 

सर्वसम्मति के अनुसार, समापन संस्करण:

~:a-!#@_:"s"-#v_$"ht",>,
_;#-"S":      <;$"hT",^ 

यह कोड ग्रिड में एक बड़ा सम्मानजनक छेद छोड़ता है जिससे मैं बहुत खुश नहीं हूं। मैं उस समय देखूंगा जब मेरे पास समय होगा।
49 वीं बाइट दूसरी पंक्ति के अंत में एक स्थान है, जिसमें एक आयताकार ग्रिड शामिल है, जिसे ccbi (और शायद अन्य दुभाषियों) को रोकने और "Th" s की अनंत रेखा को प्रिंट करने से रोकने के लिए आवश्यक है।



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