উন্নত সিজার পিগ ল্যাটিন সাইফার


32

সিজার সাইফারের সমস্যাটি হ'ল ফলশ্রুতিযুক্ত শব্দগুলি প্রায়শই অপ্রকাশ্য হয়। পিগ ল্যাটিনের সমস্যাটি হ'ল এটি ডিকোড করা সহজ। কেন তাদের একত্রিত করবেন না?

ইনপুট

২ english টি ইংরেজী অক্ষর সমন্বিত একটি শব্দ।

আউটপুট

প্রথমে বর্ণের প্রতিটি ব্যঞ্জনবর্ণকে বর্ণমালার পরবর্তী ব্যঞ্জনবর্ণে পরিবর্তন করুন। সুতরাং, খ সি তে যায়, ডি চ এ চলে যায়, এবং জে বি তে যায়। তারপরে বর্ণের প্রতিটি স্বরকে পরবর্তী স্বরতে পরিবর্তন করুন (আপনি একটিতে যান) সর্বশেষে, কেবলমাত্র শব্দের প্রথম অক্ষরটি যদি ব্যঞ্জনবর্ণ হয় তবে সেই বর্ণটিকে শব্দের শেষে সরিয়ে নিয়ে শব্দের শেষে "আই" যুক্ত করুন।

উদাহরণ:

cat -> evday  
dog -> uhfay   
eel -> iim
  • এটি , তাই সংক্ষিপ্ততম কোডটি জয়ী।
  • কেস কোন ব্যাপার না।
  • স্ব, যেগুলি ব্যবহৃত হবে তা হ'ল এ, ই, আই, ও, এবং ইউ

2
না, তবে আপনি চাইলে পারেন
qazwsx

6
পিপিসিজিতে আপনাকে স্বাগতম! খুব সুন্দর চ্যালেঞ্জ, স্পষ্টভাবে উপস্থাপিত।
জোনাথন অ্যালান

6
প্রস্তাবিত পরীক্ষার কেস:z → bay
আর্নল্ড

1
জট ওট উইসজ ওপিজিটভোফ ডুপদিকভ ক্যাভ ও ফু পুভ ভিজপল ওভ জিমক্ট এক্সভজ ভিজি ইকমভজ ভি কিসুপুয়াপদি ভিজি এক্সসফটভে
শ্যাডো

4
পরীক্ষা ক্ষেত্রে প্রস্তাবিত: the → jivay? (এটি, যদি শব্দটি একাধিক ব্যঞ্জনবর্ণ দিয়ে শুরু হয়, তবে আমরা কি কেবল তাদের মধ্যে
একটিটিকে

উত্তর:


3

স্ট্যাক্স , 20 বাইট

ù≥±╘├*Lâ■8O±âΓ║Θæ%º•

এটি চালান এবং এটি ডিবাগ করুন

ব্যাখ্যা

Vc:tVv:tBcVc#{sL"ay"+}ML             #Full program, unpacked, implicit input
Vc:t                                 #Push consonants and ring translate input
    Vv:t                             #Push vowels and ring translate input
        BCvc#                        #Push first letter and tail of word, find number 
                                     #of occurrences to consonants
             {sL"ay"+}M              #If truthy (word starts with consonant)
                                     #swap stack, listify, add "ay"
                       L             #Listify stack (combines words that start with vowel)

আমি কয়েকটি পুনরাবৃত্তির মধ্য দিয়ে গেলাম এবং অবশেষে এটি 20 এ নেমে এসেছি My আমার আসল সমাধানটি ছিল 53 বাইট।



6

আর , 86 85 বাইট

সহজ উপায়. chartrকমনীয় এবং দরকারী সম্পত্তি এটি অক্ষরের রেঞ্জগুলি নির্দিষ্ট করতে পারে যা কয়েকটি বাইট সংরক্ষণ করে।

@ জিবি এর রুবি সমাধানের অনুবাদগুলির স্ট্রিং চুরি করে -1 বাইট - এটি আপভোট করুন!

function(s)sub("^([^aeiou])(.*)","\\2\\1ay",chartr('zb-yadehinotu','b-zefijopuva',s))

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


5

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

s->{String r="",a="aeiouabcdfghjklmnpqrstvwxyzb",c=s.split("")[0];s=a.indexOf(c)>5?s.substring(1)+c+"ux":s;for(var d:s.split(""))r+=a.charAt(a.indexOf(d)+1);return r;}

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

ক্রেডিট




4

নোড.জেএস 10.9.0 , 121 116 বাইট

নিম্ন ক্ষেত্রে ইনপুট স্ট্রিং আশা করে।

s=>(v=n=>2130466>>n&1)((a=Buffer(s).map(n=>(g=i=>v(n=n%61?n+1:97)^i?g(i):n)(v(n))))[0],a+='')?a:a.slice(1)+a[0]+'ay'

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

স্বর চিহ্নিত করা

বনাম

2130466 = 000001000001000001000100010
               ^     ^     ^   ^   ^
          zyxwvutsrqponmlkjihgfedcba-

এবং করে:

(2130466 >> n) & 1

এন

যাক shiftCount কিন্তু সব আউট মাস্কিং ফল অন্তত উল্লেখযোগ্য 5 বিট হতে rnum , যে কম্পিউট rnum & 0x1F।

মন্তব্য

s =>                      // s = input string
  ( v = n =>              // v = helper function taking n = ASCII code in [97..122]
    2130466 >> n & 1      //     and returning 1 if the corresponding character is a vowel
  )                       //     or 0 otherwise (see the previous paragraph)
  (                       // this statement will ultimately invoke v on a[0]
    ( a = Buffer(s)       //   convert s to a Buffer, holding ASCII codes
      .map(n =>           //   for each ASCII code n in there:
        ( g = i =>        //     g = recursive function taking i = vowel flag
          v(              //       update n and invoke v on the new value:
            n = n % 61 ?  //         if n is less than 122 (meaning less than 'z'):
              n + 1       //           increment n
            :             //         else:
              97          //           wrap around by setting n to 97 (meaning 'a')
          ) ^ i ?         //       if v(n) is not equal to i:
            g(i)          //         do recursive calls until it is
          :               //       else:
            n             //         stop recursion and return the new n
        )(v(n))           //     initial call to g with i = v(n)
      )                   //   end of map()
    )[0],                 //   invoke v on a[0]
    a += ''               //   coerce the updated Buffer back to a string
  ) ?                     // if a[0] is a vowel:
    a                     //   return the string as-is
  :                       // else:
    a.slice(1) + a[0]     //   move the leading consonant to the end
    + 'ay'                //   and append the 'ay' suffix

4

পাইথন 2 , 153 121 110 99 91 বাইট

lambda s:[s[1:]+s[0]+"ux",s][s[0]in'aeiou'].translate(8*".ecdfighjoklmnpuqrstvawxyzb.....")

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

ম্যাথু জেনসেনের পরামর্শের কারণে 8 বাইট মুণ্ডন করা হয়েছে


আপনি স্ট্রিং.ট্রান্সলেট () ফাংশনটি ব্যবহার করে 8 বাইট সংরক্ষণ করতে পারেন:lambda s:[s[1:]+s[0]+"ux",s][s[0]in'aeiou'].translate(8*".ecdfighjoklmnpuqrstvawxyzb.....")
ম্যাথু জেনসেন

নিবন্ধন করুন সাধারণত আমি translateপাইথন 2 এড়ানো ...
চ্যাস ব্রাউন

কাকতালীয়ভাবে, এটি এখন উপরের ক্ষেত্রেও কাজ করে
ম্যাথু জেনসেন

3

টি-এসকিউএল, 169 বাইট

SELECT IIF(CHARINDEX(LEFT(a,1),'aeiou')=0,SUBSTRING(a,2,99)+LEFT(a,1)+'ay',a)FROM
(SELECT TRANSLATE(v,'aeioubcdfghjklmnpqrstvwxyz','eiouacdfghjklmnpqrstvwxyzb')a FROM t)s

ইনপুটটি আমাদের আইও স্ট্যান্ডার্ড অনুযায়ী পূর্ব-বিদ্যমান টেবিলের মাধ্যমে ।

( এসকিউএল 2017 তে নতুন ) TRANSLATEফাংশনটি ব্যবহার করে প্রথমে অক্ষরগুলির প্রতিস্থাপন সম্পাদন করে, তারপরে প্রথম অক্ষরটি পরীক্ষা করে।

বেশিরভাগই এসকিউএল কীওয়ার্ড দৈর্ঘ্যের কারণে বিরক্তিকর।




2

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

T`uo`aei\oub-df-hj-np-tv-zb
^([^aeiou])(.*)
$2$1ay

এটি অনলাইন চেষ্টা করুন! লিঙ্কে পরীক্ষার কেস অন্তর্ভুক্ত রয়েছে। আর উত্তরের অনুরূপ পন্থা। ব্যাখ্যা:

T`uo`aei\oub-df-hj-np-tv-zb

oঅন্যান্য সেট বোঝায়, অর্থাত্ aei\oub-df-hj-np-tv-zb, যা প্রসারিত aeioubcdfghjlkmnpqrstvwxyzb, তাই uoপ্রসারিত uaeioubcdfghjlkmnpqrstvwxyzb। এর ফলে নিম্নলিখিত লিখিত লিপি লিখিতকরণের ফলাফল:

uaeioubcdfghjlkmnpqrstvwxyzb
aeioubcdfghjlkmnpqrstvwxyzb

দ্বিতীয়টি uএবং bএগুলি কখনও মিলানো যায় না বলে এড়ানো হয়, সুতরাং এটি পছন্দসই সিফার সরবরাহ করে। (দ্রষ্টব্য যে রেটিনা 1 এ আপনি অবশ্যই 5 বাইট সংরক্ষণের vপরিবর্তে ব্যবহার করতে পারেন aei\ou))

^([^aeiou])(.*)
$2$1ay

যদি প্রথম বর্ণটি স্বর না হয় তবে এটিকে শেষে এবং প্রত্যয়টি ঘোরান ay


2

জেলি , 24 বাইট

,ṙ¥1y
ØẹçØḄçṙḢe©ØḄƊ®⁾ayx

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

জোনাথন অ্যালানকে 1 বাইট ধন্যবাদ সংরক্ষণ করা হয়েছে (উদ্ধৃতিগুলির চেয়ে দ্বি-চর সিনট্যাক্স ব্যবহার করুন)।


দুর্ভাগ্যক্রমে দীর্ঘতর বুদ্ধিমান, অ-স্নিগ্ধ সংস্করণ (1-বাইট সংক্ষিপ্ত স্নিগ্ধ সমতুল্য)। আমি পরের কয়েক ঘন্টার মধ্যে এটি আপডেট করতে সক্ষম হবো না, তবে আপনি যদি উন্নতিগুলি খুঁজে পান তবে তা উল্লেখ করুন।
মিঃ এক্সকোডার

⁾ayএকটি বাইট জন্য ব্যবহার করুন । ©পরে যেতে পারে eযেহেতু যে কি আপনি সংরক্ষণ করছেন। আমি ØẹØḄ,żṙ€¥1ẎyṙḢe©ØḄƊ®⁾ayẋ
জোনাথন অ্যালান

2

> <> , 94 92 বাইট

i:0(?v"a"%
2%?!v\~r:5g
a2r}<vr+ad*
ol?!;>4g
ecdfighjoklmnpuqrstvawxyzb
1   1   1     1     1

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

সম্পাদনা করুন: 32 এর পরিবর্তে 97 ইনপুট মোড নিয়ে 2 বাইট সংরক্ষণ করা হয়েছে, সুতরাং অভিধানটি লাইনের শুরুতে শুরু হতে পারে। পূর্ববর্তী সংস্করণ:

i:0(?v84*%
2%?!v\~r:5g
37r}<vr*46*
ol?!;>4g
 ecdfighjoklmnpuqrstvawxyzb
 1   1   1     1     1



1

পার্ল 5 , 56 বাইট

y/a-z/ecdfighjok-npuq-tvaw-zb/;s/^([^aeiou])(.*)/$2$1ay/

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


1
আপনার যা দরকার তা না -মধ্যে গুলি cএবং dবা gএবং h?
নিল

@ নিল না আমি না আমি ব্যাপ্তিগুলি সঙ্কুচিত করার জন্য একটি প্রোগ্রাম লিখেছিলাম ... এবং যুক্তিটি ভুল পেয়েছে :) ধন্যবাদ।
hobbs

সাধারণত এই জাতীয় ক্ষেত্রে আপনি <s>58</s> 56 bytesশিরোনামে লিখেন এবং অনেক লোক "নীলকে ধন্যবাদ জানায়" সম্পাদনা করুন: 2 বাইট সংরক্ষণ করুন। বা এ জাতীয় কিছু যখন তাদের একটি মন্তব্যে সহায়তা করা হয়।
নিল

1

ডায়ালগ এপিএল (এসবিসিএস), 57 বাইট

{a←⎕A{(⍺~⍵)⍵}'AEIOU'⋄('AY',⍨1⌽⊢)⍣(∊/⊃¨⍵a)⊢(⊂⍵⍳⍨∊a)⌷∊1⌽¨a}

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

কেবল বড় হাতের ইনপুট নেয়! (কারণ ⎕Aবড় হাতের বর্ণমালা)

  • ⎕A{(⍺~⍵)⍵}'AEIOU': ব্যঞ্জনা এবং স্বরবর্ণের ভেক্টর
  • (⊂⍵⍳⍨∊a)⌷∊1⌽¨a: শব্দটির প্রতিটি বর্ণের সূচকগুলি সাধারণ বর্ণমালায় ( ⊂⍵⍳⍨∊a) থেকে সূচকে ( ) থেকে সিফারে ব্যবহার করা হয় ∊1⌽¨a
  • ('AY',⍨1⌽⊢)⍣(∊/⊃¨⍵a): প্রথম অক্ষরটি শেষের দিকে সরায় এবং 'এওয়াই' যুক্ত করে, যদি প্রথম বর্ণটি ব্যঞ্জনবর্ণ হয়।

দুর্দান্ত চ্যালেঞ্জের জন্য ধন্যবাদ!


0

জাভাস্ক্রিপ্ট (স্পাইডারমনকি) , 107 বাইট

x=>x.replace(/./g,y=>(z='aeiouabcdfghjklmnpqrstvwxyzb')[z.search(y)+1]).replace(/^([^aeiou])(.+)/,'$2$1ay')

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

লোয়ারকেসে ইনপুট আশা করে।

স্ট্রিংয়ের প্রতিটি অক্ষরকে স্ট্রিংয়ের পরে একটির সাথে প্রতিস্থাপন করে 'aeiouabcdfghjklmnpqrstvwxyzb' এবং তারপরে প্রাথমিক ব্যঞ্জনা দিয়ে কোনও কিছুই পিগ্ল্যাটাইনিফাই করে।


0

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

<?=strtr(($s=strstr(aeiou,($s=$argn)[0])?$s:substr($s,1).$s[0].ux),join(range(a,z)),ecdfighjoklmnpuqrstvawxyzb);

অথবা

<?=strtr(($s=strstr(aeiou,($argn)[0])?$argn:substr($s,1).$s[0].ux),join(range(a,z)),ecdfighjoklmnpuqrstvawxyzb);

লোয়ার কেস ইনপুট ধরে নিও। -nRবা সাথে পাইপ হিসাবে চালান করুন তাদের অনলাইনে চেষ্টা করুন


আপনি ভাল হিসাবে ব্যবহার করতে পারে
strtr($s,uzbcadfgehjklminpqrsotvwxy,range(a,z))পরিবর্তে
strtr($s,range(a,z),ecdfighjoklmnpuqrstvawxyzb)

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