जिफ - जिफ, जिफ - जिफ


24

अनुमति के साथ @Downgoat से चोरी

इस चुनौती का मुद्दा "gif" के उच्चारण पर बहस को निपटाना (नहीं) है।

जिफ बनाम जिफ"


का उच्चारण gif बहस का विषय है और जब तक यह माना जाता रहा है (और किया जाना चाहिए) स्पष्ट Jif , यह अभी भी सामान्य रूप से विवादित रहा है।

इस चुनौती में आपको उन शब्दों का एक सेट दिया जाएगा जिसमें एक g या j होता है , उस ध्वनि का प्रतिनिधित्व करता है जिसके साथ शब्द का उच्चारण किया जाता है। आप यह भी है जिसमें आप की गलत वर्तनी को ठीक करने के लिए है कुछ पाठ मिलेगा gif

क्योंकि यह इंटरनेट है और हर कोई हमेशा गलत है। उन्हें सुधारना आम शिष्टाचार नहीं है।

गलत उच्चारण का एक उदाहरण यह होगा:

एक था gif एक बरिटो खाने माउस के एक

जीआईएफ की गलत वर्तनी ? गवारा नहीं! इसे तुरंत सुधारा जाना चाहिए:

एक माउस का एक जिफ़ (जार में) एक बर्टिटो खा रहा था

हम कर रहे हैं? नहीं, तुम अब भी गलत हो।

तुम हमेशा गलत हो

यह दूसरे तरीके से काम करना चाहिए:

में Jif बिल्ली एक बिल्ली की एक टोपी पहनी थी

यह स्पष्ट गलत वर्तनी तय होनी चाहिए, हम इसे इस पर सही करेंगे:

में (ग्राफिक के रूप में) gif बिल्ली एक बिल्ली की एक टोपी पहनी थी

नियम

  • इनपुट एक स्ट्रिंग (वाक्य) है और किसी भी क्रम में स्ट्रिंग्स (या किसी भी उचित विकल्प, जैसे अल्पविराम से अलग स्ट्रिंग) की एक सरणी है।
  • आप किसी भी क्रम में शब्द gऔर jशब्द ले सकते हैं । उन्हें अलग से लिया जा सकता है।
  • gifवाक्य के प्रत्येक उदाहरण (किसी भी मामले) को एक समान रूप से यादृच्छिक रूप से चयनित शब्द से शुरू किया जाना चाहिए jif (as in ___)जहाँ स्ट्रिंग के सरणी से ___शुरुआत होती jहै, और इसके jifसाथ शुरू होने वाले शब्दों के लिए इसके विपरीत g
  • केवल शब्दों gifऔर jifप्रतिस्थापित किया जाना चाहिए (यानी "जिफ़ी" नहीं बदला जाना चाहिए)। उन शब्दों ने कोई गलत काम नहीं किया है।
  • आपको गारंटी है कि सरणी में कम से कम एक शब्द के साथ शुरू होता है gऔर कम से कम एक के साथ शुरू होता है j
  • मामला संरक्षित किया जाना चाहिए (जैसे GiF-> JiF)।
  • आप एक कार्यक्रम या एक समारोह लिख सकते हैं
  • मानक खामियां लागू होती हैं
  • हमें बहस को जल्दी से निपटाने (नहीं) करने की आवश्यकता है; बाइट्स में सबसे छोटा कोड जीतता है

उदाहरण

इनपुट और आउटपुट एक लाइन द्वारा अलग किए गए:

graphic, jar, jam, gram
I saw a jif of how to pronounce gif that showed gif is pronounced jif

I saw a gif (as in graphic) of how to pronounce jif (as in jar) that showed jif (as in jam) is pronounced gif (as in gram)


gravy, jeff
G is for gIf, h is for JiF, i is for gIF, j is for JIf

G is for jIf (as in jeff), h is for GiF (as in gravy), i is for jIF (as in jeff), j is for JIf (as in gravy)

joke, june, gorilla, great
Jiffy should not be treated as a GIF or JIF, like gifted.

Jiffy should not be treated as a JIF (as in june) or GIF (as in great), like gifted.

3
The pronunciation of gif is debated and while it's supposed to be (and should be) pronounced **gif,** it's still commonly disputed.
एफटीएफवाई

15
जिराफिकल इंटरचेंज प्रारूप :)
मिखाइल वी

3
(द जी चुप है।)
डेविड कॉनरैड

6
यह जाहिर तौर पर जोहान जैसा है। जैसे ध्वनि गड़गड़ाहट करती है।
R ..

2
क्योंकि यह एजी के साथ स्पष्ट है और एजे
स्टेन स्ट्रम

जवाबों:


6

गणितज्ञ, १६४ १६५ बाइट्स

यह एक घृणा है, लेकिन मैं चाहता हूं कि कोई मेरे दर्द को साझा करे।

StringReplace[f[f@"g"="j"]="g";f[f@"G"="J"]="G";z=IgnoreCase->1>0;#,x:"g"|"j"~~y:"if ":>{f@x,y,"(as in ",RandomChoice@StringCases[#2,f@x~~Except[","]..,z]}<>") ",z]&

Functionजो उम्मीद करता है कि पहला तर्क #सही (इन) होने की सजा हो और दूसरा तर्क #2अल्पविराम द्वारा अलग किए गए शब्दों का हो।

f[f@"g"="j"]="g";f[f@"G"="J"]="G"एक समारोह को परिभाषित करता है fजो पत्र ले जाता है g, G, j, और Jउनके उपयुक्त प्रतिस्थापन के लिए। यह कभी की तुलना में थोड़ा कम है f@"g"="j";f@"j"="g";f@"G"="J";f@"J"="G"

मैं भी zबराबर सेट करता IgnoreCase->Trueहूं क्योंकि मैं इसे दो बार इस्तेमाल करूंगा।

x:"g"|"j"~~y:"if "एक है StringExpressionजो मेल खाता है "gif "या "jif ", पहले अक्षर के नामकरण xऔर पिछले तीन वर्ण y। चूंकि विकल्प z(जिसे भी जाना जाता है IgnoreCase->True) को पारित किया जाता है StringReplace, ये अक्षर ऊपरी और निचले मामले के किसी भी संयोजन में हो सकते हैं।

मैं तब ऐसे हर मैच को बदल देता हूं

{f@x,y,"(as in ",RandomChoice@StringCases[#2,f@x~~Except[","]..,z]}<>") " 

RandomChoice@StringCases[#2,f@x~~Except[","]..,z]यादृच्छिक रूप से दूसरे तर्क में से एक शब्द का चयन करता है #2जो f[x]फिर से शुरू होता है , फिर से मामले को अनदेखा करता है क्योंकि विकल्प zदिया जाता है।


3
आप इसके लिए गणितज्ञ का उपयोग क्यों करेंगे? वाह।
नील ए।

1
IgnoreCase->True=>IgnoreCase->1<2
कैलक्यूलेटरफलाइन

1
@ कलकटरफ़लाइन मैं वास्तव में पहले से ही संक्षिप्त Trueहै 1>0, मेरे स्पष्टीकरण में नहीं :)
ngenisis

आप हर जगह पूरी तरह से गोल्फ कोड पापपेट का उपयोग करते हैं। वहां क्यों नहीं?
कैलक्यूलेटरफ्लीन

1
@CalculatorFeline मुझे लगता है क्योंकि उस मामले में मैं कोड को उद्धृत नहीं कर रहा था, मैं वर्णन कर रहा था कि उसने क्या किया, जो चर के zबराबर सेट करना था IgnoreCase->True। मैंने बाद में वही काम किया: "जो शुरू होता है f[x]"। ¯\_(ツ)_/¯
नगीनिस

5

रूबी , 88 87 91 बाइट्स

ETHproductions से -1 बाइट। +4 बाइट्स क्योंकि "gif" या "jif" वाले शब्दों को प्रतिस्थापित नहीं किया जाना चाहिए। -2 बाइट्स क्योंकि प्रतिस्थापन शब्द सूचियों को अब अलग से लिया जा सकता है।

->s,g,j{s.gsub(/\b(g|j)if\b/i){$&.tr("GgJj","JjGg")+" (as in #{($1[/g/i]?j:g).sample})"}}

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


6
आप को बदल सकता है ([gj])करने के लिए (g|j)? (idk ज्यादा रूबी लेकिन मुझे रेगेक्स पता है)
ETHproductions

3

सीजेएम , 78 बाइट्स

l',%:A;lS%{_ela"gifjif"3/&{_V=_el:B'g=1W?Z*+V\t" (as in "A{V=elB=!},mR')}O?S}%

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

प्रतिस्थापन वर्णों की सूची को अल्पविरामों से अलग करने की आवश्यकता है।


स्पष्टीकरण:

l',%                        e# read line of input and split at commas
    :A;                     e# store in var A and pop off the stack
       lS%{...}%            e# for each word in the next line of input so:

_ela"gifjif"3/&             e#   intersection of ["gif" "jif"] and [lowercase(word)]
               {...}O?      e#   if set it non-empty, run block below, otherwise do nothing (push empty string)
                      S     e#   push space

_V=                         e#     extract first char
   _el:B                    e#     duplicate to lowercase and store in var B
        'g=1W?Z*+           e#     convert g/G <=> j/J
                 V\t        e#     store back to word
" (as in "                  e#     push string
           A{V=elB=!},      e#     filter replacements by words starting with the same char (case insensitive)
                      mR    e#     select random element
                        ')  e#     push ')' char

उदाहरण के लिए काम नहीं करता है जहाँ जिफ़ / जिफ़ के बाद अल्पविराम होता है।
माइकल बोगर

1

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

lambda s,g,j:' '.join([(w if False in(w[0]in q,w[1:2]in['i','I'],w[2:3]in['f','F'],w[3:]in",;!?.")else q[w[0]]+w[1:3]+" (as in "+choice(g if w[0]in 'jJ'else j)+')'+w[3:])for w in s.split()])
from random import*
q=dict(zip("gGjJ","jJgG"))

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

यह सबसे अच्छा मैं कर सकता हूं - इसे तेज करने के लिए कुछ तरीका हो सकता है (शायद रीगेक्स के साथ) लेकिन मेरा मस्तिष्क अब दर्द करता है।

स्पष्टीकरण: qएक सरल शब्दकोश मानचित्रण है, मुझे आशा है कि यह स्पष्ट है। s,g,jइनपुट स्ट्रिंग, जी-शब्दों की सूची और जे-शब्दों की सूची हैं। ' '.joinएक साथ किए गए सूची बोध से जुड़ता for w in s.split()है इसलिए शब्दों की सूची के लिए है।

मध्यम बिट काला जादू है, जिसे मैं टुकड़े टुकड़े कर दूंगा। सबसे पहले, शर्त False in(w[0]in q,w[1:2]in['i','I'],w[2:3]in['f','F'],w[3:]in",;!."):।

w[0]in qचेकों पहला वर्ण चाबियों का है qजो कर रहे हैं 'g','G','j','J'qएक चर के रूप में अलग करने का कारण यह है कि हम इसे बाद में एक तानाशाह / मानचित्र के रूप में भी उपयोग करते हैं।

w[1:2]in ['i','I']जाँच करता है कि दूसरा चरित्र i या I. है। 2: आवश्यक है क्योंकि सिर्फ डालने से w[1]1 अक्षर वाले शब्दों पर दुर्घटना हो जाएगी, लेकिन स्लाइस ऐसा नहीं करते हैं, किसी कारण से (मुझे लगा कि उन्होंने जो किया, जो भी हो!)

w[2:3]in ['f','F']अनुरूप है। मुझे संक्षेप में यह केवल 2 के रूप में था: इससे पहले कि मुझे एहसास हुआ कि मुझे gif, या jif के लिए खाते की आवश्यकता है, उसके बाद विराम चिह्न!

w[3:]in",;!?."जाँच करता है कि बाद के चरित्र (ओं) विराम चिह्न हैं। मैं मानता हूँ कि अगर कोई 'जिफ़ डालता है तो मेरा कोड काम नहीं करता है?' लेकिन मैं सही नहीं हो सकता। कोई व्यक्ति जिफ या जिफ से पहले भी उद्धरण खोलने की चुनौती उठा सकता है।

False in(,,,)मूल रूप से एक बड़ा नंद है। यह वास्तव में एक ही बाईटेकाउंट है, जिसमें चार वस्तुओं को अलग किया जाता है andऔर तर्कों की अदला- बदली की जाती है, लेकिन यह कूलर दिखता है और बेहतर काम करता है यदि आपको इसे पांचवें andसंस्करण में विस्तारित करना है।

w ifइसका मतलब है कि यदि गलत स्थिति में है, तो हम सिर्फ अपरिवर्तित शब्द को वापस करते हैं - यह हमारे मानदंडों को पूरा नहीं करता है। else, हम इसे बदलते हैं:

q[w[0]]+w[1:3]+" (as in "+choice(g if w[0]in 'jJ'else j)+')'+w[3:]

ठीक है। q[w[0]]पहले अक्षर को सही ढंग से प्रतिस्थापित करता है। w[1:3]I या I और f या F w[3:]पर tacks , किसी अनुगामी विराम चिह्न पर tacks। जो खंड में छोड़ देता है।

" (as in "+choice(g if w[0]in 'jJ'else j)+')'शुरुआत में स्पष्ट स्ट्रिंग शाब्दिक और अनुगामी कोष्ठक में डालता है, यहां दिलचस्प सा है, choice(g if w[0]in 'jJ'else j)जो यादृच्छिक रूप से चुनता है gया j, इस पर निर्भर करता w[0]है 'jJ'। और मुझे एहसास हुआ कि मेरे पास यह थोड़ा पीछे की तरफ इतना ठीक है।

यह एक लंबा दिन था। choiceमें है randomमॉड्यूल इसलिए आयात। मुझे लगता है कि यह सब कुछ है।


0

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

(s,g,j,r=l=>l[Math.random()*l.length|0])=>s.replace(/\b[gj]if\b/gi,w=>`GJgj`[l=`JGjg`.search(w[0])]+w.slice(1)+` (as in ${r([g,j,g,j][l])})`)

अलग gऔर jशब्द सूची लेता है ।


0

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

f=(s,g,j)=>s.replace(/\b(g|j)(if)\b/ig,(m,p,c)=>`${a=g,p=="j"?"g":p=="J"?"G":(a=j,p=="g"?"j":"J")}${c}(as in ${a[Math.floor(Math.random()*a.length)]})`)

मैं शायद टर्नरी हिस्से को और नीचे कर सकता हूं, लेकिन मैं अभी नहीं सोच सकता। इसके अलावा, यह जी और जे शब्दों को अलग-अलग लेता है।

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