एक तार को परिभाषित करें


371

इस चुनौती में, आपको रेगेक्स से मेल खाते एक स्ट्रिंग लेना चाहिए ^[a-zA-Z]+$या जो भी उचित हो (यदि आप चाहते हैं तो अपरकेस या लोअरकेस अक्षरों पर विचार नहीं करना चाहिए) (आप मान सकते हैं कि स्ट्रिंग काफी लंबी है, और सभी के लिए सही संरचना है संचालन), और एक और स्ट्रिंग का उत्पादन, पोटेश ( "Despite the constant negative press covfefe") द्वारा हाल ही में किए गए दादावादी ट्वीट के अंत में शब्द के समान उत्पादन किया गया ।

कैसे एक स्ट्रिंग covfefify करने के लिए:

सबसे पहले, पहला ध्वनि समूह (शब्दावलियों का निर्माण) प्राप्त करें।

आप यह कैसे करते हैं? कुंआ:

  • पहला स्वर खोजें ( yयह भी एक स्वर है)

      v
    creation
    
  • उसके बाद पहला व्यंजन खोजें

        v
    creation
    
  • बाकी स्ट्रिंग को हटा दें

    creat
    

वह आपका पहला ध्वनि समूह है।

अगला कदम:

ध्वनि समूह का अंतिम व्यंजन प्राप्त करें

t

और इसे आवाज वाले या ध्वनि रहित संस्करण से बदल दें। ऐसा करने के लिए, इस तालिका में पत्र ढूंढें। दिए गए अक्षर से बदलें (जो एक ही अक्षर हो सकता है)

b: p
c: g
d: t
f: v
g: k
h: h
j: j
k: g
l: l
m: m
n: n
p: b
q: q
r: r
s: z
t: d
v: f
w: w
x: x
z: s

तो, हम प्राप्त करते हैं

d

फिर, अगले स्वर को उस व्यंजन के बाद लें। आप मान सकते हैं कि यह व्यंजन स्ट्रिंग के अंत में नहीं है। इन दोनों को एक साथ मिलाएं, फिर इसे दो बार दोहराएं:

didi

इसे पहले ध्वनि समूह में सम्‍मिलित करें:

creatdidi

आप कर रहे हैं: स्ट्रिंग covfefified है, और अब आप इसे आउटपुट कर सकते हैं।

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

coverage: covfefe

example: exxaxa

programming: progkaka (the a is the first vowel after the g, even though it is not immediately after)
code: codtete

president: preszizi

यह , इसलिए कृपया अपना कार्यक्रम यथासंभव छोटा करें!


7
"x" को तकनीकी रूप से "gz" पर मैप करना चाहिए। "qu" को "gw" पर मैप करना चाहिए।
स्टीव बेनेट

2
यह सह-अस्तित्व की एक अवधारणा को निर्दिष्ट करता है, लेकिन मुझे लगता है कि डगलस हॉफस्टैटर (और मेलानी मिशेल) के स्ट्रिंग-रूपांतरण एनालॉग्स पर काम करते हैं, जैसे द्रव अवधारणाओं में एक संदर्भ उपयुक्त लगता है।
मंगल

58
140 से अधिक वर्णों के उत्तर अयोग्य घोषित किए जाने चाहिए
सैंडी गिफर्ड

12
दुर्भाग्य से ट्रम्पस्क्रिप्ट में ऐसा करना असंभव है :(

4
@ ThePlasmaRailgun यह एक मजाक था, क्योंकि ट्वीट्स में 140 अक्षर या उससे कम होने चाहिए।
फल तोड़ना

जवाबों:


91

जेली ,  58  57 बाइट्स

<TḢị
e€Øyµ¬TĖEÐḟḢṪ;ç¥T
ḣÇḢ⁸ÇịµḢØYiị“ßȷ%Hẹrȧq’œ?ØY¤⁾cgy;ẋ2

एक पूर्ण कार्यक्रम जो लोअरकेस वर्णों की सूची को स्वीकार करता है और परिणाम प्रिंट करता है।

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

कैसे?

<TḢị - Link 1, extract first value from y not less than x: number, x; list of numbers, y
     -                                                     e.g. 5, [3,4,7]
<    - x less than vectorised across y                             [0,0,1]
 T   - truthy indices                                              [    3]
  Ḣ  - head                                                             3
   ị - index into y                                                     7

e€Øyµ¬TĖEÐḟḢṪ;ç¥T - Link 2, indices of the letters to manipulate: list of characters, w
  Øy              - vowel+ yield = "AEIOUYaeiouy"                 e.g.  "smouching" 
e€                - exists in for €ach letter in w                       001100100
    µ             - monadic chain separation, call that v
     ¬            - not vectorised across v                              110011011
      T           - truthy indices                                       12  56 89
       Ė          - enumerate                      [[1,1],[2,2],[3,5],[4,6],[5,8],[6,9]]
         Ðḟ       - filter discard if:
        E         -   elements are equal                       [[3,5],[4,6],[5,8],[6,9]]
           Ḣ      - head                                        [3,5]
            Ṫ     - tail                                           5
                T - truthy indices of v                                    34  7
               ¥  - last 2 links as a dyad
              ç   -   call last link (1) as a dyad                         7
             ;    -   concatenate                                     5,7
                  -                                    ...i.e the indexes of 'c' and 'i'

ḣÇḢ⁸ÇịµḢØYiị“ßȷ%Hẹrȧq’œ?ØY¤⁾cgy;ẋ2 - Main link: list of characters, w
                                   -                             e.g.  "smouching"
 Ç                                 - call the last link (2) as a monad    [5,7]
ḣ                                  - head to index (vectorises)      ["smouc","smouchi"]
  Ḣ                                - head                             "smouc"
                                   -   implicit print due to below leading constant chain
   ⁸                               - link's left argument, w
    Ç                              - call the last link (2) as a monad    [5,7]
     ị                             - index into w                         "ci"
      µ                            - monadic chain separation, call that p
       Ḣ                           - head p                               'c'
        ØY                         - consonant- yield = "BCDFGHJKLMNPQRSTVWXZbcdfghjklmnpqrstvwxz"
          i                        - first index                          22
                          ¤        - nilad followed by link(s) as a nilad:
            “ßȷ%Hẹrȧq’             -   base 250 number = 1349402632272870364
                        ØY         -   consonant- yield = "BCDFGHJKLMNPQRSTVWXZbcdfghjklmnpqrstvwxz"
                      œ?           -   nth permutation  = "BCDFGHJKLMNPQRSTVWXZpctvkhjglmnbqrzdfwxs"
           ị                       - index into         (special case ->) 'c'
                           ⁾cg     - literal ['c','g']
                              y    - translate (change 'c's to 'g's)      'g'
                               ;   - concatenate with the headed p        "gi"
                                ẋ2 - repeat list twice                    "gigi"
                                   - implicit print ...along with earlier = smoucgigi

13
यह अद्भुत है ...
क्लांगेन

अतुल्य कार्य।
JF इसे

9
मैं जेली हूं। Upvoted।
दीप

6
यह सबसे अजीब प्रोग्रामिंग भाषा है जिसे मैंने कभी देखा है।
रयान

@ यह गोल्फ के लिए इरादा है।
फलों के जूल

61

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

सहेजे गए 4 बाइट्स GOTO 0 के लिए धन्यवाद

s=>([,a,b,c]=s.match`(.*?[aeiouy]+(.)).*?([aeiouy])`,a+(b=(a="bcdfgszkvtgp")[11-a.search(b)]||b)+c+b+c)

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


6
आप इस तरह से कुछ बाइट्स बचा सकते हैं:s=>([,a,b,c]=s.match`(.*?[aeiouy]+(.)).*?([aeiouy])`,a+(b=(a="bcdfgszkvtgp")[11-a.search(b)]||b)+c+b+c)
गोटो 0

@ GOTO0 धन्यवाद, अद्यतन।
अरनुलद

49

जेली , 45 39 बाइट्स

Øa“œṣ$b|0Ḃ’ṃ,Ṛ$yṫµfØyḢṭḢẋ2
e€ØyIi-‘ɓḣ;ç

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

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

e€ØyIi-‘ɓḣ;ç                Main link. Argument: s (string)

  Øy                        Vowels with y; yield "AEIOUYaeiouy".
e€                          Test each character in s for membership.
    I                       Increments; compute the forward differences of the
                            resulting array of Booleans.
     i-                     Find the first index of -1.
       ‘                    Increment this index to find the index of the first
                            consonant that follows a vowel.
                            Let's call this index j.
        ɓ                   Begin a new chain. Left argument: s. Right argument: j
         ḣ                  Head; yield the first j characters of s.
           ç                Call the helper link with arguments s and j.
          ;                 Concatenate the results to both sides.
Øa“œṣ$b|0Ḃ’ṃ,Ṛ$yṫµfØyḢṭḢẋ2  Helper link. Left argument: s. Right argument: j

Øa                          Alphabet; set the return value to “abc...xyz”.
  “œṣ$b|0Ḃ’                 Yield 7787255460949942. This is a numeric literal in
                            bijective base 250. The value of each digit matches its
                            1-based index in Jelly's code page.
           ṃ                Convert 7787255460949942 to base 26, using the digts
                            a = 0, b = 1, ..., z = 25.
                            This yields "bcdfkszgvtgp".
            ,Ṛ$             Pair the result with its reverse, yielding
                            ["bcdfkszgvtgp", "pgtvgzskfdcb"].
                ṫ           Call tail with arguments s and j, yielding the j-th and
                            all following characters of s.
               y            Translate the result to the right according to the
                            mapping to the left, i.e., replace 'b' with 'p', 'c'
                            with 'g', etc. 'g' appears twice in the first string
                            of the mapping; only the first occurrence counts.
                            Let's call the resulting string r.
                 µ          Begin a new chain. Argument: r
                  fØy       Filter; remove non-vowels from r.
                     Ḣ      Head; take the first vowel.
                       Ḣ    Head; take the first character/consonant of r.
                      ṭ     Tack; append vowel to the consonant.
                        ẋ2  Repeat the resulting string twice.

4
क्षमा करें, मित्र, ऐसा लग रहा है कि आप मेगा जेली प्रतिनिधि से छूट गए
विनाशकारी नींबू

tfw का उत्तर अत्यधिक सरलीकृत दिखता है, लेकिन वास्तव में यह वास्तव में अद्भुत है ... सरल सुंदर है
एरिक द आउटगेलर

31

CJam , 59 58 57 56 बाइट्स

q_{"aeiouy":V&,_T|:T^}#)/(_W>"cbdfkszgvtpg"_W%er@sV&0=+_

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

व्याख्या

q_                   e# Read the input and copy it.
{                    e# Find the index of the first char for which the following is true:
 "aeiouy":V          e#  Push "aeiouy" and store it in V.
 &,                  e#  Check if the current char is in the vowel string (0 or 1).
 _T|:T               e#  Copy the result and OR with T (T is initially 0), storing back in T.
 ^                   e#  XOR with the original result. This will be 1 for the first 
                     e#  consonant appearing after a vowel.
}#                   e# (end find)
)/                   e# Increment the index and split the string into chunks of that size.
(                    e# Pull out the first chunk.
_W>                  e# Copy it and get the last character (the consonant).
"cbdfkszgvtpg"_W%er  e# Transliterate the consonant to voiced/voiceless alternative.
@s                   e# Bring all the other split chunks to the top and join them together.
V&0=                 e# First char of the set intersection of that and the vowels.
                     e# (i.e. the first vowel in the second half)
+                    e# Concatenate the new consonant and the vowel.
_                    e# Duplicate the result of that.
                     e# Implicit output of stack contents.

2
सीजाम ने जेली की पिटाई की? : ओ (कम से कम, यह धड़कता है जेली जवाब हर कोई
उभारने

29

सी, 219 213 206 179 175 बाइट्स

#define p putchar
#define q(a)for(;a strchr("aeiouy",*s);p(*s++));
f(s,c,h)char*s;{q(!)q()p(*s);p(c="pgt vkh jglmn bqrzd fwx s"[*s-98]);p(h=s[strcspn(s,"aeiouy")]);p(c);p(h);}

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


* P = पुशर प्रथम पंक्ति के रूप में काम करता है?
k_g

4
क्षमा करें अयोग्य। एक ट्वीट में फिट नहीं हो सकता।
केयर्ड सिक्काहिंगाहिंग

@cairdcoinheringaahing यू सर गलत हैं (मुझे पता है कि यह 140 था जब आपने लिखा था कि)
स्टेन स्ट्रम


1
12 या तो बाइट्स को #defineएस और प्रीप्रोसेसर झंडे ( -D...) के साथ फ़ंक्शन को बदलकर बंद किया जा सकता है ।


18

PHP, 121 बाइट्स

$v=aeiouy;preg_match("#(.*?[$v]+([^$v])).*?([$v])#",$argn,$t);echo$t[1],$z=strtr($t[2].$t[3],bcdfgkpstvz,pgtvkgbzdfs),$z;

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


3
-2 बाइट्स:echo$t[1],$z=strtr($t[2].$t[3],bcdfgkpstvz,pgtvkgbzdfs),$z;
टाइटस

@ टिट्स मैंने उसके बारे में नहीं सोचा है। थैंक यू
जॉर्ग हल्सरमैन

$argnकुछ छोटे का नाम क्यों नहीं ? $a, उदाहरण के लिए - यह -3 बाइट्स है
टायलर सेबस्टियन

@TylerSebastian I में एक इनपुट वैरिएबल मौजूद होना चाहिए। हां, मैं एक फंक्शन बना सकता हूं, लेकिन अगर मैं इसे करता हूं तो तीन बाइट्स का उपयोग करते हुए बाइट काउंट
बढ़ाता हूं

आह ठीक है मैं भूल गया कि PHP कैसे कमांड लाइन आर्ग करता है - मैंने अभी देखा कि आपने इसे हेडर सेक्शन में परिभाषित किया था लेकिन यह महसूस करने में विफल रहा कि यह एक आरक्षित चर था।
टायलर सेबस्टियन

15

पायथ, 54 बाइट्स

L+hb?>F}RJ"aeiouy"<b2+hKtb*2+XhK"cgdsfbpvztkg")h@JKytb

यह एक फ़ंक्शन को परिभाषित करता है y, जो एक स्ट्रिंग की अपेक्षा करता है। इसे ऑनलाइन आज़माएं: टेस्ट सूट


14

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

import re
def f(x,k='aeiouy])'):b,c,v=re.findall(f'(.*?[{k}([^{k}.*?([{k}',x)[0];return b+c+(('bcdfgkpstvz'+c)['pgtvkgbzdfs'.find(c)]+v)*2

@ovs के लिए धन्यवाद 16 बाइट्स निकाले

गेबर फेकेट के लिए 1 बाइट धन्यवाद


2
आप एक वैरिएबल बना सकते हैं जिसका मूल्य है 'aeiouy]', हो सकता है कि कुछ बाइट्स को बचाएगा। इसके अलावा आप कुछ तारों को प्रतिस्थापन तारों से हटा सकते हैं क्योंकि वहां भी वही हैं।
गबोर फेकेट

2
मैं प्रतिस्थापन स्ट्रिंग से समान अक्षर नहीं निकाल सकता, क्योंकि यह एक होगा IndexError, और बचत aeiouy])किसी भी बाइट को नहीं बचाती है।
L3viathan

2
यदि आप कुछ बाहर खींचते हैं s='aeiouy])', तो आप उपयोग कर सकते हैं b,c,v=re.findall('(.*?[%s([^%s.*?([%s'%(s,s,s)। यह कम नहीं है, लेकिन समग्र रूप से इसे छोटा करने के तरीके की ओर ले जा सकता है।
जेरेमी वीरिच


3
एफ-स्ट्रिंग्स का उपयोग करने से 1 बाइट की बचत होगी: k='aeiouy])'औरf'(.*?[{k}([^{k}.*?([{k}'
गबोर फेकेट

14

जावा 8, 243 236 222 बाइट्स

s->{String q="[a-z&&[^aeiouy]]",a=s.replaceAll("(^"+q+"*[aeiouy]+"+q+").*","$1"),b="pgtvkhjglmnbqrzdfwxs".charAt("bcdfghjklmnpqrstvwxz".indexOf(a.charAt(a.length()-1)))+s.replaceAll(a+q+"*([aeiouy]).*","$1");return a+b+b;}

.replaceAllउन हिस्सों को फ़िल्टर करने के लिए कैप्चर समूहों के साथ regexes का उपयोग करता है जिन्हें हम नहीं चाहते हैं।

स्पष्टीकरण:

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

s->{ // Method with String parameter and String return-type
  // Temp String we use multiple times:
  String q="[a-z&&[^aeiouy]]",
   // Regex to get the first part (i.e. `creation` -> `creat` / `example` -> `ex`)
   a=s.replaceAll("(^"+q+"*[aeiouy]+"+q+").*","$1"), 
   // Get the trailing consonant and convert it
   b="pgtvkhjglmnbqrzdfwxs".charAt("bcdfghjklmnpqrstvwxz".indexOf(a.charAt(a.length()-1)))
   // Get the next vowel after the previous consonant from the input-String
    +s.replaceAll(a+q+"*([aeiouy]).*","$1");
  // Return the result:
  return a+b+b;
} // End of method

13

हास्केल , 143 141 138 137 136 बाइट्स

z h=elem h"aeiouy"
f i|(s,(m,c:x))<-span z<$>break z i,j:_<-filter z x,d<-"pgt.vkh.jglmn.bqrzd.fwx.s"!!(fromEnum c-98)=s++m++[c,d,j,d,j]

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


1
बहुत बढ़िया! nxएक-अक्षर के साथ बदलने पर 2 बाइट्स बचेंगे।
tomsmeding

एक और दो बाइट्स के बजाय गार्ड के zबाहर fऔर स्विच करने की घोषणा करना let: इसे ऑनलाइन आज़माएं!
लकोनी

2
और दो और संयोजन (s,v)<-break z i,(m,c:x)<-span z vकरके (s,(m,c:x))<-span z<$>break z i
लकोनी

letधन्यवाद के आगे उद्घाटन कोष्ठक लगाकर एक और दाढ़ी कर सकता है , धन्यवाद!
बरतानवेल

@ लिकोनी मुझे zबाहर निकलने के बारे में समझ नहीं है f?
बर्तवेल्ले

10

पायथन, 261 260 बाइट्स

def c(s,t='bpcgdtfvgksz'):
 q,r,t='aeiouy',range(len(s)),t+t[::-1]
 c=[i for i in r if i>[j for j in r if s[j]in q][0]and s[i]not in q][0]
 C=([t[2*i+1]for i in range(12)if s[c]==t[i*2]]or s[c])[0]
 return s[:c+1]+(C+s[[i for i in r if i>c and s[i]in q][0]])*2

एक गैर रेगेक्स, गूढ़ समाधान नहीं। बनाने में लगभग 20 मिनट लगे, और गोल्फ में एक घंटा अधिक।

यह शायद पूरे अजगर मानक पुस्तकालय की तुलना में अधिक सूची की समझ रखता है, ज्यादातर क्योंकि मैं रेगेक्स नहीं जानता ...

इसे ऑनलाइन आज़माएं! (टेस्टकेस के साथ)


8

रूबी , 90 बाइट्स

->x{x[/(.*?#{$v='[aeiouy]'}+.).*?(#$v)/];$1+($1[-1].tr('bcdfgkpstvz','pgtvkgbzdfs')+$2)*2}

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

इसे थोड़ा सा खोलना, हमारे पास कुछ समान है:

def covfefefify(x)
  v = '[aeiouy]'
  # Match x to a regular expression capturing:
  # Group 1:
  #  some characters (non-greedy)
  #  followed by some (greedy) non-zero number of vowels
  #  followed by exactly one character
  # Ungrouped:
  #  Some more (non-greedy) characters
  # Group 2
  #  Exactly one other vowel
  # By switching between greedy and non-greedy matches, we can capture longest and shortest vowel/consonant sequences without writing out all the consonants
  x[/(.*?#{v}+.).*?(#{v})/]
  # Glue it back together, replace the necessary consonants, duplicate where needed
  $1+($1[-1].tr('bcdfgkpstvz','pgtvkgbzdfs')+$2)*2
end

8

पायथन 2, 251 246 245 239 237 234 229 211 बाइट्स

पहले यहाँ प्रस्तुत।

def f(s):
  r=c='';n=0;w='aeiouy';a='bcdfghjklmnpqrstvwxz'
  for i in s:
    if n<2:r+=i
    if n<1and i in w:n=1
    if n==1and i in a:c='pgtvkhjglmnbqrzdfwxs'[a.index(i)];n=2
    if n==2and i in w:r+=c+i+c+i;break
  return r

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

साथी गोल्फरों ने मेरी मदद की:

 Destructible Lemon / Wheat Wizard - 5 bytes
 Hubert Grzeskowiak - 1 byte
 musicman523 - 16 bytes

2
साइट पर आपका स्वागत है! मैं देखता हूं कि आपने इंडेंटेशन के लिए टैब का उपयोग करने की कोशिश की है। यदि आप प्रत्येक टैब को एक स्थान से बदलते हैं, तो यह कार्यात्मक रूप से समान है और वास्तव में अतिरिक्त बाइट्स के बजाय ठीक से दिखाता है
विनाशकारी नींबू

4
जबकि डिस्ट्रक्टिबल लेमन ने जो कहा वह सही है, आप अपने कोड के पहले लेवल को सिंगल स्पेस और दूसरे टैब के साथ दूसरे लेवल पर इंडेंट करके अपने सोर्स में और भी बाइट्स बचा सकते हैं, इससे डिस्प्ले करना थोड़ा मुश्किल हो जाएगा, लेकिन आप 5 बाइट्स बचाओ।
श्रीकोटिलिज्म ओजैसिक

1
क्या लाइन 4 के अंत में अर्धविराम आवश्यक है?
ह्यूबर्ट ग्रेज्सकोविआक

1
@AitndSee मुझे लगता है कि आप अपनी कुछ शर्तों को छोटा कर सकते हैं। पहली: आप बदल सकते हैं not nकरने के लिए n<12 बाइट्स के लिए, जब से तुम जानते nनकारात्मक कभी नहीं होगा। इसके अलावा, आप बदल सकते हैं n==3करने के लिए n>2के बाद से आप जानते हैं कि nअधिक से अधिक कभी नहीं होगा 3। तुम भी उपयोग कर सकते हैं सशर्त, के लिए अजगर चाल पहले और दूसरे-पिछले छोटा करने के लिए आगे भी: n=[n,1][i in w and n<1]; r+=[0,r][n<2]
संगीतज्ञ ५२३

1
आप बदल सकते हैं r,v,c=('',)*3करने के लिए r=v=c='', के बाद से तार अपरिवर्तनीय हैं। मैं अन्य चालाक चाल का एक गुच्छा की कोशिश की है, लेकिन निराशा से वे वास्तव में लंबे समय के रूप में कर रहे हैं । इसके अलावा यह एक कोशिश यह ऑनलाइन जोड़ने के लायक हो सकता है ! अपनी पोस्ट का लिंक
संगीतकार ५२३

7

रूबी , 175 141 110 बाइट्स

->s{s=~/(.*?#{v='[aeiouy]'}+(#{c='[^aeiouy]'}))#{c}*(#{v})/;"#$1#{($2.tr('bcdfgkpstvz','pgtvkgbzdfs')+$3)*2}"}

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

Ungolfed

covfefify = -> (s) {
    from = 'bcdfgkpstvz'
    to   = 'pgtvkgbzdfs'

    vowels = "[aeiouy]"
    consonants = "[^aeiouy]"

    s.match(/(.*?#{vowels}+(#{consonants}))#{consonants}*(#{vowels})/)
    d = ($2.tr(from, to) + $3) * 2
    "#$1#{d}"
}

4
-34 बाइट्स के साथHash[*"bpcgdtfvgkkgpbsztdvfzs".chars]
एरिक डुमिनील

1
चूंकि इनपुट लगता है कि सभी वर्णमाला वर्णों की गारंटी है, c=[^aeiou]कम है। प्रत्येक चर के लिए पहले प्रक्षेप को -2 बाइट्स के लिए एक साथ असाइन करें /^(.*?${v='[aeiou]'}+(#{c='[^aeiou]})).../:। अंत में, $2.tr("b-z","pgtevkhijgl-obqrzdufwxys")हश समाधान के बजाय।
मूल्य स्याही

आप \g<n>प्रक्षेप के बजाय उप-संदर्भों ( ) का उपयोग करके 14 बाइट्स बचा सकते हैं , और @ ValueInk के [^aeiou]सुझाव का उपयोग करते हुए एक और 14 s=~/^(.*?([aeiouy])+([^aeiou]))\g<3>*(\g<2>)/:।
जॉर्डन

दरअसल, इसके साथ एक बग है programming-> progkaka, जिसे मैं समझ नहीं पा रहा हूं।
जॉर्डन

@ जोर्डन दुर्भाग्य से सबप्रीशन कॉल \g<3>$ 3 के मूल्य को अपडेट करता है, इसलिए हम इस शॉर्टकट का उपयोग नहीं कर सकते।
सूद

6

क्रिस्टल, 203 194 187 186 184 163 बाइट्स

o=""
ARGV[v=c=0].each_char{|a|r=/#{a}/
"aeiouy"=~r&&(v=x=1)||(c=v)
o+=a if c<2||x
c>0&&(x&&break||(o+=(i="pgtvkgbqrzdfs"=~r)?"bcdfgkpqrstvz"[i]: a))}
p o+o[-2..-1]

मुझे लगता है कि आप आसपास के c=vo+=<...>
पर्दों

5

MATLAB / ऑक्टेव - 159 158 बाइट्स

इनपुट स्ट्रिंग को मानते हुए निम्नलिखित कार्य सभी लोअरकेस हैं।

a=input('','s');m=ismember(a,'aeiouy');s='pgt vkh jglmn bqrzd fwx s';m(1:find(m,1))=1;i=find(~m,1);f=a(1:i);d=s(f(end)-97);m(1:i)=0;v=a(find(m,1));[f d v d v]

व्याख्या

  1. a = input('','s');: STDIN से एक स्ट्रिंग प्राप्त करता है और इसे चर में संग्रहीत करता है a
  2. m=ismember(a,'aeiouy');: एक बूलियन सरणी देता है जो स्ट्रिंग के aनिर्धारण के समान आकार है जहां स्वर स्थित हैं
  3. s='pgt vkh jglmn bqrzd fwx s';covfefeस्ट्रिंग के रूप में व्यंजन का मानचित्रण। यह तार 25 वर्णों का लंबा और स्वरों को छोड़ने वाला है। पहला स्थान जहां स्वर 'a'माना जाता है, हटा दिया जाता है, जबकि अन्य स्थान जहां स्वर स्थित होते हैं, उन्हें एक घने स्थान वर्ण के साथ रखा जाता है। ऐसा इसलिए है कि जब हम स्वर के बाद प्रदर्शित होने वाले पहले व्यंजन का निर्धारण करते हैं, तो हम व्यंजन को परिवर्तित शब्द के पहले घटक को निर्धारित करने के लिए इस स्ट्रिंग में एक वर्ण तक पहुंचने की स्थिति में बदल देंगे।
  4. m(1:find(m,1))=1: बूलियन सरणी की पहली स्थिति सेट करता है जहाँ हमने सभी स्वरों के रूप में पहला स्वर पाया है। यह तब होगा जब हम अगले स्वर के लिए खोज करेंगे जो पहले स्वर का अनुसरण करता है, हम इन पात्रों को अनदेखा करेंगे।
  5. i=find(~m,1);: स्ट्रिंग की पहली स्थिति को ढूँढता है जो पहले स्वर के बाद एक व्यंजन है।
  6. f=a(1:i): स्वर के बाद आने वाले पहले व्यंजन के बाद स्ट्रिंग को हटाता है। हम इस बिंदु तक स्ट्रिंग की पहली स्थिति से बस नमूना लेते हैं।
  7. d=s(f(end)-97);: जो शेष है उसे स्ट्रिंग का अंतिम वर्ण लें और हमें यह पता चलता है कि हमें लुकअप स्ट्रिंग से नमूना लेने की आवश्यकता है और वह वर्ण प्राप्त करता है। एक चरित्र और MATLAB या ऑक्टेव में एक संख्या घटाना एक ASCII कोड में चरित्र परिवर्तित करके पूर्णांक बनाने के लिए। इस स्थिति में, हम वर्ण के आरंभ में अंतिम वर्ण को वर्णमाला की शुरुआत में घटाते हैं जो हमें शुरुआत के सापेक्ष स्थिति प्रदान करता है। हालाँकि, b(98) द्वारा घटाए जाने के बजाय , हम घटाते हैं aक्योंकि MATLAB 0. के बजाय 'a'ASCII कोड 97 के साथ 1 द्वारा अनुक्रमण शुरू करता है।
  8. m(1:i)=0;: बूलियन मुखौटा लेता है और एक स्वर से झूठे का अनुसरण करते हुए पहली स्थिति से पहली व्यंजन तक इनपुट स्ट्रिंग में सभी वर्ण सेट करता है।
  9. v=a(find(m,1));: अगले स्वर को ढूँढता है जो इनपुट स्ट्रिंग से पहले व्यंजन का अनुसरण करता है।
  10. [f d v d v]: हमारे covfefeied स्ट्रिंग आउटपुट ।

उदाहरण रन

>> a=input('','s');m=ismember(a,'aeiouy');s='pgt vkh jglmn bqrzd fwx s';m(1:find(m,1))=1;i=find(~m,1);f=a(1:i);d=s(f(end)-97);m(1:i)=0;v=a(find(m,1));[f d v d v]
coverage

ans =

covfefe

>> a=input('','s');m=ismember(a,'aeiouy');s='pgt vkh jglmn bqrzd fwx s';m(1:find(m,1))=1;i=find(~m,1);f=a(1:i);d=s(f(end)-97);m(1:i)=0;v=a(find(m,1));[f d v d v]
example

ans =

exxaxa

>> a=input('','s');m=ismember(a,'aeiouy');s='pgt vkh jglmn bqrzd fwx s';m(1:find(m,1))=1;i=find(~m,1);f=a(1:i);d=s(f(end)-97);m(1:i)=0;v=a(find(m,1));[f d v d v]
programming

ans =

progkaka

>> a=input('','s');m=ismember(a,'aeiouy');s='pgt vkh jglmn bqrzd fwx s';m(1:find(m,1))=1;i=find(~m,1);f=a(1:i);d=s(f(end)-97);m(1:i)=0;v=a(find(m,1));[f d v d v]
code

ans =

codtete

>> a=input('','s');m=ismember(a,'aeiouy');s='pgt vkh jglmn bqrzd fwx s';m(1:find(m,1))=1;i=find(~m,1);f=a(1:i);d=s(f(end)-97);m(1:i)=0;v=a(find(m,1));[f d v d v]
president

ans =

preszizi

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

http://www.tutorialspoint.com/execute_octave_online.php?PID=0Bw_CjBb95KQMdjROYVR0aFNrWXM

जब आप शीर्ष पर स्थित एक्स्यूट्यूट बटन दबाते हैं, तो कुछ क्षण प्रतीक्षा करें, फिर वांछित स्ट्रिंग दर्ज करें। स्ट्रिंग को धीरे से दर्ज करें क्योंकि पाठ में प्रवेश करते समय देरी हो रही है।


5

क्लोजर, 182 156 चरस

#(let[v #{\a\e\i\o\u\y}p(partition-by v %)[s m[c][n]](if(v(first %))(cons[]p)p)z[(or((zipmap"bcdfgkpstvz""pgtvkgbzdfs")c)c)n]](apply str(concat s m[c]z z)))

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

(partition-by v "president")

का seq लौटाता है ((\p \r) (\e) (\s) (\i) (\d) (\e) (\n \t))

[s m [c] [n]] (if (v (first x)) (cons [] p) p)

में seq Destructures s=(\p \r), m=(\e), c=\s, n=\i

या "उदाहरण के लिए" यह है s=[], m=(\e), c=\x, n=\a

(apply str (concat s m [c] [(l c) n] [(l c) n]))

एक साथ टुकड़ों को समतल करके और इसे स्ट्रिंग करके आउटपुट स्ट्रिंग लौटाता है।

और फिर मैंने सिर्फ व्हाट्सएप को हटा दिया, जबकि मैं अभी भी इसे संकलित कर रहा था।

डी-uglified:

(defn covfefify [x]
  (let [vowel? #{\a\e\i\o\u\y}
        parts (partition-by vowel? x)
        [start mid [consonant] [last-vowel]] (if (vowel? (first x)) (cons [] parts) parts)
        lookup #(or ((zipmap "bcdfgkpstvz" "pgtvkgbzdfs") %) %)]
    (apply str (concat start mid [consonant] [(lookup consonant) last-vowel] [(lookup consonant) last-vowel]))))

PPCG में आपका स्वागत है, और पहला उत्तर! हमें उम्मीद है कि आप अधिक चुनौतियों में भाग लेंगे और मज़े करेंगे। :-)
ETHproductions

यदि आप किसी फ़ंक्शन को परिभाषित कर रहे हैं, तो इसका नाम संभवतः जितना संभव हो उतना छोटा होना चाहिए। आप cउदाहरण के लिए, मुख्य कार्य को कह सकते हैं । (हम उन अनाम फ़ंक्शंस की भी अनुमति देते हैं, जो कई भाषाओं में छोटे हैं; मुझे यकीन नहीं है कि वे क्लोज़र में हैं)। मुझे लगता है कि आपने अपने कोड के इंटीरियर में पहले ही सुधार कर लिया है, हालांकि, इसलिए शायद यहां बदलने की ज्यादा जरूरत नहीं है।

5

आर, 341 अक्षर

f=function(x){g=function(x,y)el(strsplit(x,y));a=g(x,'');v=g('aeiouy','');n=letters[-c(1,5,9,15,21,25)];l=data.frame(n,g('pgtvkhjglmnbqrzdfwxs',''));y=min(match(n,a)[which(match(n,a)>min(match(v,a),na.rm=T))]);m=l[which(l$n==a[y]),2];e<-a[-c(1:y)][min(match(v,a[-c(1:y)]),na.rm=T)];paste0(paste0(a[c(1:y)],collapse=''),m,e,m,e,collapse="")}

भयावह आर प्रयास, क्यों तार इतने कठिन हैं

पठनीय संस्करण:

f = function(x) {
  g = function(x, y)el(strsplit(x, y))
  a = g(x, '')
  v = g('aeiouy', '')
  n = letters[-c(1, 5, 9, 15, 21, 25)]
  l = data.frame(n, g('pgtvkhjglmnbqrzdfwxs', ''))
  y = min(match(n, a)[which(match(n, a) > min(match(v, a), na.rm = T))])
  m = l[which(l$n == a[y]), 2]
  e <-a[-c(1:y)][min(match(v, a[-c(1:y)]), na.rm = T)]
  paste0(paste0(a[c(1:y)], collapse = ''), m, e, m, e, collapse = "")
}

मेरा मानना ​​है कि आपकी गिनती बंद है - मैं 340 बाइट्स
टेलर स्कॉट


4

ब्लिट्ज़मैक्स, 190 बाइट्स

s$=Input()For i=1To s.Length
f="aeiouy".Contains(s[i-1..i])If f v=i If c Exit
If v And c|f=0c=i
Next
t$="bpdtfvgkcgsz"x$=s[c-1..c]r=t.Find(x)~1If r>=0x=t[r..r+1]
x:+s[v-1..v]Print s[..c]+x+x

स्टडिन से एक शब्द लेता है और परिणाम को स्टडआउट करता है। इनपुट शब्द को लोअरकेस माना जाता है और इसमें व्यंजन के बाद कम से कम एक स्वर शामिल होता है।

स्वरूपण और परिवर्तनशील घोषणाओं के साथ प्रोगाम का अधिक पठनीय संस्करण:

SuperStrict
Framework BRL.StandardIO

Local s:String = Input()
Local v:Int
Local c:Int

For Local i:Int = 1 To s.Length
    Local f:Int = "aeiouy".Contains(s[i - 1..i])
    If f Then
        v = i
        If c Then Exit
    End If
    If v And c | f = 0 Then c = i
Next

Local t:String = "bpdtfvgkcgsz"
Local x:String = s[c-1..c]
Local r:Int = t.Find(x) ~ 1
If r >= 0 Then x = t[r..r + 1]
x :+ s[v - 1..v]
Print s[..c] + x + x

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

ब्लिट्ज़मैक्स में कोई बिलियन रेगेक्स कार्यक्षमता या समान नहीं है, इसलिए इनपुट लूप के वर्णों पर पुनरावृति करने के लिए एक लूप का उपयोग किया जाता है जब तक कि यह कम से कम एक व्यंजन की एक श्रृंखला के बाद एक स्वर नहीं मिलता है। चर सी उन व्यंजन के अंतिम की स्थिति को संग्रहीत करता है, जो कि स्वर का है। लूप यह देखना जारी रखता है कि क्या श्रृंखला के बाद एक और स्वर है और यदि हां, तो v तदनुसार अपडेट किया गया है। फिर सी में व्यंजन को स्ट्रिंग "bpdtfvgkcgsz" में देखा जाता है, जो प्रतिस्थापन तालिका के रूप में कार्य करता है। यदि व्यंजन किसी भी स्थिति में तालिका में पाया जाता है, तो वह स्थिति 1 के साथ XOR-ed है और परिणामी स्थिति में वर्ण इसके प्रतिस्थापन के रूप में उपयोग किया जाता है। XOR ऑपरेशन 0 में 1, 2 में 3, 4 में 5 आदि हो जाता है और इसके विपरीत, ताकि b को p, d के साथ t और इतने पर स्वैप किया जा सके। अंत में, मूल स्ट्रिंग को c,

उदाहरण के परिणाम:

कवरेज covfefe

निर्माण क्रिएटिडी

प्रोग्रामिंग प्रोगाकाका

मूर्खता बेवकूफी

ब्लाह ब्लाहा


ब्लिट्जमैक्स रेपो से लिंक?
विनाशकारी नींबू

@DestructibleLemon BlitzMax को मुख्य रूप से शौकिया गेम डेवेलोपमेंट के लिए एक भाषा के रूप में बनाया गया था और एक मालिकाना संकलक पैसे के लिए बेचा गया था। हालांकि अब यह मुफ़्त है और यहाँ से उपलब्ध है , मेरा मानना ​​है कि कंपाइलर अभी भी खुला स्रोत नहीं है। एक वैकल्पिक कार्यान्वयन ( यहां रेपो , यहां बनाता है ) मौजूद है, जो कि "गैर-सख्त" सेटिंग की कमी के कारण उपरोक्त कोड के केवल ungolfed संस्करण को चलाएगा, जो चर घोषणाओं को छोड़ने की अनुमति देता है।
फायरबॉलस्टारफिश

सूचकांक पर XOR का चतुर उपयोग - मैं शायद उस दिन का उपयोग करूंगा। धन्यवाद।
AI ब्रेवेलरी

4

पर्ल, 71 बाइट्स

s#[aeiouy]+(.)\K.*?([aeiouy]).*#"$1$2"=~y/bcdfgkpstvz/pgtvkgbzdfs/rx2#e

साथ ही चलाएं perl -pe। पिछले पर्ल समाधान की तुलना में कुछ बाइट्स कम हैं। निश्चित रूप से मुझे वहां से भी कुछ प्रेरणा मिली।


4

05AB1E , 101 104 88 बाइट्स

-16 बाइट्स ओकेक्स के लिए धन्यवाद

मैं किसी तरह उम्मीद करता हूं कि इसे और बेहतर तरीके से किया जा सकता है ।

žOÃćIsk>[DIs£¤žPså#\>]s[DIsèDžOså#\>]ŠŠ"bpcgdtfvgkhhjjkgllmmnnpbqqrrsztdvfwwxxzs"S2ôDí«ø`Šs¤sŠksŠèsŠì2׫

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

व्याख्या

                  Argument: s
žOÃ0èk            Get index of first vowel in s
>[DIs£¤žPså#\>]   Increment index and split s until last character of substring is a consonant
s[DIsèDžOså#\>]   Increment index an get character at index in s until character is a vowel
ŠŠ                Rearrange stack
.•7¶ëÒ—Öb´ƒ≠Ä“šʒƵJ^ÝV“Îpи•S2ôDí«ø`   Prepare character substitution map
Šs                Rearrange stack
¤                 Last character of substring
sŠ                Rearrange stack (yes, again)
k                 Index of last character in substitution key list
sŠ                Rearrange stack (it won't stop)
è                 Character at index in character substitution value list
sŠ                Rearrange stack (ONE LAST TIME)
ì2׫              Prepend substitution consonant before vowel, duplcicate and concatenate with the substring from the very beginning

आप बदल सकते हैं "bpcgdtfvgkhhjjkgllmmnnpbqqrrsztdvfwwxxzs"के साथ .•7¶ëÒ—Öb´ƒ≠Ä“šʒƵJ^ÝV“Îpи•15 बाइट्स को बचाने के लिए
Okx

तुम भी जगह ले सकता है žOÃćIskके साथ žOÃ0èkएक और बाइट को बचाने के लिए।
ओकेक्स

@ ओक्स मुझे लगता है कि मुझे वास्तव में कुछ स्ट्रिंग संपीड़न तकनीकों को सीखने की आवश्यकता है। धन्यवाद!
कलसोवरस

@kalsowerus मुझे पता है कि यह एक समय हो गया है, लेकिन आप अपने जवाब से इस तरह से 8 बाइट्स गोल्फ कर सकते हैं: žOÃнk>[DIs£¤žPså#\>]©s[DIsèDžOså#\>]s\.•7¶ëÒ—Öb´ƒ≠Ä“šʒƵJ^ÝV“Îpи•S2ôDí«ø`®θkèìDJ इसे ऑनलाइन आज़माएं। मैंने मुख्य रूप से एक चर का उपयोग करके सभी स्वैप और ट्रिपल-स्वैप से छुटकारा पा लिया। और हो सकता है н, और मैं बदल दिया है 2׫साथ DJसाथ पूरे ढेर शामिल होने के लिए। पुनश्च: मैंने एक अलग तकनीक का उपयोग करके 55 बाइट्स 05AB1E उत्तर भी पोस्ट किया है। (जिसमें 05AB1E में बेहतर समझ के लिए एक लिंक भी शामिल है।: D)
केविन क्रूज़सेन

3

क्रिस्टल, 130 बाइट्स

c=/[aeiouy]/
x,y,z=ARGV[0].partition /[^aeiouy]*#{c}*/
k=z[0]
b=((i="pgtvkgbqrzdfs"=~/#{k}/)?"bcdfgkpqrstvz"[i]: k)+z[c]
p y+k+b*2

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

c = /[aeiouy]/

पहले स्वर को खोजने के लिए एक regex स्टोर करें c

x, y, z = ARGV[0].partition /[^aeiouy]*#{c}*/

पहले तर्क को तीन भागों में विभाजित करें {"", पहले स्वर के बाद पहले व्यंजन के पहले एक अक्षर तक स्ट्रिंग करें, स्ट्रिंग के बाकी} और तत्वों में से प्रत्येक को x, y और z में संग्रहीत करें।

k = z[0]

पहले चरित्र, प्रासंगिक व्यंजन प्राप्त करें।

i = "pgtvkgbqrzdfs" =~ /#{k}/

बाएं स्ट्रिंग के अंदर व्यंजन का सूचकांक प्राप्त करें या nil

b = ((i = ...) ? "bcdfgkpqrstvz"[i] : k) + z[c]

यदि iऐसा नहीं है nil, तो इस इंडेक्स का उपयोग दूसरी स्ट्रिंग (एक गोल्फ हैश की तरह) के लिए करें।

यदि iहै nil, तो मूल चरित्र का उपयोग करें।

अगले, पहले स्वर को जोड़ दें z

p y + k + (b * 2)

अंत में, पहले रेगेक्स से पहला भाग y, पहला व्यंजन kऔर पिछले गणना स्ट्रिंग से दो गुना प्रिंट करें b

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



2

लूआ, 164 157 बाइट्स

w=arg[1]
i,j,a,b=w:find('[aeiouy]+([^aeiouy]+)(.)')
print(w:sub(1,j-#a)..(('pgtvkhjglmnbqrzdfwxs'):sub(('bcdfghjklmnpqrstvwxz'):find(a:sub(1,1)))..b):rep(2))

संपादित करें 1: व्यंजन के बाद किसी भी वर्ण की तलाश में 7 बाइट्स निकाले (रीगेक्स देखें)

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

यह कार्यक्रम सीएलआई तर्क में एक स्ट्रिंग लेता है और इसके covfefied संस्करण को प्रिंट करता है।

यह एक कोड गोल्फ के लिए मेरा पहला सबमिशन है! मैंने दूसरों के बारे में विस्तार से जाँच नहीं की, इसलिए मुझे कुछ सामान्य अनुकूलन याद आ गए (और कुछ जाल में गिर गए)। मैंने लुआ का उपयोग किया क्योंकि मैं इस छोटी सी भाषा को पसंद करने के लिए बढ़ गया हूं, और मैंने एक रेगीक्स खोजने की कोशिश की जो मेरी आवश्यकताओं के अनुकूल है।

यहां एक क्लीनर संस्करण है, एक फ़ंक्शन का उपयोग करके (मेरा इरादा एक का उपयोग करना है, लेकिन Lua में कीवर्ड बहुत लंबे हैं!)।

function covfefy(word)
  i, j, a, b = word:find('[aeiouy]+([^aeiouy]+)(.)')

  -- 'a' is one or several consonants following the first vowel, b is the first vowel after that
  -- 'i' is the index of the beginning of 'a', 'j' the index of 'b'

  cov = word:sub(1, j - #a)

  -- Look for the first letter of 'a' in the voiced/voiceless table
  f = ('pgtvkhjglmnbqrzdfwxs'):sub(('bcdfghjklmnpqrstvwxz'):find(a:sub(1, 1)))

  return cov .. (f .. b):rep(2)
end

कुछ प्रतिक्रिया देने के लिए स्वतंत्र महसूस करें :)

नोट: यदि आप सोच रहे हैं, तो यह MoonScript का उपयोग करके 149 बाइट्स लंबा है!


2

जावास्क्रिप्ट (ईएस 5), 237 229 बाइट्स

function(s){r=['aeiouy','bcdfgkpstvz','pgtvkgbzdfs']i=0,p=''while(p+=s[i],r[0].indexOf(s[i++])<0);while(p+=s[i],~r[0].indexOf(s[i++]));b=s[i-1];while(r[0].indexOf(s[i++])<0);c=r[1].indexOf(b)d=((~c)?r[2][c]:b)+s[i-1]return p+d+d}

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

शायद सबसे अधिक गोल्फ नहीं है, लेकिन यह ईएस 5 है।

हाल ही में एक बग तय किया। उदाहरण आउटपुट:

creation->creatdidi
coverage->covfefe
example->exxaxa
programming->progkaka
code->codtete
president->preszizi

2

sed, 106 (105 + 1) बाइट्स

यह -Eध्वज के साथ सीड है , जो स्पष्ट रूप से एक बाइट के लिए मायने रखता है।

s/([aoeuiy][^aoeuiy])[^aoeuiy]*(.).*/\1\2/
h
s/.*(..)/\1\1/
y/bcdfgkpstvz/pgtvkgbzdfs/
x
s/.$//
G
s/\n//g

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


2

सी #, 584 581 बाइट्स

-3 बाइट्स डिस्ट्रक्टिबल लेमन के लिए धन्यवाद

कोड गोल्फ पर और सामान्य रूप से स्टैक एक्सचेंज पर यह मेरा पहला सबमिशन है। मुझे पता है कि सी # एक महान गोल्फ भाषा नहीं है और यह शायद पूरी तरह से अनुकूलित नहीं है, लेकिन मैं इसे एक शॉट देना चाहता था: पी। किसी भी सुझाव का स्वागत है!

गोल्फ संस्करण:

namespace System{class B{static void Main(string[]args){var s="creation";var t="aeiou";int i=0,j=0,l=s.Length;char c=' ',f=' ';for(int x=0;x++<l;){if(t.IndexOf(s[x])>=0){i=x;break;}}for(int x=i;x++<l;){if(!(t.IndexOf(s[x])>=0)){j=x;c=s[x];for(int y=x;y++<l;){if (t.IndexOf(s[y])>=0){f=s[y];goto W;}}}}W:switch(c){case'b':c='p';break;case'c':c='g';break;case'd':c='t';break;case'f':c='v';break;case'g':c='k';break;case'k':c='j';break;case'p':c='b';break;case's':c='z';break;case't':c='d';break;case'v':c='f';break;case'z':c='s';break;}Console.Write(s.Substring(0,l-i-1)+c+f+c+f);}}}

पठनीय संस्करण:

namespace System
{
    class B
    {
        static void Main(string[] args)
        {
            var s = "creation";
            var t = "aeiou";
            int i = 0, j = 0, l = s.Length;
            char c = ' ', f = ' ';
            for (int x = 0; x++ < l; )
            {
                if (t.IndexOf(s[x]) >= 0)
                {
                    i = x; break;
                }
            }
            for (int x = i; x++ < l;)
            {
                if (!(t.IndexOf(s[x]) >= 0))
                {
                    j = x; c = s[x];
                    for (int y = x; y++ < l;)
                    {
                        if (t.IndexOf(s[y]) >= 0)
                        {
                            f = s[y];
                            break;
                        }
                    }
                }
            }
            switch (c)
            {
                case 'b': c = 'p';
                    break;
                case 'c': c = 'g';
                    break;
                case 'd': c = 't';
                    break;
                case 'f': c = 'v';
                    break;
                case 'g': c = 'k';
                    break;
                case 'k': c = 'j';
                    break;
                case 'p': c = 'b';
                    break;
                case 's': c = 'z';
                    break;
                case 't': c = 'd';
                    break;
                case 'v': c = 'f';
                    break;
                case 'z': c = 's';
                    break;
            }
            Console.Write(s.Substring(0, l - i - 1) + c + f + c + f);
        }
    }
}

1
मैं कोई विशेषज्ञ नहीं हूँ, लेकिन मुझे लगता है कि आप लूप के लिए तुलनित्र में वृद्धि को जोड़ सकते हैं, अर्थात् x++ < l, या कुछ और (शायद l > x++अगर पहले काम नहीं करता है)। हालांकि यकीन नहीं है
विनाशकारी नींबू

@DestructibleLemon टिप के लिए धन्यवाद!
ब्रैंडन हाओ

2

स्माइलबासिक 3, 195 बाइट्स

इस प्रश्न के लिए बहुत देर हो चुकी है, लेकिन मैं स्माइलबासिक 3 के लिए अच्छी चुनौती का विरोध कैसे कर सकता हूं? एक अनुक्रम पर पुनरावृत्ति या एक स्ट्रिंग में हेरफेर करने जैसी विशेषताएं अन्य भाषाओं की तरह काफी मजबूत नहीं हैं, इसलिए यह जितना संभव हो उतना छोटा करने के लिए एक चुनौती है। मान लें कि शब्द UPPERCASE हैं।

V$="AEIOUY
LINPUT W$REPEAT I=I+1UNTIL.<=INSTR(V$,W$[I-1])&&.>INSTR(V$,W$[I])J=I
WHILE.>INSTR(V$,W$[J])J=J+1WEND?LEFT$(W$,I+1)+("PGTVKHJGLMNBQRZDFWXS"[INSTR("BCDFGHJKLMNPQRSTVWXZ",W$[I])]+W$[J])*2

विस्तृत विवरण यहाँ!


2

05AB1E , 55 बाइट्स

η.ΔžOSåàyžPSÅ¿à*}ÐIsKžOÃнsθU.•gÍĆdQ¸G•SDXåiÂXQÏθë\X}ìDJ

इसे ऑनलाइन आज़माएं या सभी परीक्षण मामलों को सत्यापित करें

स्पष्टीकरण:

η                        # Suffixes of the (implicit) input
                         #  i.e. "creation" → ["c","cr","cre","crea","creat","creati","creato","creatio","creation"]
        }              # Find the first for which the following is truthy:
   žO                    #  Push vowels (including y): "aeiouy"
     S                   #  Convert it to a list of characters: ["a","e","i","o","u","y"]
      å                  #  Check for each if they're in the current (implicit) suffix
                         #   i.e. "creat" → [1,1,0,0,0,0]
       à                 #  Pop and push the max (basically check if any are truthy)
                         #   i.e. [1,1,0,0,0,0] → 1
   y                     #  Push the suffix again
    žP                   #  Push the consonants (excluding y): "bcdfghjklmnpqrstvwxz"
      S                  #  Convert to a list of characters: ["b","c","d","f","g","h","j","k","l","m","n","p","q","r","s","t","v","w","x","z"]
       Å¿                #  Check for each if the suffix ends with it
                         #   i.e. "creat" → [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0]
         à               #  Pop and push the max (basically check if any are truthy)
                         #   i.e. [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0] → 1
   *                     #  Check if both are truthy
                         #   i.e. 1 and 1 → 1
           Ð             # Triplicate the found suffix
            I            # Push the input
             s           # Swap the top two items on the stack
                         #  i.e. stack contains now: "creat","creat","creation","creat"
K                        # Remove the suffix from the input
                         #  i.e. "creation" and "creat" → "ion"
 žOÃ                     # Only leave the vowels
                         #  i.e. "ion" → "io"
    н                    # Pop and push the first character
                         #  i.e. "io" → "i"
s                        # Swap again so the prefix is a the top of the stack again
 θ                       # Pop and push the last character
                         #  i.e. "creat" → "t"
  U                      # Pop and store it in variable `X`
   .•gÍĆdQ¸G            # Push string "bcdfkszgvtgp"
             S           # Convert to list of characters: ["b","c","d","f","k","s","z","g","v","t","g","p"]
              D          # Duplicate it
               Xåi       # If `X` is in this string:
                  Â      #  Bifurcate the list (short for Duplicate & Reverse copy)
                         #   i.e. ["b","c","d","f","k","s","z","g","v","t","g","p"]
                         #   → ["p","g","t","v","g","z","s","k","f","d","c","b"]
                   XQ    #  Check if they're equal to variable `X`
                         #   i.e. `X` = "t" → [0,0,1,0,0,0,0,0,0,0,0,0]
                     Ï   #  Only keep the truthy values
                         #   i.e. ["b","c",...,"g","p"] and [0,0,1,0,0,0,0,0,0,0,0,0]
                         #    → ["d"]
                      θ  #  Pop and push the last one
                         #   i.e. ["d"] → "d"
                 ë       # Else:
                  \      #  Discard the duplicate list from the stack
                   X     #  And push variable `X` again
                 }       # Close the if-else
                  ì      # Prepend the second character in front of the first
                         #  i.e. "d" and "i" → "di"
                   D     # Duplicate it
J                        # Join the stack together (and output implicitly)
                         #  i.e. "creat" and "di" and "di" → "creatdidi"

मेरा यह 05AB1E टिप्स देखें (अनुभाग तार शब्दकोश का हिस्सा नहीं संपीड़ित करने के लिए कैसे? ) को समझने के लिए क्यों .•gÍĆdQ¸G•है "bcdfkszgvtgp"

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