ঘড়ি (প্রতিবর্ণীকরণ) সাইফার


12

পরিচিতি:

আমার কাছে একটি ছাগলছানা হিসাবে একবার সঙ্কলিত একটি নথিতে আমার কাছে প্রচুর বিভিন্ন সাইফার সঞ্চিত আছে, আমি যেগুলি আমার মনে হয়েছিল সেগুলির মধ্যে কয়েকটি বেছে নিয়েছিলাম চ্যালেঞ্জগুলির জন্য সবচেয়ে উপযুক্ত (খুব তুচ্ছ নয়, খুব বেশি কঠিন নয়) এবং সেগুলি চ্যালেঞ্জগুলিতে রূপান্তরিত করে। তাদের বেশিরভাগ এখনও স্যান্ডবক্সে রয়েছে এবং আমি এখনও নিশ্চিত নই যে আমি তাদের সমস্ত পোস্ট করব, বা কেবল কয়েক জন। এখানে তৃতীয় এবং সহজতমটি ( কম্পিউটার সাইফার এবং ট্রিফিড সাইফারের পরে আমি পোস্ট করেছি)।


ক্লক সাইফারের সাহায্যে আমরা পাঠ্যটি এনক্রিফার করতে নিম্নলিখিত চিত্রটি ব্যবহার করি:

এখানে চিত্র বর্ণনা লিখুন
সুতরাং একটি বাক্য মত this is a clock cipherহয়ে যাবে:

t  h i s     i s     a     c l  o  c k     c i p  h e r    (without additional spaces of course, but added as clarification)
19:7:8:18:00:8:18:00:AM:00:2:11:14:2:10:00:2:8:15:7:4:17

চ্যালেঞ্জ:

একটি স্ট্রিং দেওয়া sentence_to_encipherহয়েছে, উপরে বর্ণিত হিসাবে এটি এনকিফার করুন।

চ্যালেঞ্জ নিয়ম:

  • আপনি ধরে নিতে পারেন যে sentence_to_encipherকেবলমাত্র অক্ষর এবং স্পেস থাকবে।
  • আপনি পুরো ছোট ছোট হাতের বা সম্পূর্ণ বড় হাতের অক্ষর ব্যবহার করতে পারেন (দয়া করে আপনার উত্তরটিতে কোনটি ব্যবহার করেছেন) তা উল্লেখ করুন।
  • এর bমাধ্যমে একক-অঙ্কের এনকিফার্ড অক্ষরগুলির জন্য আপনাকে নেতৃস্থানীয় শূন্যগুলি যুক্ত করার অনুমতি নেই jতবে দুটি জিরো 00স্পেসের জন্য বাধ্যতামূলক।
  • আপনার :বিভাজক হিসাবে ব্যবহার করা উচিত , এবং অতিরিক্ত নেতৃস্থানীয় বা অনুসরণ করার :অনুমতি নেই।
  • আপনি ব্যবহার ছোট হাতের করার অনুমতি দেওয়া হয় amএবং pmবড় হাতের পরিবর্তে AMএবং PM, যতদিন এটা সামঞ্জস্যপূর্ণ হিসাবে।

সাধারাইওন রুল:

  • এটি , তাই বাইট জেতে সংক্ষিপ্ত উত্তর।
    কোড-গল্ফ ভাষাগুলি আপনাকে নন-কোডগলফিং ভাষার সাথে উত্তর পোস্ট করতে নিরুৎসাহিত করবেন না। 'যে কোনও' প্রোগ্রামিং ভাষার জন্য যতটা সম্ভব সংক্ষিপ্ত উত্তর নিয়ে আসার চেষ্টা করুন।
  • আপনার উত্তরটির জন্য ডিফল্ট আই / ও বিধিগুলির সাথে মানক বিধিগুলি প্রযোজ্য , সুতরাং আপনাকে সঠিক পরামিতি এবং ফিরতি-টাইপ, সম্পূর্ণ প্রোগ্রাম সহ STDIN / STDOUT, ফাংশন / পদ্ধতি ব্যবহারের অনুমতি দেওয়া হবে। আপনার কল
  • ডিফল্ট লুফোলগুলি নিষিদ্ধ।
  • যদি সম্ভব হয় তবে দয়া করে আপনার কোডের (যেমন টিআইও ) একটি পরীক্ষার সাথে একটি লিঙ্ক যুক্ত করুন ।
  • এছাড়াও, আপনার উত্তরের জন্য একটি ব্যাখ্যা যুক্ত করা অত্যন্ত প্রস্তাবিত।

পরীক্ষার কেস:

Input:  "this is a clock cipher"
Output: "19:7:8:18:00:8:18:00:AM:00:2:11:14:2:10:00:2:8:15:7:4:17"

Input:  "test"
Output: "19:4:18:19"

Input:  "what time is it"
Output: "22:7:AM:19:00:19:8:12:4:00:8:18:00:8:19"

Input:  "acegikmoqsuwy bdfhjlnprtvxz"
Output: "AM:2:4:6:8:10:12:14:16:18:20:22:24:00:1:3:5:7:9:11:13:15:17:19:21:23:PM"

Input:  "easy peazy"
Output: "4:AM:18:24:00:15:4:AM:PM:24"


এটা আউটপুট অনুমোদিত হয় [7, ":", 8, ":", "00", ":", 1, ":", 14, ":", 1]জন্য hi bob, বা এক ফলাফলের যোগদান করতে হবে? যাইহোক, ঝরঝরে সাইফার!
মিঃ এক্সকডার

@ মিঃ এক্সকোডার দুঃখিত, সাইফার থিমের জন্য আমি বলব এটির একটি স্ট্রিংয়ে যোগ দেওয়া উচিত (বা পুরো জিনিসটির মতো চরিত্রের তালিকা হিসাবে ['7', ':', '8', ':', '0', '0', ':', '1', ':', '1', '4', ':', '1'])।
কেভিন ক্রুইজসেন

উত্তর:



5

05 এ বি 1 ই , 22 21 বাইট

„AM24L„PM00)˜Að«s‡':ý

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

কিছু বিকল্প 21 বাইট সমাধান:

':ýAð«24L„AMš„PMª00ª‡
00„AM24L„PM)˜AIk>è':ý

উত্তম উত্তর, আমি একাধিক পদ্ধতির মাধ্যমে 23 বাইট পেতে সক্ষম হয়েছি (যার মধ্যে একটি ছিল আমার বর্তমানে মুছে ফেলা উত্তর)। বাইটটি বাঁচানোর জন্য এটি আপনার স্ট্যাকের ব্যবস্থা করার একটি পরিষ্কার উপায়!
মিঃ এক্সকোডার

1
আমাদের উত্তরগুলির সাথে মিলিত একটি বিকল্প 22 বাইটার: এটি অনলাইনে চেষ্টা করুন!
মিঃ এক্সকোডার

@ মিঃ এক্সকোডার: আমার প্রথম ধারণাটি আসলে এরকম দেখতে লাগল, তবে 2 বাইট আরও খারাপ কারণ আমি মনে করি না যে ªএটি বদলেছে :)
এমিগানা

@ মিঃ এক্সকোডার এর পদ্ধতির অংশ ব্যবহার করে আমি একটি 20 বাইটার পেয়েছি , তবে আমি এটি প্রকাশের আগে আপনাকে এটি নির্ধারণ করতে দেব। :)
কেভিন ক্রুইজসেন

1
@ কেভিন ক্রুইজসেন: আরও কিছু দেখার পরে আমি আপনাকে জানাব;)
এমিগানা

4

পার্ল 6 , 47 বাইট

*.ords>>.&{<<00 AM{1..24}PM>>[$_%32]}.join(":")

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

বেনামে যাই হোক না কেন লাম্বদা যা উভয়ের ক্ষেত্রে স্ট্রিং নেয় এবং এনক্রিপ্ট করা স্ট্রিংটি প্রদান করে।

ব্যাখ্যা:

*.ords>>.&{                         } # Map the ordinal values to
           <<              >>[$_%32]  # The index in the list
              00 AM{1..24}PM  # 00, AM, the numbers 1 to 24 and PM
                                     .join(":")   # And join with colons

3

পাইথ, 25 বাইট

j\:m@+++"AM"S24"PM""00"xG

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

j\:m@+++"AM"S24"PM""00"xGdQ   Implicit: Q=eval(input()), G=lowercase alphabet
                              Trailing dQ inferred
            S24               [1-24]
       +"AM"                  Prepend "AM"
      +        "PM"           Append "PM"
     +             "00"       Append "00" - this is the dictionary
   m                      Q   Map each element of Q, as d, using:
                       xGd      Get the index of d in G, -1 if not present (i.e. space)
    @                           Get the element from the dictionary at the above index
j\:                           Join the result on ":", implicit print


3

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

s->{int a=0;for(var c:s)System.out.print((a++<1?"":":")+(c<33?"00":c<66?"AM":c>89?"PM":c-65));}

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

ক্রেডিট

  • -1 বাইট কেভিন ক্রুইজসেনকে ধন্যবাদ

একটি সহজ গল্ফ: charথেকে var। :)
কেভিন ক্রুইজসেন

ধন্যবাদ! এখন এতো স্পষ্ট যে আপনি এটি আমাকে দেখিয়েছেন ...
অলিভিয়ার গ্রাগোয়ার

3

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

s=>string.Join(":",s.Select(a=>a<33?"00":a<66?"AM":a>89?"PM":a%65+""))

ছোট হাতের অক্ষরের একটি স্ট্রিং হিসাবে ইনপুট নেয়। চরটি কোনও স্থান কিনা তা প্রথমে পরীক্ষা করে এবং যদি তা হয় তবে তা রূপান্তর করে 00। এরপরে, এটি চরটি একটি A হয় কিনা তা পরীক্ষা করে এটি এ রূপান্তর করে AM। এটি জেডের জন্য আবার যাচাই করে এবং এটি PMহলে এটি রূপান্তর করে । শেষ অবধি, চর যদি সমস্ত চেক পাস করে তবে তা তার বর্ণমালা ক্রম -১ এ রূপান্তরিত হয়।

-২ বাইটস @ ডানাকে ধন্যবাদ

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

// Input taking a string
s => 
// Join the following IEnumerable<char> with a ":" character
string.Join(":", 
// Map all the characters in the string
s.Select(a => 
// Is the char less than 33, aka a space?
a < 33 ? 
// If so, it's a "00"
"00" 
// Else, is this an 'A'?
: a < 66 ?
// If so, convert it to "AM"
"AM" : 
// If it's not 'A' or a space, could it be a 'Z'?
a > 89 ?
// If it is, turn the character into "PM"
"PM" : 
// If it fails all of the checks above, get the characters position in the alphabet and subtract one from that.
a % 65 + ""))



2

05 এ বি 1 ই , 20 বাইট

':ýð00:A24L„AMš„PMª‡

@ এমিনগা দ্বারা বিদ্যমান 05 এবি 1 ই উত্তরের মন্তব্যে @ মিঃ এক্সকোডার এর 22-বাইটার দ্বারা দুর্দান্তভাবে অনুপ্রাণিত

ছোট হাতের অক্ষরগুলির তালিকা হিসাবে ইনপুট নেয় ( Sযদি আমি স্ট্রিং হিসাবে ইনপুট নিই তবে একটি লিডিং সহ 21 বাইট হবে )।

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

ব্যাখ্যা:

':ý            '# Join the (implicit) input list of characters by ":"
                #  i.e. ["e","a","s","y"," ","p","e","a","z","y"] → "e:a:s:y: :p:e:a:z:y"
ð00:            # Replace all spaces " " with "00"
                #  i.e. "e:a:s:y: :p:e:a:z:y" → "e:a:s:y:00:p:e:a:z:y"
A               # Push the lowercase alphabet
 24L            # Push a list in the range [1,24]
    AMš        # Prepend "AM" at the start of this list
        PMª    # And append "PM" at the end of the list
               # Transliterate; mapping letters to the list-items at the same indices
                # (and output the result implicitly)
                #  i.e. "e:a:s:y:00:p:e:a:z:y" → "4:AM:18:24:00:15:4:AM:PM:24"

1
অই হ্যাঁ. স্থানটি আলাদাভাবে প্রতিস্থাপন করা একটি বাইট সংরক্ষণ করে। আমার এটা চেষ্টা করা উচিত ছিল। চমৎকার :)
এমিলিগা


1

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

s=>string.Join(':',s.Select(c=>"az ".Contains(c)?new[]{"AM","PM","00"}["az ".IndexOf(c)]:c-97+""))

একটি (ছোট হাতের অক্ষর) চর অ্যারে হিসাবে ইনপুট নেয়। এটি অনলাইন চেষ্টা করুন!


82 বাইট: s=>string.Join(':',s.Select(c=>new[]{c-97+"","AM","PM","00"}["az ".IndexOf(c)+1]))
ডানা

1

কাঠকয়লা , 26 বাইট

UB:Fθ«→≡ι ×0²a¦AM¦z¦PMI⌕βι

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। নিম্ন ক্ষেত্রে ইনপুট লাগে (তুচ্ছভাবে আপার কেস পরিবর্তন করা যেতে পারে)। ব্যাখ্যা:

UB:

পটভূমি অক্ষর সেট করুন :। এটি সঠিক আন্দোলনের দ্বারা নির্মিত আউটপুট মানগুলির মধ্যে শূন্যস্থান পূরণ করে।

Fθ«→

প্রতিটি চরিত্রের উপর লুপ করুন, প্রতিটি সময় ফাঁক রেখে। (এই পদক্ষেপে ক্যানভাসটি খালি থাকায় প্রথম পদক্ষেপের কোনও প্রভাব নেই))

≡ι ×0²a¦AM¦z¦PM

অক্ষরটি স্যুইচ করুন এবং যদি এটির স্থান হয়, aবা zতারপরে উপযুক্ত কোডটি আউটপুট করুন। আমি এখানে ×0²পরিবর্তে ব্যবহার করি 00কারণ পরের অতিরিক্ত বিভাজকগুলিতে দুটি বাইট লাগবে।

I⌕βι

অন্যথায় অক্ষরের 0-সূচিযুক্ত অবস্থানটিকে স্ট্রিং হিসাবে নিম্ন ক্ষেত্রে বর্ণমালায় আউটপুট দেয়।


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