গোপন বার্তাটি ডিকোড করুন!


11

ভূমিকা

একদিন, আপনি কেবলমাত্র সিআইএতে আপনার অফিসে শিথিল হয়েছিলেন, যখন হঠাৎ আপনি আপনার কম্পিউটারে একটি সতর্কতা দেখেন। আপনার প্রোগ্রামগুলি সবেমাত্র কয়েকশো কোডেড বার্তা আটকেছে! একটি দ্রুত পরীক্ষা এনকোডিংয়ের নিয়মটি প্রকাশ করে তবে দ্রুত ডিকোড করার জন্য আপনার একটি প্রোগ্রামের প্রয়োজন।

চ্যালেঞ্জ

আপনাকে কমা দ্বারা পৃথক করা স্ট্রিংগুলির একটি তালিকা দেওয়া হবে। প্রতিটি স্ট্রিংয়ে হয়:

  • কোডেড বার্তার অংশ
    • যদি তা না হয় এটা কোডেড বার্তা অংশ না আকারে a=b। মনে রাখবেন যে, এটা হল বার্তা যদি তা না হয় অংশ ab=c। কোডিং বার্তায় এই স্ট্রিংটি যুক্ত করুন।
  • এনকোডিং প্রকল্পের অংশ
    • এটি আকারে হবে a=b। এর অর্থ বার্তায় থাকা সমস্তগুলি অবশ্যই বি এর দ্বারা প্রতিস্থাপিত হবে। নোট করুন যে এটি হতে পারে a==, এর অর্থ সমস্ত অ্যাসকে অবশ্যই = এর সাথে প্রতিস্থাপন করতে হবে।

আপনার প্রোগ্রামটি অবশ্যই বার্তাটি আউটপুট করতে হবে, পাওয়া স্কিমটি ব্যবহার করে ডিকোড করে।

অন্যান্য তথ্য: আপনার ইনপুটটিতে কেবল স্ট্রিং আলাদা করার জন্য কমা থাকবে mas এটিতে অন্যান্য অক্ষর থাকতে পারে, যেমন! 1 # ইত্যাদি It এতে বড় হাতের অক্ষর থাকবে না। ডিকোডিং তথ্যের বিটগুলি একে অপরকে ডিকোড করে না। ডকোডিং তথ্য দ্বারা কেবল বার্তাটি প্রভাবিত হয়। প্রতিটি চরিত্রের জন্য কেবল একটি প্রতিস্থাপন দেওয়া হবে, যেমন না"io,"i=u","i=g"

উদাহরণ

ইনপুট:"ta","y=s","y","a=e","b=t","b"," ","j","j=1"

আউটপুট:test 1

ইনপুট:"z=p","zota","g=e","yugkb","y=t","u=o","k=s","li","fg","b=="

আউটপুট:potatoes=life

ইনপুট:"p","=","==n","ot","p=a","hiz","i=e","z=r"

আউটপুট:another

এটি , তাই বাইট জেতে সংক্ষিপ্ত উত্তর!


ওহ, দুঃখিত! সম্পাদনা করা
পাইডুড

ট্রানজিটিভিটি এবং বিজ্ঞপ্তি সম্পর্কে কী, যেমন "massega","e=a","a=e"এবং এর মতো?
জোনাথন অ্যালান

1
ডিকোডিং তথ্যের বিট একে অপরকে ডিকোড করে না। ডকোডিং তথ্য দ্বারা কেবল বার্তাটি প্রভাবিত হয়।
পাইদুড

1
এছাড়াও, প্রতিটি চরিত্রের জন্য কেবলমাত্র একটি প্রতিস্থাপন দেওয়া হবে, উদাহরণস্বরূপ"io,"i=u","i=g"
পাইডুড

1
ধন্যবাদ, আমি এই তথ্যটি নির্দিষ্টকরণে যুক্ত করার পরামর্শ দিচ্ছি।
জোনাথন অ্যালান

উত্তর:


1

জেলি , 19 বাইট

ḊṖ⁼“=”
ÇÐfKm2yÇÐḟF$

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

কিভাবে?

ḊṖ⁼“=” - Link 1, isMappngElement?: string
Ḋ      - dequeue
 Ṗ     - pop
   “=” - char-list,['=']
  ⁼    - equal?

ÇÐfKm2yÇÐḟF$ - Main link: list of strings
 Ðf          - filter keep:
Ç            -     last link (1) as a monad
   K         - join with spaces
    m2       - modulo 2 slice (every other character)
           $ - last two links as a monad:
        Ðḟ   -     filter discard:
       Ç     -         last link (1) as a monad
          F  -     flatten
      y      - translate right according to the mapping of left

খুব আকর্ষণীয়, এম 2 "মডুলো 2 স্লাইস" বলতে কী বোঝায়?
ম্যাজিক অক্টোপাস আরন

mডায়াডিক পরমাণু যা বাম * এর প্রতিটি ডান-তম উপাদান নেয়। এখানে উদাহরণস্বরূপ, ['x','=','y','<space>','a','=','b']m2ফলন হবে ['x','y','a','b']। (* যদি ডানটি শূন্য না হয় তবে পরিবর্তে এটি প্রতিবিম্ব সংযোজন করে))
জোনাথন অ্যালান

5

পাইথন 3, 98

lambda l:''.join(x*('='!=x[1:-1])for x in l).translate({'='!=x[1:-1]or ord(x[0]):x[2:]for x in l})

এই lambdaফাংশনটি স্ট্রিংগুলির একটি তালিকা (ইনপুট) গ্রহণ করে এবং একটি স্ট্রিং (ডিকোডেড বার্তা) দেয়।

উদাহরণ:

>>> f(['ta', 'y=s', 'y', 'a=e', 'b=t', 'b', ' ', 'j', 'j=1'])
'test 1'
>>> f(['z=p', 'zota', 'g=e', 'yugkb', 'y=t', 'u=o', 'k=s', 'li', 'fg', 'b=='])
'potatoes=life'
>>> f(['p', '=', '==n', 'ot', 'p=a', 'hiz', 'i=e', 'z=r'])
'another'

আপনার কি দরকার: -1 বা উইল: 2 টি কাজ করবে?
ডিএসএম

1
@ ডিডিএস আমি মনে করি এটি দরকার কারণ '=' == x[1:2]এটি সত্য হবে x = 'a=bc', যা এনকোডিং প্রকল্পের একটি অংশ নয়
ভল্টাহ

1
আহ, ভালো কথা!
ডিএসএম

2

হাস্কেল, 85 বাইট

f x=[(a,b)|[a,'=',b]<-x]
h x=map(\v->maybe v id$lookup v$f x)$concat[c|c<-x,[]==f[c]]

ব্যবহার

>h ["p","=","==n","ot","p=a","hiz","i=e","z=r"]
>"another"

বিবরণ

f একটি সারণী তৈরি করে।

concat[c|c<-x,[]==f[c]] বার্তা নিষ্কাশন।

map(\v->maybe v id$lookup v$f x) সুগন্ধি চেহারা।


2

জাভাস্ক্রিপ্ট (ES6), 87 বাইট

(l,s='',d={})=>l.map(v=>/.=./.test(v)?d[v[0]]=v[2]:s+=v)&&[...s].map(c=>d[c]||c).join``

<input id=a oninput="try{b.innerText=((l,s='',d={})=>l.map(v=>/.=./.test(v)?d[v[0]]=v[2]:s+=v)&&[...s].map(c=>d[c]||c).join``)(eval(`[${a.value}]`))}catch(e){}"/>
<p id=b />


1

রেটিনা, 84 82 77 74 বাইট

ইনপুট হিসাবে কমা-বিচ্ছিন্ন তালিকা নেয়। চলমান নিউলাইনটি নোট করুন

^ | $
,,
+ + `, (। =।) (। *)
$ 2 $ 1
এম ও `* ,, * \ = 1! (।) |।।।। +
% `*, $ (।) |।। * (।)
$ 1 $ 2
\ N |,

অনলাইনে চেষ্টা করে দেখুন!

ব্যাখ্যা:

প্রথমে আমরা ফর্মের সমস্ত এক্সপ্রেশনটি .=.স্ট্রিংয়ের শেষে সরিয়ে নিয়ে ডাবল কমা ( ,,) দিয়ে বার্তাটি থেকে পৃথক করি । এটি তাই যে পরবর্তী পদক্ষেপে, আমরা প্রতিটি অক্ষরের পরে ,,কোনও মিল আছে কিনা তা পরীক্ষা করে সমস্ত এনকোডিংগুলি সন্ধান করতে পারি =.। এটি অর্জন করা হয় M!&`(.).*,,.*\1=.|.+,যার মাধ্যমে এই জাতীয় সমস্ত মিল খুঁজে পাওয়া যায় এবং সেগুলি স্ট্রিংগুলির একটি লাইনফিড বিচ্ছিন্ন তালিকায় রাখে। তারপরে আমরা প্রতিটি স্ট্রিংটি কেবলমাত্র একটির একটি কোডবিহীন অক্ষর বা অক্ষরের এনকোডড সংস্করণ ধারণ করতে পরিবর্তিত করি। অবশেষে আমরা সমস্ত লাইনফিড এবং কমাগুলি খালি স্ট্রিংয়ের সাথে প্রতিস্থাপন করি যাতে আমাদের আউটপুটটি সুন্দরভাবে ফরম্যাট হয়।


0

ব্যাচ, 188 বাইট

@echo off
set/pm=
set c=
for %%s in (%m%)do call:c %%s "%%c%%%%~s" not
for %%s in (%m%)do call:c %%s "%%c:%%~s%%"
echo %c%
exit/b
:c
set s=%~1
if %3 "%s:~1,1%"=="=" call set c=%~2

ব্যাখ্যা: দু'বার স্ট্রিংয়ের তালিকার মধ্য দিয়ে লুপগুলি (সুবিধাজনকভাবে forসিএসভি ফর্ম্যাটে একটি স্ট্রিং পছন্দ করে)। প্রথমবারে, =দ্বিতীয় অক্ষর হিসাবে একটি স্ট্রিং নেই এমন স্ট্রিংগুলি সন্ধান করে এবং ফলাফলটিতে তাদেরকে সম্মতি জানায়। দ্বিতীয়বার, =দ্বিতীয় অক্ষর হিসাবে একটি স্ট্রিংগুলি অনুসন্ধান করে এবং প্রতিস্থাপনটি সম্পাদন করে। (আরও সুবিধাজনকভাবে, বিকল্পটি ইতিমধ্যে ব্যাচের ফর্ম্যাটে রয়েছে))



0

পিএইচপি, 89 87 বাইট

দুটি সংস্করণ:

while(a&$s=$argv[++$i])3==strlen($s)&"="==$s[1]?$t[$s[0]]=$s[2]:$m.=$s;echo strtr($m,$t);
while(a&$s=$argv[++$i])preg_match("#^.=.$#",$s)?$t[$s[0]]=$s[2]:$m.=$s;echo strtr($m,$t);

কমান্ড লাইন আর্গুমেন্ট থেকে ইনপুট নেয়; সাথে চালানো -nr

  • আর্গুমেন্টের জন্য পরামিতি তৈরির মধ্য দিয়ে লুপ করুন strtr
    (যুক্তিতে যদি যুক্ত থাকে তবে অনুবাদ =, অন্য কোনও বার্তা)।
  • সঞ্চালন strtr

0

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

vy'=åyg3Q&iyˆyS}})øJÁ¨`¹¯KJ.Ás‡

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

vy              }
  '=åyg3Q&                      # See if it's length 3 with an equals in the mid.
          iyˆyS                 # If so, add to global array, split into chars.
               } 
                 )øJÁ¨`         # Transpose, join, and remove the middle =.
                       ¹¯KJ     # Push original input without decryption key.
                           .Ás‡ # Shift stack to the right, swap and transliterate.
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.