जियोबिट्सियन भाषा


16

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

इस प्रक्रिया को जियोसाइटिंग कहा जाता है ।

उदाहरण के लिए शब्द " जोबिट्स " को तोड़ दिया जा सकता है geo bits, और बकवास कविता

Algy met a Bear
A Bear met Algy
The Bear was bulgy
The bulge was Algy

के रूप में इसके साथ Geobitsized होगा

Algeoy met a Bitsear
A Bitsear met Algeoy
The Bitsear was bitsulgeoy
The bitsulgeoe was Algeoy

क्योंकि हर gबन जाता है geo, हर G(हालांकि कोई नहीं होता) बन जाता है Geo, हर bबन जाता है bitsऔर हर Bबन जाता है Bits

ध्यान दें कि प्रत्येक प्रतिस्थापन मूल स्ट्रिंग के संबंध में किया जाता है, न कि कोई मध्यवर्ती चरण। जैसे अगर geoकिया गया था gboबजाय, b's बनाया के साथ बदल नहीं होता bits

चुनौती

एक प्रोग्राम या फ़ंक्शन लिखें जो जियोबिट्स भाषा उत्पन्न कर सकता है।

लोअरकेस अक्षर (az) और रिक्त स्थान से बने सिंगल-लाइन स्ट्रिंग में लें। यह शब्द जियोबिट्सिंग तर्क के रूप में इस्तेमाल किया जाएगा, जिसमें रिक्त स्थान अलग-अलग होंगे। आप मान सकते हैं:

  • खंड खाली नहीं होंगे। तो रिक्त स्थान एक दूसरे के पड़ोसी नहीं होंगे और न ही स्ट्रिंग के प्रारंभ या अंत में होंगे।
  • प्रत्येक खंड एक अलग अक्षर से शुरू होता है। इस प्रकार 26 से अधिक नहीं हो सकते।

उदाहरण के लिए, कुछ वैध हिस्सों में बंटा हुआ तार आप का समर्थन करना चाहिए रहे हैं geo bits, butt ner, alex, और do o r k nob(एकल पत्र खंडों कोई प्रभाव नहीं लेकिन मान्य हैं)। लेकिन geo , butt ner, Alex, और do o r k n obअमान्य हैं।

आपके प्रोग्राम या फ़ंक्शन को जियोबिट्सिंग को लागू करने के लिए एक और मनमाना स्ट्रिंग लेने की जरूरत है, और परिणामस्वरूप जियोबिट्स भाषा को प्रिंट या वापस करना होगा।

  • आप मान सकते हैं कि इस स्ट्रिंग में केवल newlines और मुद्रण योग्य ASCII शामिल हैं।

  • याद रखें कि पत्र मामलों को इनपुट से आउटपुट तक संरक्षित किया जाना चाहिए।

यहाँ no pro gr am m ingजियोबिट्सिंग तर्क के रूप में कुछ और उदाहरण दिए गए हैं :

[empty string][empty string]

iing

IIng

Mmmm, mmm... MmmmMMM: m&m!Mmmm, mmm... MmmmMMM: m&m!(कोई परिवर्तन नहीं)

People think bananas are great, don't you?Proeoprole thingnok bamnoamnoams amre grreamt, dono't you?

Pet a Puppy
Google Wikipedia

Proet am Prouproproy
Groogrle Wingkingproedingam

ध्यान दें कि परिणाम समान होना चाहिए कोई बात नहीं कि तर्क कैसे व्यवस्थित किया जाता है, उदाहरण के लिए ing pro m no am grऊपर के समान परिणाम प्राप्त करना चाहिए।

बाइट्स में सबसे छोटा कोड जीतता है।


क्या हम "Geobitsizing तर्क" को एक सरणी के रूप में ले सकते हैं? जैसे["no", "pro", "gr", "am", "m", "ing"]
डाउन

@Upgoat क्षमा करें, लेकिन नहीं।
केल्विन के शौक

@Upgoat कोशिश करें \\b${l}(\\S+)कि आप 5 बाइट खर्च करता है।
नील

3
-1 अंतरिक्ष-पृथक स्ट्रिंग की मनमानी इनपुट आवश्यकता के लिए।
AdmBorkBork

2
परीक्षण का मामला सुझाव: abra cadabra, !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~बस इतना ही बढ़त मामलों को शामिल करना चाहिए, और अगर एक कोशिश करता regexes उपयोग करने के लिए उनमें से एक बहुत देखते हैं ...
डेनिस

जवाबों:


6

जेली , 18 बाइट्स

ṣ⁶;Œu1¦€$;©ZḢiЀị®

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

वैकल्पिक संस्करण, 15 बाइट्स (गैर-प्रतिस्पर्धात्मक)

जेली के शीर्षक मामले के समारोह में एक बग था; इसने पहले शब्द को बड़ा नहीं किया। यह ठीक कर दिया गया है, इसलिए अब निम्नलिखित काम करता है।

ṣ⁶;Œt$;©ZḢiЀị®

यह कोड प्रतिस्पर्धी संस्करण में भी ऐसा ही करता है, सिवाय इसके Œt(शीर्षक मामले) द्वारा प्राप्त सशर्त अपरकेसिंग की जगह Œu1¦€

यह काम किस प्रकार करता है

ṣ⁶;Œu1¦€$;©ZḢiЀị®  Main link. Left argument: w (words). Right argument: s (string)

ṣ⁶                  Split w at spaces.
        $           Combine the two links to the left into a monadic chain.
       €              Map over the words.
   Œu1¦                 Uppercase the item at index 1.
  ;                   Append the result to the unmodified words.
         ;          Append all characters in s to the list of words.
          ©         Copy the result to the register.
           Z        Zip/transpose, grouping the first chars into the first list.
            Ḣ       Head; extract the list of first characters.
             iЀ    Find the first index of each character in s.
                ị®  Select the characters/strings from the list in the register
                    that are at those indices.

5

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

lambda w,s:s.translate({ord(t[0]):t for t in(w+' '+w.title()).split()})

Ideone पर इसका परीक्षण करें ।

यह काम किस प्रकार करता है

पायथन 3 में , अंतर्निहित str.translateएक स्ट्रिंग और एक शब्दकोश लेता है, और स्ट्रिंग में प्रत्येक वर्ण को प्रतिस्थापित करता है, जिसका कोड बिंदु संबंधित मान के साथ उस शब्दकोश की एक कुंजी है, जो एक स्ट्रिंग, एक पूर्णांक या कोई नहीं (समतुल्य हो सकता है) खाली स्ट्रिंग)।

शब्दों का स्ट्रिंग परिवर्तित डब्ल्यू शीर्षक केस (यानी, प्रत्येक शब्द के पहले अक्षर को बड़े अक्षरों में) और का परिणाम के लिए इसे जोड़कर करने के लिए w+' 'बनाता है अंतरिक्ष के एक स्ट्रिंग निचले और अपरकेस संस्करण (पहले अक्षर) के साथ शब्द अलग कर दिया। दूसरे तर्क के बिना, str.splitव्हाट्सएप पर विभाजित होता है, इसलिए सभी शब्दों (w+' '+w.title()).split()की सूची बनाता है ।

अंत में, शब्दकोश समझ {ord(t[0]):t for t in...}प्रत्येक शब्द बदल जाता है टी कुंजी के साथ एक शब्दकोश प्रविष्टि में ord(t[0])(पहले अक्षर के कोड अंक) और मूल्य टी , तो str.translateइरादा प्रतिस्थापन प्रदर्शन करेंगे।


3

पायथन, 126 99 95 81 बाइट्स

डेनिस को बहुत धन्यवाद:

lambda G,S,j=''.join:j(s+j(g[1:]for g in G.split()if g[0]==s.lower())for s in S)

Edit1: एक अस्थायी के लिए संलग्न करने की जरूरत नहीं है

Edit2: Sइसमें अपरकेस हो सकता है ...

Edit3: G की नकल न करें

Edit4: थोड़ा और अधिक संकुचित किया और इसे एक पंक्ति में भेज दिया

Edit5: अनाम लैम्ब्डा और का उपयोग कर j=join' '



2

विम, 46 कीस्ट्रोक्स

बदसूरत, और Hacky।

A <esc>:s/\<\w/:%s\/\0\\c\/\\0/g<cr>:s/ /eg<C-v><Cr>/g<cr>dgg@"

वी में क्यों नहीं? डी:
डाउनगोट

@Upgoat क्योंकि यह एक छोटी सी गड़बड़ है।
DJMcMayhem


2

Pyth, 18 16

MsXGhMJcjdrBH3)J

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

एक फ़ंक्शन को परिभाषित gकरता है जो जियोसाइटिंग करता है। एक प्रोग्राम के रूप में यह थोड़ा छोटा होगा यदि दूसरी स्ट्रिंग सिंगल लाइन है, लेकिन मल्टीलाइन इनपुट इसके लायक नहीं है:

sXwhMJcjdrBz3)J

सामान्य विचार यहां केस को जियोबिट्सियन स्ट्रिंग को शीर्षक देना था और इसे मूल स्ट्रिंग में जोड़ना था। फिर रिक्त स्थान पर विभाजित करें और प्रत्येक स्ट्रिंग के लिए, पहले अक्षर को लें और इसे उस स्ट्रिंग को मैप करें जो यह प्रतिनिधित्व करता है। इस तरह Xसे प्रत्येक शब्द का पहला अक्षर पूर्ण शब्द में बदल जाएगा।


क्या आपने अभी ... आउटगोल्फ डेनिस?
बोइजदार मारिनोव

@BojidarMarinov यदि आप डेनिस को किसी अन्य भाषा का उपयोग करके गिनते हैं, जिसमें एक बग आउटगोल्फ के रूप में था, तो हाँ;)
फ्राईमईएग्गमैन

2

पायथन 2, 83 78 बाइट्स

lambda w,s:''.join(c+w[(' '+w).find(' '+c.lower()):].split()[0][1:]for c in s)

Ideone पर इसका परीक्षण करें ।

यह काम किस प्रकार करता है

हम स्ट्रिंग s में सभी वर्ण c पर iterate करते हैं ।

हम शब्दों w के स्ट्रिंग के लिए एक स्थान तैयार करते हैं , फिर एक स्थान से पहले, निचली सी की घटना की खोज करते हैं।

  • यदि ऐसी घटना मौजूद है, findतो स्ट्रिंग में अंतरिक्ष के सूचकांक को वापस कर देगा ' '+w, जो w में c के सूचकांक से मेल खाता है ।

    w[...:]इस प्रकार , पहले अक्षर c के साथ शब्द से शुरू होने वाली w की पूंछ वापस आती है । रिक्त स्थान पर पूंछ को विभाजित करता है, पहले चंक (शब्द) का चयन करता है और इसके पहले अक्षर को निकालता है।split()[0][1:]

    पिछले परिणाम के लिए को तैयार करने के बाद , हम सही ढंग से कैस किए गए शब्द को प्राप्त करते हैं जो सी के साथ शुरू होता है ।

  • यदि कोई शब्द c से शुरू नहीं होता है , findतो -1 वापस आ जाएगा ।

    इस प्रकार, डब्ल्यूw[...:] के अंतिम वर्ण को पैदावार देता है , इसे एक सरणी में लपेटता है, रैपिंग को खोल देता है , और स्ट्रिंग से एकमात्र चरित्र को हटा देता है।split()[0][1:]

    ग को तैयार करने के बाद , हम सिंगलटन स्ट्रिंग प्राप्त करते हैं जिसका वर्ण c है , इसलिए पूरा ऑपरेशन एक no-op है।

अंत में, ''.joinसभी परिणामी तार को सम्‍मिलित करता है, एस के जियोबीटाइज्ड संस्‍करण को लौटाता है ।



1

CJam, 19 बाइट्स

lq\S/_32af.^+_:c\er

इसका परीक्षण यहां करें।

व्याख्या

l       e# Read first line of input (list of words).
q\      e# Read remaining input and swap with first line.
S/      e# Split around spaces.
_       e# Duplicate.
32af.^  e# Convert the first letter of each word to upper case by taking
        e# the element-wise XOR with the list [32].
+       e# Append the upper-cased words to the original ones.
_:c     e# Duplicate and convert each word to its first character.
\       e# Swap characters with words.
er      e# Transliteration, replacing each character with the corresponding word.

1

जावास्क्रिप्ट ईएस 6, 67 63 70 बाइट्स

g=>s=>s.replace(/\S/g,l=>l+(g.match(`\\b\\${l}(\\S+)`,'i')||[,""])[1])

फ़ायरफ़ॉक्स पर यह परीक्षण। बग मैं इसे पसंद कर रहा हूं

व्याख्या

function(gbarg, str) {
   return str.replace(/\S/g, function(chr) { // Replace non-whitespace w/...
        return chr + (
         gbarg.match(`\\b\\${l}(\\S+)`,'i')  // That word in the gbstr
        ||[,""])[1]                          // if not in gbstr, use blank str
   });
}

f("abracadabra")("1Dbw")लौटता है "1abracadabraDbracadabrababracadabrawbracadabra"
डेनिस

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