এর এনক্রিপ্ট করা যাক!


12

চ্যালেঞ্জ

চ্যালেঞ্জটি নীচে বর্ণিত নিয়মগুলি ব্যবহার করে একটি প্রদত্ত স্ট্রিং এনক্রিপ্ট করা। স্ট্রিংটিতে কেবল ছোট হাতের বর্ণমালা , সংখ্যা এবং / অথবা ফাঁকা স্থান থাকে

একটি চরিত্রের সমান

এখন, প্রথমে আপনার প্রতিটি অক্ষরের "সমতুল্য" কীভাবে সন্ধান করতে হবে তা জানতে হবে।

চরিত্রটি যদি ব্যঞ্জনবর্ণ হয় তবে এটি এর সমতুল্য অনুসন্ধানের উপায়:

1) List all the consonants in alphabetical order
    b c d f g h j k l m n p q r s t v w x y z
2) Get the position of the consonant you are finding the equivalent of.
3) The equivalent is the consonant at that position when starting from the end.

যেমন: 'এইচ' এবং 'টি' একে অপরের সমতুল্য কারণ 'এইচ', 'টি' যথাক্রমে শুরু এবং শেষ থেকে 6th ষ্ঠ অবস্থানে রয়েছে।

স্বর / সংখ্যাগুলির সমতুল্য সন্ধান করতে একই পদ্ধতি অনুসরণ করা হয়। আপনি সমস্ত স্বর বা অঙ্কগুলি তালিকাভুক্ত করুন (0 থেকে শুরু) ক্রমানুসারে এবং সমতুল্যটি সন্ধান করুন।

নীচে দেওয়া সমস্ত অক্ষরের সমতুল্য তালিকা:

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

a <-> u
e <-> o
i <-> i

0 <-> 9
1 <-> 8
2 <-> 7
3 <-> 6
4 <-> 5

এনক্রিপ্ট করার নিয়ম

1) আপনি বাম থেকে সরানো শুরু করুন এবং ডান দিকে যান।

২) চরিত্রটি যদি ব্যঞ্জনবর্ণ / অঙ্ক হয় তবে এর সমতুল্য নেওয়া হয় এবং যদি এটি ফাঁকা স্থান হয় তবে একটি ফাঁকা স্থান নেওয়া হয়।

3) চরিত্রটি যদি স্বর হয় তবে আপনি এটি সমতুল্য হন এবং বিপরীত দিকে যেতে শুরু করেন। উদাহরণস্বরূপ, আপনি যদি ডানদিকে চলে যাচ্ছেন এবং স্বরবর্ণের মুখোমুখি হন তবে সেই অক্ষরটি এনক্রিপ্ট করুন তারপরে ডানদিকের এনক্রিপ্ট করা অক্ষরটি ছেড়ে যান এবং বাম দিকে এনক্রিপ্ট করা শুরু করুন এবং তদ্বিপরীত।

৪) আপনার একই চরিত্রের দু'বার বিবেচনা করা উচিত নয়। ইনপুটটির সমস্ত অক্ষর coveredাকা না হওয়া পর্যন্ত পদক্ষেপগুলি অনুসরণ করা উচিত।

5) ইনপুটটিতে মোট অক্ষরের সংখ্যা (ফাঁকা জায়গা সহ) আউটপুটে মোট অক্ষরের সংখ্যার সমান হওয়া উচিত।

অনুগ্রহ করে নোট করুন যে এনক্রিপ্ট করা অক্ষরগুলি আউটপুটটিতে ক্রম অনুযায়ী সেটিকে এনক্রিপ্ট করা হয়েছিল।

এখন আমি আপনার জন্য একটি স্ট্রিং এনক্রিপ্ট করা যাক।

String = "tre d1go3t is"
Moving left to right
"t" -> "h"
"r" -> "k"
"e" -> "o"
Vowel encountered. Now moving right to left.
"s" -> "j"
"i" -> "i"
Vowel encountered. Now moving left to right.
" " -> " "
"d" -> "x"
"1" -> "8"
"g" -> "v"
"o" -> "e"
Vowel encountered. Now moving right to left.
" " -> " "
"t" -> "h"
"3" -> "6"

Output -> "hkoji x8ve h6"

উদাহরণ

"flyspy" -> "wqcjmc"
"hero" -> "toek"
"heroic" -> "toyike"
"ae" -> "uo"
"abe" -> "uoz"
"the space" -> "htoo jmuy"
"a d1g13t" -> "uh68v8x "
"we xi12" -> "fo78i d"
"this is a code" -> "htioj ixej uy "

আপনি ছোট হাতের বদলে বড় হাতের অক্ষর ব্যবহার করতেও বেছে নিতে পারেন।

স্কোরিং

এটি , তাই সংক্ষিপ্ততম কোডটি জয়ী!


1
দিকনির্দেশের দিকনির্দেশের সাথে ধাপ 3 কিছুটা অস্পষ্ট। আমি মনে করি আপনার এমন কিছু বলা উচিত যা "আপনি যদি ডানদিকে চলে যাচ্ছেন এবং স্বরবর্ণের মুখোমুখি হন, সেই অক্ষরটি এনক্রিপ্ট করুন তবে ডানদিকের এনক্রিপ্ট না করা অক্ষরে চলে যান এবং বাম দিকে এনক্রিপ্ট শুরু করুন।" (যদি সেটাই আপনি বোঝাতে চান)। আমি মনে করি আপনারও স্পষ্টভাবে উল্লেখ করা উচিত যে এনক্রিপ্ট করা অক্ষরগুলি আউটপুটটিতে ক্রম হিসাবে সেগুলি এনক্রিপ্ট করা হয়েছিল।
dylnan

পছন্দ করেছেন
মনীষ কুন্ডু

কৌতূহলের বাইরে - আপনি ডিক্রিপশন পদ্ধতি বর্ণনা করতে পারেন? এনক্রিপশন ফাংশন এটি নিজস্ব বিপরীত নয় (ROT13 আলগো মত)) সুতরাং যদি আমরা একই সিফার পদ্ধতিতে কোনও এনক্রিপ্ট করা ডেটা পাস করি - আমরা মূল পাঠ্যটি পাব না। ধন্যবাদ
অগ্নিওস ভ্যাসিলিয়াসকাস

1
@ অ্যাগনিয়াস ভ্যাসিলিয়াসকাস: এটি করার একটি উপায় হ'ল: একই চরিত্রের রূপান্তর প্রয়োগ করুন। 2 ডিক্রিপ্ট স্ট্রিং রাখুন। বাম থেকে ডানে স্ট্রিংয়ের উপর লুপ করুন। প্রথম স্ট্রিংটিতে চরগুলি সংযোজন এবং আপনি যখন কোনও স্বর হ্যান্ডেল করবেন ততবার দ্বিতীয় বারের মধ্যবর্তী বিকল্প। স্ট্রিংগুলি শেষে মার্জ করুন।
এমিগনা

3
শীঘ্রই এর জন্য একটি ডিক্রিপশন চ্যালেঞ্জ আসবে, যার মধ্যে আমি প্রক্রিয়াটি ব্যাখ্যা করার চেষ্টা করব
মণীশ কুণ্ডু

উত্তর:


4

জাভাস্ক্রিপ্ট (নোড.জেএস) , 173 ... 166 156 ... 124 123 বাইট

-28 বাইট ধন্যবাদ আর্নল্ড

f=([q,...s])=>q?(c="aeioubcdfghjklmpqrstvwxyz",t=c.search(q),q=="0"|+q?9-q:~t?c[(t<5?4:29)-t]:q)+f(~t&&t<5?s.reverse():s):s

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

প্রথম পুনরাবৃত্তিতে Stringএটিতে পরিবর্তন করা Arrayহবে এবং পরবর্তী পুনরাবৃত্তিগুলি ব্যবহার অবিরত থাকবে Array। ভাল খবর!

আসল পন্থা (166 বাইট):

f=(s,i=0,r=s.length,d=1,c="bcdfghjklmnpqrstvwxyz",v="aeiou")=>(d^=!!(t=~v.search(q=s[d?i:r])),q<"0"|q>"9"?c[20-c.search(q)]||v[5+t]||q:9-q)+(i<r-1?f(s,i+d,r-!d,d):"")

&কিছু সংখ্যার জন্য কাজ না করে কাজ &&করেছেন। ধন্যবাদ।
শিয়েরু আসাকোটো

ওহ হ্যাঁ, আমি এটি অনুকূলকরণের জন্য কোনও পদ্ধতি খুঁজে পাইনি এবং আপনি এটি করেছেন! ধন্যবাদ!
শিয়েরু আসাকোটো

3
সমস্ত অক্ষরের জন্য একই স্ট্রিং ব্যবহার করে এবং আরও কিছু গল্ফ প্রয়োগ করে 124 বাইট
আর্নল্ড

বাহ উজ্জ্বল! আমি
সবগুলিতে

q=="0"|+qআসলে তুলনায় 1 বাইট ছোট q>" "&&1/q
আরনাউল্ড

3

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

vćžN‡žM‡žh‡D?žMsåiR

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

ব্যাখ্যা

v                        # for each char in input
 ć                       # extract the head of the current string (initially input)
  žN‡                   # transform consonants
      žM‡               # transofrm vowels
          žh‡           # transform numbers
              D?         # print a copy of the current char
                žMsåi    # if the current char is a vowel
                     R   # reverse the rest of the string

žhžMžN)UvćXJXíJ‡D?žMsåiRআমি উন্নতির জন্য যা ভাবছিলাম তা ছিল, তবে XJXiJযথেষ্ট পরিমাণে হ্রাস করতে পারে না ।
ম্যাজিক অক্টোপাস উরন

@MagicOctopusUrn: আমি একটি অনুরূপ ধারণা সঙ্গে ছিল DJsíJযা খুবই কার্যকর হয় না।
এমিগানা


1

জে , 132 বাইট

f=:3 :0
c=.(u:97+i.26)-.v=.'aeiou'
d=.u:48+i.10
g=.;"0|.
a=.''
while.*#y do.a=.a,{.y rplc(g c),(g d),g v
y=.|.^:({:a e.v)}.y
end.a
)

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

এই সময় একটি ভার্বোস স্পষ্ট ক্রিয়া।

ব্যাখ্যা:

c=.(u:97+i.26) একটি তালিকা তৈরি করে

v=.'aeiou' স্বরগুলির একটি তালিকা তৈরি করে

-. বর্ণগুলির তালিকা থেকে স্বরগুলি সরিয়ে দেয়

d=.u:48+i.10 অঙ্কের তালিকা তৈরি করে

g=.;"0|. প্রতিস্থাপন প্রতীকগুলির বক্সযুক্ত জোড়গুলির একটি তালিকা তৈরি করার জন্য একটি ইউটিলিটি ক্রিয়া

   g d
┌─┬─┐
│0│9│
├─┼─┤
│1│8│
├─┼─┤
│2│7│
├─┼─┤
│3│6│
├─┼─┤
│4│5│
├─┼─┤
│5│4│
├─┼─┤
│6│3│
├─┼─┤
│7│2│
├─┼─┤
│8│1│
├─┼─┤
│9│0│
└─┴─┘

a=.'' ফলাফল সংরক্ষণ করার জন্য একটি তালিকা

while.*#y do.a=.a,{.y rplc(g c),(g d),g v তালিকার দৈর্ঘ্য> 0 হলে একটি প্রতীক নিন, এটিকে প্রতিস্থাপন করুন এবং ফলাফলটিতে এটি যুক্ত করুন

y=.|.^:({:a e.v)}.y তালিকার শুরু থেকে একটি প্রতীক ফেলে দিন এবং যদি প্রতীকটি স্বর হয় তবে তালিকাটি বিপরীত করুন

end.whileলুপ শেষ হয়

a ফল দেয়



0

রেটিনা , 78 বাইট

T`dl`9-0uz-x\ow-vtis-pnem-j\hagfd-b
/[aeiou]/{*>0L`.*?[aeiou]
0`.*?[aeiou]

V`

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

T`dl`9-0uz-x\ow-vtis-pnem-j\hagfd-b

প্রতিটি চরিত্রের সমতুল্য সাথে অদলবদল করুন।

/[aeiou]/{

একটি স্বর অবশিষ্ট থাকাকালীন পুনরাবৃত্তি করুন।

*>0L`.*?[aeiou]

স্বর পর্যন্ত পাঠ্য আউটপুট করুন।

0`.*?[aeiou]

স্বর পর্যন্ত পাঠ্য মুছুন।

V`

বাকি পাঠ্যটি উল্টো করুন। যখন কোনও স্বর বাকী নেই, তখন এটি স্পষ্টভাবে আউটপুট হয়, তবে পরীক্ষার কেসগুলির উদ্দেশ্যে, শিরোনাম প্রতিটি লাইনের শেষে পাঠ্যকে আউটপুট দেয়।


0

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

╥j•td╢Ä;Sµ*ûⁿvÉ╫î▓J o╩π╗

চালাও এটা

এখানে একই প্রোগ্রামটির আসকি উপস্থাপনা।

VcGVdGVvGwB]qVvs#!Hv*c}cr\$|t

এটি প্রতিটি অক্ষর শ্রেণীর প্রথমে অনুবাদ করে, তারপরে কিছুক্ষণ লুপ শুরু করে। লুপে এটি পরবর্তী অক্ষরটিকে আউটপুট দেয় এবং শর্তসাপেক্ষে যদি স্বরবর্ণের মুখোমুখি হয় তবে শর্তসাপেক্ষে বাকী স্ট্রিংটি উল্টে দেয়।

VcG                             Push lowercase consonants and jump to trailing }
   VdG                          Push digits and jump to trailing }
      VvG                       Push lowercase vowels and jump to trailing }
         wB]qVvs#!Hv*c          While; run this block until popped value is falsy
          B]                    Split first character off string 
            q                   Output with no newline; keep on the stack
             Vvs#               1 if letter is a vowel, 0 otherwise
                 !Hv            Not, Double, then Decrement
                                    -1 for vowels, 1 otherwise
                    *           Multiply string. -1 causes reversal       
                     c          Copy value to be popped as while condition
                      }         Jump target from above.  Return when done.
                       cr\$     Copy, reverse, zip, and flatten.
                           |t   Translate: use string as a character map
                                    for replacements
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.