জিপ, জ্যাপ, জপ খেলুন


22

একটি সামান্য ইম্প্রোভ ওয়ার্ম আপ গেম রয়েছে যেখানে আপনি নিজেকে একটি বৃত্তে সাজান এবং চারপাশে জিপ, জ্যাপ এবং জপগুলি প্রেরণ করুন কোনও ব্যক্তির দিকে ইঙ্গিত করে এবং পরের শব্দটি ধারাবাহিকভাবে বলে, তারপর আপনারা সবাই গরম না হওয়া অবধি তারা একই কাজ করবে বা যাই হোক.

আপনার টাস্কটি এমন একটি প্রোগ্রাম তৈরি করা যা পরবর্তী শব্দটিকে একটি ইনপুট শব্দ দিয়ে ক্রমান্বয়ে দেয়। (জিপ -> জ্যাপ -> জপ -> জিপ) যেহেতু এই তিনটি শব্দ এবং ফায়ারগুলি যুক্ত করা যায় তার অনেকগুলি উপায় বলে, তাই আপনার প্রোগ্রামে কেস এবং চিঠির নকলটি অনুকরণ করতে হবে এবং প্রত্যয় বহন করতে হবে।

বিশদভাবে বলতে গেলে, আপনার ইনপুটটি এক বা একাধিক Zs, তারপরে এক বা একাধিক Is, As, বা Os (সমস্ত একই চিঠি), তারপরে এক বা একাধিক Ps, (এই পয়েন্ট পর্যন্ত সমস্ত অক্ষর মিশ্র ক্ষেত্রে হতে পারে) অনুসরণ করবে কিছু নির্বিচারে প্রত্যয় (যা খালি থাকতে পারে)। আপনি এর রান ছেড়ে দেওয়া উচিত Zs এবং Pপ্রত্যয় ঠিক হিসাবে গৃহীত গুলি, সেইসাথে, কিন্তু তারপর পরিবর্তন Iকরার জন্য গুলি Aএস, Aগুলি Oগুলি, অথবা Oকরার গুলি Iগুলি, প্রতিটি পদে পদে ক্ষেত্রে সংরক্ষণের।

উদাহরণ পরীক্ষার ক্ষেত্রে

zip         ==> zap
zAp         ==> zOp
ZOP         ==> ZIP
ZiiP        ==> ZaaP
ZZaapp      ==> ZZoopp
zzzzOoOPppP ==> zzzzIiIPppP
Zipperoni   ==> Zapperoni
ZAPsky      ==> ZOPsky
ZoPtOn      ==> ZiPtOn
zipzip      ==> zapzip
zapzopzip   ==> zopzopzip
zoopzaap    ==> ziipzaap

বিধি এবং নোট

  • আপনি ইনপুট এবং আউটপুট জন্য যে কোনও সুবিধাজনক অক্ষর এনকোডিং ব্যবহার করতে পারেন, তবে শর্ত থাকে যে এটি সমস্ত ASCII অক্ষর সমর্থন করে এবং এই চ্যালেঞ্জের আগে এটি তৈরি হয়েছিল।
  • আপনি ধরে নিতে পারেন ইনপুট শব্দটি জিপ, জ্যাপ বা জোপের কিছু বৈকল্পিক। অন্যান্য সমস্ত ইনপুটগুলি অনির্ধারিত আচরণের ফলাফল করে।
    • বৈধ ইনপুটগুলি রিজেক্সের সাথে সম্পূর্ণ মিলবে Z+(I+|A+|O+)P+.*(মিশ্র ক্ষেত্রে)

শুভ গল্ফিং!


2
জিপ -> এটি কী করে?
জোশুয়া

2
@ জোশুয়া বিবরণ অনুসারে এটি অবৈধ (দেখুন "সমস্ত একই চিঠি" )।
আরনাউল্ড

1
@ আরনাউল্ড: এবং জুপ্পাপের পরীক্ষার কেস বর্ণনার সাথে একমত নয়।
জোশুয়া

4
@ জোশুয়া কেন? এটি কেবল শীর্ষস্থানীয় zএবং প্রথমটির মধ্যে স্বরগুলির ক্ষেত্রে প্রযোজ্য p। প্রত্যয়টিতে কিছু থাকতে পারে।
২na

উত্তর:


9

জাভাস্ক্রিপ্ট (নোড.জেএস) ,  69 63 57  54 বাইট

s=>Buffer(s).map(c=>s|c%4<1?s=c:c+c*90%320%34%24-8)+''

এটি অনলাইন চেষ্টা করুন!

কিভাবে?

আমরা ইনপুট স্ট্রিং প্রক্রিয়া s অক্ষর দ্বারা অক্ষর।

আমরা পুনরায় ব্যবহার s একটি পতাকা হিসাবে: যত তাড়াতাড়ি একটি সাংখ্যিক মান এটা মধ্যে সংরক্ষিত হয়, আমরা জানি যে আমরা অন্য কিছু আপডেট করা উচিত নয়।

চিহ্নিত করার "p"(112) এবং "P"(80), আমরা সত্য যে তাদের হওয়া ASCII কোডের গুণিতক ব্যবহার 4 ও সুতো শুরুতে অন্যান্য বর্ণের ASCII কোড ( "z", "Z"এবং স্বরবর্ণ) নয়।

এএসসিআইআই কোড c দিয়ে একটি স্বরটি পাল্টানোর সময় এবং অপরিবর্তিত অবস্থায় এর পাল্টা n রূপান্তর করতে, আমরা নিম্নলিখিত ফাংশনটি ব্যবহার করি:zZ

n=c+((((90×c)mod320)mod34)mod24)8

 letter | ASCII code |  * 90 | % 320 | % 34 | % 24 | - 8 | new letter
--------+------------+-------+-------+------+------+-----+-----------------------
   'i'  |     105    |  9450 |  170  |   0  |   0  |  -8 | 105 -  8 =  97 -> 'a'
   'a'  |      97    |  8730 |   90  |  22  |  22  |  14 |  97 + 14 = 111 -> 'o'
   'o'  |     111    |  9990 |   70  |   2  |   2  |  -6 | 111 -  6 = 105 -> 'i'
   'z'  |     122    | 10980 |  100  |  32  |   8  |   0 | 122 +  0 = 122 -> 'z'
   'I'  |      73    |  6570 |  170  |   0  |   0  |  -8 |  73 -  8 =  65 -> 'A'
   'A'  |      65    |  5850 |   90  |  22  |  22  |  14 |  65 + 14 =  79 -> 'O'
   'O'  |      79    |  7110 |   70  |   2  |   2  |  -6 |  79 -  6 =  73 -> 'I'
   'Z'  |      90    |  8100 |  100  |  32  |   8  |   0 |  90 +  0 =  90 -> 'Z'

মন্তব্য

s =>                  // s = input string
  Buffer(s)           // convert it to a Buffer of ASCII codes
  .map(c =>           // for each ASCII code c in s:
    s |               //   if s is numeric
    c % 4 < 1 ?       //   or c is either 'p' or 'P':
      s = c           //     turn s into a numeric value and yield c
    :                 //   else:
      c +             //     update c
        c * 90 % 320  //     by applying the transformation function
        % 34 % 24     //     (see above)
        - 8           //
  ) + ''              // end of map(); coerce the Buffer back to a string

আপনি কিভাবে এই ফাংশনটি নিয়ে এসেছেন?
থমাস হিরশ

2
@ থমাসহিরশ এটি একটি নিষ্ঠুর-বাহিনী অনুসন্ধান কার্যক্রমে পাওয়া গেছে। প্রথম পদক্ষেপ (গুণ + প্রথম মডিউল) নিশ্চিত করে যে প্যারামিটারগুলি ছোট হাতের এবং বড় হাতের উভয়ের জন্য অভিন্ন ফলাফল দেয়। ২ য় ধাপ (পরবর্তী 2 টি মডিউল এবং বিয়োগ) সঠিক ডেল্টা মানগুলি সেখান থেকে প্রাপ্ত করা যায় কিনা তা পরীক্ষা করে।
আর্নৌল্ড

6

সি (জিসিসি) ,  81 ... 61 48  46 বাইট

@ গ্রিমিকে ধন্যবাদ 2 বাইট সংরক্ষণ করা

আমার জেএস উত্তর পোর্ট । ইনপুট স্ট্রিংটি পরিবর্তন করে আউটপুট।

f(char*s){for(;*++s%4;*s+=*s*90%320%34%24-8);}

এটি অনলাইন চেষ্টা করুন!

মন্তব্য

f(char * s) {       // f = function taking the input string s
  for(;             //   for each character *s in s:
    *++s % 4;       //     advance the pointer; exit if *s is either 'p' or 'P' (it's safe 
                    //     to skip the 1st character, as it's guaranteed to be 'z' or 'Z')
    *s +=           //     update the current character:
      *s * 90 % 320 //       apply a transformation formula that turns
      % 34 % 24     //       a vowel into the next vowel in the sequence
      - 8           //       while leaving 'z' and 'Z' unchanged
  );                //   end of for()
}                   // end of function


@ গ্রিমি চমৎকার ধরা, ধন্যবাদ! (আমি এক *++s%4পর্যায়ে চেষ্টা করেছিলাম তবে ফলস্বরূপ অপ্টিমাইজেশানটি উপেক্ষা করেছি ...)
আরনাউল্ড

1
আরও -3 বাইট । এটি আপনার জেএস উত্তরের ক্ষেত্রেও প্রযোজ্য।
গ্রিমি

@ গ্রিমি এটি আমার থেকে যথেষ্ট আলাদা, তাই আপনি এটি আলাদা উত্তর হিসাবে পোস্ট করতে চাইতে পারেন।
আর্নৌল্ড


5

রেটিনা 0.8.2 , 21 বাইট

iT`Io`A\OIia\oi`^.+?p

এটি অনলাইন চেষ্টা করুন! প্রথম পর্যন্ত চিঠিগুলি লিখিতভাবে লিখিত হয় p, যদিও zএবং pলিখিত লিখিত লিখিত লিখিত লিখিত অংশে নেই এবং প্রভাবিত হয় না। প্রথমটি Oউদ্ধৃত হয়েছে কারণ এটি সাধারণত প্রসারিত হয় 13567এবং দ্বিতীয়টি oউদ্ধৃত হয় কারণ এটি খুব যাদু; প্রতিবর্ণের প্রথম অংশে এটি অন্য স্ট্রিংয়ে প্রসারিত হয়। ফলে লিপ্যন্তর থেকে তাই হয় IAOIiaoiথেকে AOIiaoiতারপর ডুপ্লিকেট উৎস চিঠি ফলাফলগুলি সরানো হলেও IAOiaoকরতে AOIaoi




3

আর , 110 76 বাইট

-36 বাইট ক্রিলকে ধন্যবাদ

এই ফাংশনটি একটি স্ট্রিংয়ের একটি ইনপুট নেয়।

function(a)sub(s<-sub('z+(.+?)p.*','\\1',a,T),chartr('aioAIO','oaiOAI',s),a)

এটি অনলাইন চেষ্টা করুন!


1
আর এর টুকরো থেকে স্ট্রিং সংগ্রহ করা খুব দীর্ঘ হতে পারে ... তবে আপনি প্রথমে sআমাদের অনুবাদ করবেন এমন একটি স্ট্রিং বের করে এবং পরে এটি একটি
অনুলিপিযুক্ত

@ কিরিলল।, আহ যে চালাক কৌশলটি আমি সন্ধান করার চেষ্টা করছিলাম।
সিটি হল



2

জাভা (জেডিকে) , 52 বাইট

s->{for(int i=0;s[++i]%4>0;)s[i]^=s[i]%16*36%98%22;}

এটি অনলাইন চেষ্টা করুন!

  • গ্রিমির সি উত্তর বন্দর। তার উত্তর upvote নিশ্চিত করুন!





1

সি # (ভিজ্যুয়াল সি # ইন্টারেক্টিভ সংকলক) , 60 বাইট

n=>{for(int i=0;n[i]%4>0;)n[i]^=(char)(n[i++]%16*36%98%22);}

গ্রিমির সি উত্তর ভিত্তিক।

এটি অনলাইন চেষ্টা করুন!


1
এটি দুর্ভাগ্যক্রমে কাজ করে না কারণ এটি প্রত্যয়টিতে স্বরগুলিও প্রতিস্থাপন করে।
এমিগিনা

উপরে @ এমিগনা যেমনটি বলেছেন, aoiএটি প্রথম p/ এর আগে কেবলমাত্রগুলির পরিবর্তে সমস্ত- স্বরগুলিকে প্রতিস্থাপন করে P। গল্ফ করার জন্য একটি জিনিস: ("iao".IndexOf((char)(c|32))+1)%4হতে পারে-~"iao".IndexOf((char)(c|32))%4
কেভিন ক্রুইজসেন

1

সি / সি ++ (ভিসি ++ সংকলক) 192 বাইটস

এটি একটি বরং নিষ্পাপ চেষ্টা কিন্তু যাইহোক

void f(char*I){int c[]={-8,14,6},B=1,v[]={105,97,111},j=0;for(*I;*I>0&B;I++){if(*I==80|*I==112){B=0;break;}if(*I==90|*I==122){}else{for(j;j<3;j++){if(*I==v[j]|*I==v[j]-32){*I+=c[j];break;}}}}}

কিছুটা আরও পঠনযোগ্য সংস্করণ এটি

#include "stdafx.h"

void f(char * theString)
{
    signed int change[] = {'a'-'i','o'-'a','o'-'i'}; // add this to the vowel to get the next one
    char theVowels[] = {'i','a','o'};
    int breaker = 1;
    printf("Input %s\n",theString);
    for (int i = 0;(theString[i] != '\0') && breaker; i++)
    {
        switch (theString[i])
        {
            case 'Z': /*fall through*/
            case 'z': break;
            case 'P': /*fall through*/
            case 'p': breaker = 0;
                      break; 
            default: 
            {
                for (int j = 0; j < 3; j++)
                {
                    if ((theString[i] == theVowels[j]) || (theString[i]==(theVowels[j]-'a'+'A')))
                    {
                        theString[i] += change[j];
                        break;
                    }
                }
            }
            break;
        }

    }
    printf("Output %s\n",theString);
}
int main()
{
    char theString[]= "zzzzIIIIp0815-4711"; // a test string
    f(theString);
    return 0;
}


টিও গল্ফড: tio.run/…
der


0

05 এ বি 1 ই (উত্তরাধিকার) , 22 বাইট

l'pkIg‚£ć…iaoDÀ‚Du+`‡ì

এটি অনলাইনে চেষ্টা করুন বা সমস্ত পরীক্ষার কেস যাচাই করুন

অবশ্যই আরও কিছুটা গল্ফ করা যেতে পারে ..

এলিক্সির পুনর্লিখনের পরিবর্তে 05AB1E এর উত্তরাধিকার সংস্করণ ব্যবহার করুন, কারণ +ক্ষেত্রগুলি একই দৈর্ঘ্যের তালিকায় একত্রিত হয়, অন্যদিকে নতুন সংস্করণটির পরিবর্তে একটি জুড়ি-জিপ-জয়েন‚øJ প্রয়োজন ।

ব্যাখ্যা:

l                       # Lowercase the (implicit) input-string
                        #  i.e. "ZipPeroni" → "zipperoni"
 'pk                   '# Get the index of the first "p"
                        #  i.e. "zipperoni" → 2
    Ig                 # Pair it with the length of the entire input-string
                        #  i.e. 2 and "zipperoni" → [2,9]
       £                # Split the (implicit) input-string into parts of that size
                        #  i.e. "ZipPeroni" and [2,9] → ["Zi","pPeroni"]
        ć               # Extract head: push the head and remainder separately to the stack
                        #  i.e. ["Zi","pPeroni"] → ["pPeroni"] and "Zi"
         iao           # Push string "iao"
             DÀ         # Duplicate, and rotate it once towards the left: "aoi"
                       # Pair them up: ["iao","aoi"]
                Du      # Duplicate and transform it to uppercase: ["IAO","AOI"]
                  +     # Python-style merge them together: ["iaoIAO","aoiAOI"]
                   `    # Push both strings to the stack
                       # Transliterate; replacing all characters at the same indices
                        #  i.e. "Zi", "iaoIAO" and "aoiAOI" → "Za"
                     ì  # Prepend it to the remainder (and output implicitly)
                        #  i.e. ["pPeroni"] and "Za" → ["ZapPeroni"]

0

পিএইচপি, 30 বাইট

টিআইওর পক্ষে খুব সহজ:

<?=strtr($argn,oiaOIA,iaoIAO);

পাইপ হিসাবে চালান -nF। পিএইচপি 7.2 এর জন্য স্ট্রিং লিটারেলগুলি উদ্ধৃতিতে রাখুন।


এটি oiaপ্রথম p/ পূর্বে কেবল স্বরগুলির পরিবর্তে সমস্ত স্বরলিপি প্রতিলিপি Pকরে, তাই না?
কেভিন ক্রুইজসেন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.