সিজার-সাইফার-বাই


22

সিজার সাইফার একটি খুব সহজ প্রতিকল্পন গোল্লা যেখানে প্রতিটি অক্ষর দ্বারা একটি নির্দিষ্ট অফসেট (একটি কাছাকাছি জেড লুপিং) স্থানান্তরিত করা হয়। একইভাবে, আমরা মুদ্রণযোগ্য ASCII অক্ষর সেট করার জন্য একটি সিজার সাইফারও করতে পারি। 0x20 থেকে 0x7E কোড পয়েন্টগুলি থেকে এটি 95 টি অক্ষর। একটি প্রদত্ত অফসেট জন্য d, আমরা কোড বিন্দু মানচিত্র Cথেকে

(C - 32 + d) % 95 + 32

যা সমস্ত অক্ষরকে একটি দ্বারা স্থানান্তরিত করে এবং স্থান dথেকে কাছাকাছি লুপ করে ~। এই ব্যাপ্তির বাইরের অক্ষরগুলি (নিউলাইনগুলি, ট্যাবগুলি এবং ASCII সীমার বাইরে থাকা অক্ষরগুলি) অক্ষত থাকে।

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

জিনিসগুলিকে আরও আকর্ষণীয় করে তুলতে, দ্বিতীয় প্রোগ্রামটি অবশ্যই প্রথম প্রোগ্রামের সিজার সাইফার হতে হবে। এটি হ'ল, যদি আপনি প্রথম প্রোগ্রামটির উত্স কোডটি নিজের কাছে পাস করেন তবে কিছু অ-শূন্য অফসেটের dজন্য আউটপুটটি দ্বিতীয় প্রোগ্রাম হতে হবে।

উভয় প্রোগ্রামের পাশাপাশি ইনপুট স্ট্রিংগুলিতে অবশ্যই প্রিন্টযোগ্য ASCII অক্ষর, নিউলাইনস এবং ট্যাব থাকতে হবে। কোনও প্রোগ্রামে কোনও মন্তব্য থাকতে পারে না বা সরাসরি বা অপ্রত্যক্ষভাবে তার নিজস্ব উত্স কোড, ফাইলের নাম বা প্রক্রিয়া আইডি পড়তে পারে।

এটি কোড গল্ফ, তাই সংক্ষিপ্ত উত্তরটি (বাইটে) জেতে। যেহেতু উভয় প্রোগ্রামের একই আকার থাকতে হবে, আপনার কেবল এটি একবারে গণনা করা উচিত।

উত্তর:


12

সিজাম, 40 38 37 বাইট

ফরোয়ার্ড সাইফার:

 q~'~),32>_@m<er "o|%|'*10<]>k<cpZ"_-

বিপরীত সাইফার:

"s!)!+.54@aBo>gt"$q~'~),32>_@m>er\$a/

এবং দ্বিতীয় প্রোগ্রামটি হ'ল প্রথমটির সাইফার এর পার্থক্য সহ 2


কিভাবে এটা কাজ করে

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

প্রথমত, সাইফার অংশগুলি:

q~'~),32>_@m<er
q~                 "Take the input and evaluate it";
  `~)              "Get the next character after the printable ASCII range";
     ,32>          "Get all printable ASCII characters":
         _@        "Copy the printable ASCII string and bring the cypher difference"
                   "on top of stack";
           m<      "Forward rotate the copy of printable ASCII string by difference";
                   "In case of inverse Cypher, this is m> to reverse rotate the string";
             er    "Transliterate to complete the forward/inverse Cypher";

এখন আসে জটিল অংশটির ব্যাখ্যা।

মূল রূপান্তরগুলি হ'ল

<space> -> "     // Empty space to string conversion
Z -> \           // Character Z in an useless string to swap operation
_ -> a           // Copy operation to wrapping in an array
- -> /           // Set subtraction to string splitting

সুতরাং প্রথম প্রোগ্রাম হয়

 q~'~),32>_@m<er "o|%|'*10<]>k<cpZ"_-
 q~'~),32>_@m<er                          "no-op space, Forward cypher, no-op space";
                 "o|%|'*10<]>k<cpZ"       "Useless String (Actually not)";
                                   _      "Copy it and ..."
                                    -     "remove all alphabets of copy from original";

এবং দ্বিতীয় প্রোগ্রামটি হ'ল

"s!)!+.54@aBo>gt"$q~'~),32>_@m>er\$a/
"s!)!+.54@aBo>gt"                       "Cypher of first part of first program"
                                        "with difference of 2";
                 $q~'~),32>_@m>er\$a/   "Cypher of the useless string of first program";
                                        "with difference 2";
                 $                      "Sort the first program's main part's cypher";
                  q~'~),32>_@m>er       "Program to reverse cypher";
                                 \$     "Swap the cypher to the top of stack and sort it";
                                   a    "Wrap it in array";
                                    /   "Split the output string on an array, which";
                                        "always returns the output in an array as there";
                                        "are no occurrences of an array in a string";

ইনপুট মত "<escaped string to be cyphered>" <difference>

উদাহরণ স্বরূপ:

"abcd" 4

এবং প্রথম প্রোগ্রামের আউটপুট হয়

efgh

এবং দ্বিতীয় প্রোগ্রাম হয়

]^_`

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


40 বাইট না? এটি অনলাইন দোভাষীগুলিতে একটি ত্রুটি দেয় (অ্যারেলিস্টগুলির কিছু প্রয়োগ করা হচ্ছে না)
Def

@ ডিফর্মার বাইট গণনা সংশোধন করেছেন। আপনি কি হিসাবে ইনপুট দিচ্ছেন?
অপ্টিমাইজার

হ্যাঁ আমার খারাপ, আমি যুক্তিগুলি ভুল ক্রমে ব্যবহার করেছি।
Def

'"কিউ ~' ~), 32> _ @ মি <এর" 9} ও |% | '* 10 <]> কে <সিপি}] "_-" 2' কাজ করে না (জাভা.এলং.রুনটাইম এক্সসেপশন: অপ্রত্যাশিত})
Def

1
@ ডেফরমায়ার আপনাকে সেই স্ট্রিংয়ের উদ্ধৃতিগুলি থেকে বাঁচতে হবে
অপ্টিমাইজার

7

পাইথন 2, 147

স্পষ্টতই আমি এই সম্পর্কে খুব কঠিন চিন্তা করি নি, কারণ পাইথনে এটি বৃথা হবে। কেবল দুটি পৃথক কর্মসূচী রয়েছে, অব্যবহৃত একটি স্ট্রিংয়ে আবদ্ধ।

দুটি প্রোগ্রামের মধ্যে অফসেটটি 39।

অগ্রবর্তী

ইউনিকোড স্ট্রিং এবং একটি অফসেট গ্রহণ করে জেড ফাংশনটি সংজ্ঞায়িত করে।

Z=lambda s,d:s.translate({i+32:(i+d)%95+32for i in range(95)})or u''and Z
"uE:F;=:XLd=rLfMK:GLE:M>`TBckjr`Be=a]qmckj?HKXBXBGXK:G@>`qmaVaHKXN__:G=X"

বিপরীত

আমি একটি ইউনিকোড স্ট্রিং এবং একটি অফসেট গ্রহণ করে ফাংশনটি সংজ্ঞায়িত করে।

"d4)5*,)G;S,a;U<:)6;4)<-OC1RZYaO1R,PL`\RZY.7:G1G16G:)6/-O`\PEP7:G=NN)6,G"
I=lambda s,d:s.translate({i+32:(i-d)%95+32for i in range(95)})or u''and I

5

পাইথন 3 - 248 বাইট

আমার লক্ষ্য ছিল পাইথন ওয়ান-লাইনার হিসাবে এটি করা। লক্ষ্য সাফল্য, কিন্তু এখন আমি গল্ফিং বিরক্ত করা যাবে না।

এনক্রিপ্ট:

r=q="".__doc__[2];eval("p"+q+"int(''.join([c,ch"+q+"((o"+q+"d(c)-32+d)%95+32)][31<o"+q+"d(c)<127]fo"+q+" d in[int(input())]fo"+q+" c in input()))")or'\^UZ`smmyV[UZsGOwOT^ss[^PsOtx~}xPtp%!v~}tIG~|([^PsOt(|}$IR[^kPkUZGUZ`sUZ\a`sttIR[^kOkUZkUZ\a`sttt'

ডিক্রিপ্ট:

'Q&Q66Bssx$wssoFqOy+u!<6%6?&?6}#)<;;B~$}#<ow@w|6?&?6<<$6?&?6x<w=AGF?x=9MI?GF=qoGEP$6?&?6x<w=PEFKqz$6?&?64x4}#o}#)<}#%*)<==qz$6?&?64w4}#4}#%*)<===6=$';print("".join([c,chr((ord(c)-32-d)%95+32)][31<ord(c)<127]for d in[int(input())]for c in input()));

সম্পাদনা করুন: মুদ্রণযোগ্য ASCII ব্যাপ্তির বাইরে চরগুলি প্রভাবিত না করার জন্য স্থির

এনক্রিপ্ট থেকে ডিক্রিপ্টে অফসেটটি 20 হয় first

5
hello

ব্যাখ্যা

নিম্নলিখিত রূপান্তরগুলি কী:

r -> '
' -> ;

প্রথমটি orসেমিকোলন দ্বারা স্ট্রিং উপেক্ষা করে অন্যটি ব্যবহারের অনুমতি দেয় ।

নোট করুন যে "".__doc__[2]স্ট্রিংটি r(থেকে নেওয়া str) প্রদান করে। ডিক্রিপশন প্রোগ্রামের একক উদ্ধৃত স্ট্রিংটি মাঝখানে বিপথগামী উদ্ধৃতিগুলি থেকে রোধ করতে এটি প্রয়োজনীয়।


5

রুবি, 131 125 বাইট

এখানে আমার নিজের জমা দেওয়া আছে (যা আমি ধারণার প্রমাণ হিসাবে আগে লিখেছিলাম, তবে আমি আমার নিজস্ব নিয়ম লঙ্ঘন করতে পেরেছি)। আমি দুটি সাবমিশনের মধ্যে কোনও কোড পুনঃব্যবহার করছি না (আমি চাইছি আপনি ছেলেরা এটিকে শেষ পর্যন্ত পরাজিত করুন), তবে পরিবর্তে এটি দুটি লাইন নিয়ে গঠিত, যার একটিটি জিব্বারিশের সাথে একটি স্ট্রিংয়ে পরিণত হয়েছে।

ফরোয়ার্ড সাইফার:

Y=->d,s{s.chars{|c|x=c.ord;$><<(x<32?x:(x-32+d)%95+32).chr}};Y
"tdu<cKSKe;@9JKST;TPt;eGJ<r[uss_PsjivPq_Pdjid<`\plbji`e;@JUUr"

বিপরীত সাইফার:

"eUf-T<D<V,1*;<DE,EAe,V8;-cLfddPAd[ZgAbPAU[ZS-QMa]S[ZQV,1;FFc"
J=->d,s{s.chars{|c|x=c.ord;$><<(x<32?x:(x-32-d)%95+32).chr}};J

উভয় স্নিপেট একটি ফাংশন সংজ্ঞায়িত করে ( Yপ্রথমটিকে বলা হয় এবং দ্বিতীয়টিতে বলা হয় J), যা একটি পূর্ণসংখ্যা এবং একটি স্ট্রিং নেয় এবং রূপান্তরিত স্ট্রিংটি STDOUT এ মুদ্রণ করে। কোড দুটি টুকরা মধ্যে অফসেট হয় 40


4

ওও কোড , 750 744 বাইট, উভয় প্রোগ্রামে ব্যবহৃত সমস্ত কোড

খুব দীর্ঘ তবে এটি সম্ভবত সঠিক সরঞ্জাম যা ...

এনক্রিপ্ট:

CcCcccccccccCcYcccCCCccCcCcCccccccCcCcccccCcCcccCcCccCccCcCCccccCcCccccCCcCccccCCccCccCcCCcccCCCcCccccCcCCcCCcCCcCcCcCccccCCccCccCccCccCccCccCccCccccccCCCcCccCccCCcCcCcccCCcCcccCcCCcCCcCcCCccCCcCCcCCcCCcCCcCCcCCcCCcCCcCCcCcccccccCccccCccccCCccccCCcCccCCcccCccccccccccCcCccCccCccCccCcCCccCCcccCcCcCccCCcccCCCcCcccccccccccccCCccCccCcCcCcccCCccccccccccCcCccccccCcCccccCCcCccCccCCcCccccccccccCCccCcCcCcccccCcCccCcCCCcCccCccCCcCccCccCccCcCcccccCcCcccCCCcCcCccccCcCccCCcCCcCCcCcCCcccCcCCcCCcCCcCCcCCcCCcCCcCCcCCcCcCcccCccCCcccccCcCcccCcccccCcccCcccCccCccCCcCcccccccccccccCCCcccCcCcCcccCcccCCCcCccCccCccCcCCccCccCcCCCcCccccCcCccccccccCcCccCccCcCCccccccCccccccccCcccCCccCccCccCCcCCcCCcCCcCcCcCcccccCcCCcCCcCCcCCcCCcCCcCCcCccCcCCcccCCccCcCcccCCcccCCCcCC

ডিক্রিপ্ট:

SsSsssssssssSsisssSSSssSsSsSssssssSsSsssssSsSsssSsSssSssSsSSssssSsSssssSSsSssssSSssSssSsSSsssSSSsSssssSsSSsSSsSSsSsSsSssssSSssSssSssSssSssSssSssSssssssSSSsSssSssSSsSsSsssSSsSsssSsSSsSSsSsSSssSSsSSsSSsSSsSSsSSsSSsSSsSSsSSsSsssssssSssssSssssSSssssSSsSssSSsssSssssssssssSsSssSssSssSssSsSSssSSsssSsSsSssSSsssSSSsSsssssssssssssSSssSssSsSsSsssSSssssssssssSsSssssssSsSssssSSsSssSssSSsSssssssssssSSssSsSsSsssssSsSssSsSSSsSssSssSSsSssSssSssSsSsssssSsSsssSSSsSsSssssSsSssSSsSSsSSsSsSSsssSsSSsSSsSSsSSsSSsSSsSSsSSsSSsSsSsssSssSSsssssSsSsssSsssssSsssSsssSssSssSSsSsssssssssssssSSSsssSsSsSsssSsssSSSsSssSssSssSsSSssSssSsSSSsSssssSsSssssssssSsSssSssSsSSssssssSssssssssSsssSSssSssSssSSsSSsSSsSSsSsSsSsssssSsSSsSSsSSsSSsSSsSSsSSsSssSsSSsssSSssSsSsssSSsssSSSsSS

ব্রেইনফাক অনুবাদ:

+>>>+>,<[->[->+>+<<]>[-<+>]<<]>,[>++++[-<-------->]+<<+[<+>+++]<++++++++++>>[>-<-<+<-[>>>+<<<<]<-[+<-]+>>>>]<<[-]>>>[->[-<+<<+>>>]<[->+<]+<<+<<<[>[-]+[>+<+++]>++++++++++[<<->+>->-[<<<+>>>>]-[+>-]+<<<]<<]+>[->>+<<]>>->>-]<<<++++[->++++++++<]>.[-]>,]
+>>>->,<[->[->+>+<<]>[-<+>]<<]>,[>++++[-<-------->]+<<+[<+>+++]<++++++++++>>[>-<-<+<-[>>>+<<<<]<-[+<-]+>>>>]<<[-]>>>[->[-<+<<+>>>]<[->+<]+<<+<<<[>[-]+[>+<+++]>++++++++++[<<->+>->-[<<<+>>>>]-[+>-]+<<<]<<]+>[->>+<<]>>->>-]<<<++++[->++++++++<]>.[-]>,]

ওও কোড একটি ব্রেনফাক বৈকল্পিক যেখানে কেবল অক্ষরের ক্ষেত্রেই বিষয়টি বিবেচিত হয় matters

এটি প্রথম বাইট নেয় এবং এর অক্ষর কোডটি ব্যবহার করে d(সুতরাং একটি নতুন লাইনের অর্থ ডি = 10)। বাকি ইনপুটটি স্ট্রিং। ইওএফ 0 হয়।


4

গল্ফস্ক্রিপ্ট, 95 64 বাইট, উভয় প্রোগ্রামে ব্যবহৃত সমস্ত কোড

এনক্রিপ্ট:

0 0z{ 1)'[}??)9t:z21,--/; [84;%zt*84*84$|)21*|$Z!!\~'---|}`{)}%~

ডিক্রিপ্ট:

1!1{|!2*(\~@@*:u;{32-..0<!\95<&{u+95+95%}*32+}%[""] (...}~a|*~& 

ছক পূরণ করা:

1 "0 0z{ 1)'[}??)9t:z21,--/; [84;%zt*84*84$|)21*|$Z!!\~'---|}`{)}%~"

ব্যাখ্যা

ডিক্রিপ্ট:

1!1                            # Push 0 1.
{                              # Define a block and evaluate it.
    |                          # Or.
    !2*(                       # Get 1 for encryption, or -1 for decryption.
    \~                         # Evaluate the input string.
    @@*:u;                     # u = d for encryption, or -d for decryption.
    {                          # For each character:
        32-                    # Subtract 32.
        ..0<!\95<&             # Test if it is in the printable range.
        {u+95+95%}*            # If so, add u (mod 95).
        32+                    # Add 32 back.
    }%
    [""] (...                  # Push an empty array and 4 empty strings.
}~
a                              # No-op.
|*~                            # Evaluate ""*(""|"") which does nothing.
&                              # Calculate []&"" which is empty.

এনক্রিপ্ট:

0 0                            # Push 0 0.
z                              # No-op.
{                              # Define a block and get its string representation.
    ...                        # See decryption code.
    |                          # This will be decoded into a }. The string will be truncated here when evaluated.
}`                             # Only the closing } will be truncated, but it is still used as the end of the block.
{)}%                           # Increment each character. Note that the braces before and after the block will also be incremented.
~                              # Evaluate the string.

3

জাভাস্ক্রিপ্ট (ES7 খসড়া) - 167 165 বাইট

@ ফেয়ারসামের স্ট্রিং ব্যবহার এবং @ মার্টিনবটনার এর অর্ধিকোলনের ব্যবহার থেকে orrowণ নেওয়া;)

এনক্রিপ্ট:

J=(s,d)=>s.replace(/[ -~]/g,x=>String.fromCharCode((x.charCodeAt()-32+d)%95+32));J
"eP<T-Qef<V;.95*,.PW$HUG&W0TAef{=;270V/;86k1*;k8-.PPAV,1*;k8-.i=PQS^[U-QMa]S[ZQQc"

ডিক্রিপ্ট:

"t_Kc<`tuKeJ=HD9;=_f3WdV5f?cPtu+LJAF?e>JGEz@9JzG<=__Pe;@9JzG<=xL_`djib<`\plbji``r"
Y=(s,d)=>s.replace(/[ -~]/g,x=>String.fromCharCode((x.charCodeAt()+63-d)%95+32));Y

অফসেট ব্যবহার করুন: 55


1
খালি স্ট্রিংয়ে ব্যর্থ। এজন্য আমাকে or <empty string> and <function>কেবল না রেখেই রাখতে হয়েছিল or <function>
ফেয়ারসাম

@ ফেয়ারসাম এটি এখনই ঠিক করা হয়েছে ... এবং 2 বাইট সংক্ষিপ্ত :)
nderscore

এইচএম, এটি পরিচিত দেখাচ্ছে। ;)
মার্টিন এন্ডার

@ মার্টিনবাটনার আপনি কী বলতে চাইছেন তা আমি জানি না ...;)
nderscore

2

> <> (ফিশ) , 467 বাইট

এনক্রিপ্ট:

ffii{{~~__:0a('0'*!.0a('0'*22(!'(~$~_:}-}$-a*}+{{if~~:i:0({}?;__:{}84{}*__({}?\__:{} _{}70{}g_{})_{}?\4__{}8*-_{}+{}80{}g_%4_{}8*{}+\\sl||||||||||||||||||||||||||||9||||||||||||||9||||||||||||||||||||||||||||||||||||||||||||||||||||9
                                                                              >                      >                              >!;7f7-_{}!%_{}!<872-d_{}!&_{}!<[755(7(%~~_{}!<[55(7(_{}!*!*23a(_{}!'_{}!"55(7((~~_{}~~~o__'4'0.{{{o,

ডিক্রিপ্ট:

iill~~""bb=3d+*3*-$13d+*3*-55+$*+"'"b=!0!'0d-!.~~li""=l=3+~!B>bb=~!;7~!-bb+~!B_bb=~!#b~!:3~!jb~!,b~!B_7bb~!;-0b~!.~!;3~!jb(7b~!;-~!.__vo                            <              <                                                    <
##############################################################################A######################A##############################A$>:i:0b~!$(b~!$?;:50gb~!$)b~!$?^:88+:+(""b~!$?^88+:+b~!$-$-56d+b~!$*b~!$%88+:++""b~!"""rbb*7*31~~~r/

দুটি প্রোগ্রাম 3 দ্বারা অফসেট হয় এবং তারা ফর্মটির ইনপুট নেয়:

<2-digit offset> <text>

অফসেটটি 2 অঙ্কের হতে হবে , সুতরাং 5 টির একটি অফসেট হিসাবে প্রবেশ করানো দরকার 05

এটি একটি দীর্ঘ জমা, তবে প্রায় সমস্ত নন-ফিলার চরগুলি উভয় প্রোগ্রাম দ্বারা ব্যবহৃত হয় । অনেকগুলি শ্বেত স্পেস রয়েছে যা অবশ্যই গল্ফ করা যেতে পারে তবে আমি ভেবেছিলাম প্রোগ্রামটি এইভাবে আরও আকর্ষণীয় হবে।

এই চিত্রটি উভয় প্রোগ্রাম দ্বারা ব্যবহৃত চরগুলি হাইলাইট করে।

ব্যাখ্যা

মূল কনস্ট্রাক্ট যা এটি সম্ভব করে তোলে তা হ'ল _{} -> b~!, যা ডিক্রিপশন প্রোগ্রামে চরগুলি স্বেচ্ছাসেবী এড়ানোর অনুমতি দেয়। কিভাবে?

Encrypt:
  _ : Mirror, but is a no-op if the program flow is horizontal
  { : Shift stack left
  } : Shift stack right

Decrypt:
  b : Push 11 to stack
  ~ : Pop top of stack
  ! : Skip the next instruction

সব মিলিয়ে, এনক্রিপশন প্রোগ্রামটি কিছুই করে না, তবে ডিক্রিপশন প্রোগ্রামটি পরবর্তী নির্দেশাবলী এড়িয়ে যায়। এরপরে এটি বাড়ানো যেতে পারে _{}! -> b~!$, যা এনক্রিপশন প্রোগ্রামের পরিবর্তে চরগুলি নির্বিচারে এড়ানো যায় ।

এগুলি বাদ দিয়ে, প্রোগ্রামের বেশিরভাগ অংশই সংখ্যা ঠেলাঠেলি করে, সেই সংখ্যাগুলিতে অপারেশন করে তারপরে পপ করার উপায়গুলি সন্ধান করে। উদাহরণস্বরূপ, একটি দরকারী কনস্ট্রাক্ট হ'ল ~~ -> ""যা এনক্রিপশন প্রোগ্রামের জন্য দুটি মান পপ করে, তবে ডিক্রিপশন প্রোগ্রামে কিছুই ঠেলে না।


> <>, 149 বাইট

এখানে আকর্ষণীয় সংস্করণটি কম রয়েছে, যা এই সত্যটি ব্যবহার করে যে নির্দেশাবলী অতিক্রম করা হয়নি 2D ভাষায় কার্যকরভাবে মন্তব্য করা হয়েছে comments

এনক্রিপ্ট:

i68*:@-a*i@@-+i~v
4:v?)g31:;?(0:i:/8
(?v48*-+03g%48*+\*
_~\of0.   .1+1fo/
j*+:zq<6B99A6=qz6g
53Ji?C58/8;?r0?C5:
C?EiJ4r?<EFJ3;EtEg
:tAC5EK8l5tKK86t*i

ডিক্রিপ্ট:

^+-~/5"V~^55" ^sk
)/k4}\(&/04|%/^/$-
|4k)-~" %(\y)-~ Q~
TsQd[%#ttt#& &[d$
_~ /of1+7..6+2fo+\
*(?^48*-$-04g%48*/
84:^?)g41:;?(0:i:\
/i68*:@-a*i@@-+i~^

দুটি প্রোগ্রাম 84 দ্বারা অফসেট করা হয়েছে এবং উপরের মতো একইভাবে ইনপুট নেবে। iএনক্রিপশন প্রোগ্রামে (ইনপুট) প্রোগ্রাম প্রবাহকে ডানদিকে বজায় রাখা, এবং ^ডিক্রিপশন প্রোগ্রামে প্রোগ্রামের প্রবাহকে উপরের দিকে (নীচে থেকে ফিরে আসা এবং ফিরে আসা) পুনর্নির্দেশের সাহায্যে প্রথম নির্দেশটি স্থির করে ।

ব্যাখ্যা

এনক্রিপশন প্রোগ্রামের সংশ্লিষ্ট অর্ধেকের জন্য (ডিক্রিপশন প্রোগ্রামটি একই রকম):

i                       read first input digit as char
68*:@-a*                subtract 48 (ASCII "0") and multiply by 10, keeping another 48 on the stack
i                       read second input digit as char
@@-+                    subtract 48 and add to 10*(first digit), giving the offset
i~                      read in space and discard it

--- LOOP ---
:                       copy the offset
i:                      read input char
:0)?;                   check if less than 0 (i.e. EOF) and terminate if so
:13g)?v                 check if greater than ~ in cell (1,3) and drop down if so
48*(?v                  check if less than 32 and drop down if so
48*-+03g%48*+           calculate Caesar shift of the char, fetching 95 from (0,3)

of1+1.                  repeat loop
of0.                    repeat loop

কোডিং সরঞ্জাম

এটি উপরের বাকী পোস্টের সাথে সম্পর্কিত নয়, তবে আমি ভেবেছিলাম যে এটি পোস্ট করার কারণে আমি এটি পোস্ট করব: পি

for(var i=0;i<95;++i){var option=document.createElement("option");option.text=i;document.getElementById("offset").add(option)};function update(m){if(m==1)var code=document.getElementById("in").value;else var code=document.getElementById("out").value;var offset=parseInt(document.getElementById("offset").value);var output="";for(var i=0;i<code.length;i++){var n=code[i].charCodeAt(0);if(n<32||n>127)output+=code[i];else{var c=(n-32+offset*m)%95;output+=String.fromCharCode(c<0?c+95+32:c+32)}}if(m==1)document.getElementById("out").value=output;else document.getElementById("in").value=output};
<html><body><textarea id="in" onkeyup="update(1)" rows=5 style="width:100%"></textarea><textarea id="out" rows=5 style="width:100%" onkeyup="update(-1)"></textarea><select id="offset" onchange="update(1)"></select></body></html>


1

পার্ল - 131

এটি কমান্ড লাইন আরগগুলি থেকে ইনপুট নেয়।

We;{for(split//,$ARGV[1]){print chr(((ord$_)-32+$ARGV[0])%95+32)}};q!LUXmYVROZttqi'8-<AvCnaVXOTZeINXmmmUXJiEnrxwri'8-<AuCnj~zpxwnc!

26 দ্বারা এটিকে স্থানান্তর করা অন্যটিকে দেয়:

q U6!*-B.+'$/IIF>[lapuKwC6+-$)/:}#-BBB*-~>yCGMLE>[lapuJwC?SOEMLC88U,;for(split//,$ARGV[1]){print chr(((ord$_)-32-$ARGV[0])%95+32)};

@ মার্টিন বাটনার ওয়াহ, একটি উর্ধ্বতন! এটা আসলে করে কাজ করে?
কেএসএফটি

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