এমএটিএল, by০ বাইট (মোট)
f'(.{'iV'})(.{1,'2GqqV'})'5$h'$1'0'$2'0K$hYX2Get2LZ)P2LZ(!tg)i?&S]1Gw)
এমএটিএল অনলাইন এ চেষ্টা করুন
দেখুন একাধিক পরীক্ষার কেস
F
স্ট্রিংটি encipher করতে তৃতীয় ইনপুট হিসাবে একটি পতাকা নেয় ,T
এনকিফার করতে এটি বোঝার ( এই ধারণার জন্য কেভিন ক্রুইজসেনকে ধন্যবাদ )।
জুলিয়া উত্তর হিসাবে এটি শুরু হয়েছিল যতক্ষণ না বুঝতে পেলাম কঠোর টাইপিং খুব বেশি হয়ে গেছে, বিশেষত সিদ্ধান্তের জন্য her এনসিফারমেন্টের জন্য আমার কাছে জুলিয়া কোডটি রয়েছে (টিআইওর জন্য v0.6 এ ব্যাকপোর্ট করা হয়েছে):
!M=(M[2:2:end,:]=flipdim(M[2:2:end,:],2);M)
s|n=replace(String((!permutedims(reshape([rpad(replace(s,Regex("(.{$n})(.{1,$(n-2)})"),s"\1ø\2ø"),length(s)*n,'ø')...],n,:),(2,1)))[:]),"ø","")
এটি অনলাইন চেষ্টা করুন!
ব্যাখ্যা:
রেল বেড়া অপারেশন
F . . . A . . . Z . . . .
O . B . R . A . Q . X
O . . . B . . . U
ইনপুট এর r = 3 টি অক্ষর পড়া, তারপরে আর -2 টি অক্ষর পড়ার এবং ডামি মান (নালাগুলি) সহ উপস্থাপিত এবং প্রত্যয় যুক্ত হিসাবে দেখা যায়, তারপরে আবার আর অক্ষরগুলি পড়তে ইত্যাদি every প্রতিবার একটি নতুন কলাম তৈরি করা হিসাবে দেখা যায়:
F.A.Z.
OBRAQX
O.B.U.
তারপরে প্রতিটি দ্বিতীয় কলামকে বিপরীত করা (যেহেতু জিগজাগের জাগ অংশটি নীচের পরিবর্তে উপরে চলে যায়, যা r> 3 এর পরে একটি পার্থক্য করে), তারপরে সারি বরাবর এই ম্যাট্রিক্সটি পড়া এবং ডামি অক্ষরগুলি সরিয়ে ফেলা হয়।
অনুচ্ছেদে এর মতো সুস্পষ্ট নিদর্শন রয়েছে বলে মনে হয় নি, তবে এ সম্পর্কে অনুসন্ধান করার সময় আমি এই পোস্টটি জুড়ে এসে পৌঁছেছিলাম , যা আমাকে বলেছিল যে (ক) রেল সাইফারদের জন্য এটি একটি সুপরিচিত এবং (সম্ভবত?) প্রকাশিত অ্যালগরিদম ছিল এবং ( খ) ডিক্রিফারমেন্টটি একই পদ্ধতির একটি সহজ পুনরায় ব্যবহার ছিল, এটি স্ট্রিংয়ের সূচকগুলি দেয় এবং এনসিফারমেন্টের পরে সেই সূচকগুলির সূচকগুলি পেয়েছিল এবং সেই জায়গাগুলিতে সাইফেরেক্সট পাঠ করে।
যেহেতু সূচকে কাজ করে সিদ্ধান্ত গ্রহণের দরকার হয়, সুতরাং এই কোডটি স্ট্রিংয়ের সূচকগুলি বাছাই করে এনকিফারমেন্ট করে এবং তারপরে এই ক্ষেত্রে কেবল পুনরায় সাজানো সূচকগুলিতে সূচক তৈরি করা হয়।
% implicit first input, say 'FOOBARBAZQUX'
f % indices of input string (i.e. range 1 to length(input)
'(.{'iV'})(.{1,'2GqqV'})'5$h
% Take implicit second input, say r = 3
% Create regular expression '(.{$r})(.{1,$(r-2)})'
% matches r characters, then 1 to r-2 characters
% (to allow for < r-2 characters at end of string)
'$1'0'$2'0K$h % Create replacement expression, '$1\0$2\0'
YX % Do the regex replacement
2Ge % reshape the result to have r rows (padding 0s if necessary)
t2LZ) % extract out the even columns of that
P % flip them upside down
2LZ( % assign them back into the matrix
! % transpose
tg) % index into the non-zero places (i.e. remove dummy 0s)
i? % read third input, check if it's true or false
&S] % if it's true, decipherment needed, so get the indices of the
% rearranged indices
1Gw) % index the input string at those positions