যেন এই চ্যালেঞ্জটি স্পিরিটে আরও পাইথোনস্ক হতে পারে ... মার্কভ চেইন বা এনক্রিপশন কৌশলগুলির পূর্বে কোনও জ্ঞানের প্রয়োজন নেই।
আপনি একজন গুপ্তচর, যাকে ব্রিটিশ সুরক্ষা পরিষেবা এম 1 এস থেকে কিছু গুরুত্বপূর্ণ তথ্য নেওয়া দরকার। এম 1 এস এর এজেন্টরা ভাল জানেন যে তাদের ওয়াই-ফাই সংকেতগুলি আটকানো যেতে পারে, তাদের অ্যান্ড্রয়েড / আইওএস সুরক্ষা দুর্বলতাগুলি ইত্যাদি ব্যবহার করা যেতে পারে, তাই তারা সকলেই নোকিয়া 3310 টি পাঠ্য তথ্য প্রেরণ করতে ব্যবহার করছেন যা টি 9 স্বতঃসমাপ্তি ব্যবহার করে টাইপ করা হয় ।
আপনি পূর্বে গোয়েন্দা সংস্থাকে সরবরাহ করার জন্য ফোনগুলি হ্যাক করে দিয়েছিলেন এবং তাদের দুর্দান্ত প্লাস্টিকের কীবোর্ডের অধীনে কীলগারগুলি ইনস্টল করেছিলেন, সুতরাং এখন আপনি তাদের টাইপ করা চিঠির সাথে সংখ্যার ক্রমগুলি পেয়েছেন, সুতরাং " agগল এজেন্টদের বাসা থেকে সতর্কতা ছেড়ে দিয়েছে " হয়ে যায় "
84303245304270533808430637802537808430243687
কিন্তু অপেক্ষা করো! কিছু টি 9 সিকোয়েন্সগুলি অস্পষ্ট ("6263" "নাম", "মাণে" বা "ওও" হতে পারে; যতই অস্পষ্ট, ততই সন্দেহজনক হয়ে ওঠে!), তাহলে আপনি কী করবেন? আপনি জানেন যে এম 1 এস ব্যবহার করে একমাত্র প্রবেশিকা পরীক্ষাটি 15 সেকেন্ডে মার্সেল প্রাউস্টের মাস্টারপিস "রিমেন্ডার অব থিংস অব থিংস" এর সংক্ষিপ্তসার করছে, সুতরাং আপনি পুরো শেফ-ডি'এর ফ্রিকোয়েন্সি বিতরণ অনুযায়ী পূর্ববর্তীটির পরে যে শব্দটি আসে তা বেছে নিতে চান গর্বিত!
আপনি কোডটি ক্র্যাক করতে পারেন এবং মূল বার্তাটি কী হতে পারে তা পেতে পারেন?
টি 9 এর নীতি
টি 9 স্বতঃসমাপ্তি প্রক্রিয়াটি নীচে বর্ণিত হতে পারে। এটি উপরের ছবিতে প্রদর্শিত বর্ণ অনুসারে বর্ণমালার অক্ষরগুলিকে মানচিত্র করে।
abc -> 2
def -> 3
ghi -> 4
jkl -> 5
mno -> 6
pqrs -> 7
tuv -> 8
wxyz -> 9
<space> -> 0
<other> -> <is deleted>
টি 9 ডিক্রিপ্টর অঙ্কগুলির ক্রম পেয়েছে এবং সেই শব্দটি কী টাইপ করতে পারে তা অনুমান করার চেষ্টা করে। এটি একটি স্ট্যান্ডার্ড ফ্রিকোয়েন্সি টেবিল ব্যবহার করতে পারে তবে আমরা আরও এক ধাপ এগিয়ে চলেছি এবং একটি মার্কভ চেইন ব্যবহার করে পরবর্তী শব্দটির পূর্বাভাস দিচ্ছি!
নমুনা শেখা
কর্পাস হয় প্রুস্তের এর "থিংস অতীত স্মরণ" এর এই প্রচন্ডভাবে ছিনতাই সংস্করণ ( s/-/ /g
, s/['’]s //g
এবং s/[^a-zA-Z ]//g
- তফাৎ যাও বিভ্রান্তিকর সম্বন্ধসূচক 's
!) মূলত প্রকাশিত বিশ্ববিদ্যালয়ের অ্যাডিলেড ওয়েবসাইট (এই কাজের টেক্সট অস্ট্রেলিয়ায় সার্বজনিক ডোমেনে আছে)।
পুরো পাঠ্যটিকে একটি স্ট্রিং হিসাবে, একটি দীর্ঘ বাক্য হিসাবে, দীর্ঘ লম্বা শব্দের (যেটি আপনার ভাষার পক্ষে আরও সুবিধাজনক) হিসাবে বিশ্লেষণ করা উচিত , লাইনব্রেকগুলি ছিনিয়ে নেওয়া এবং ফাঁকা জায়গায় শব্দের মধ্যে বিভক্ত করা উচিত । (আমি একটি একক অনুচ্ছেদে ফাইল সরবরাহ করি না কারণ এগুলি গিথুব সরঞ্জামগুলির দ্বারা নষ্ট হয়ে যেতে পারে))
আমি কীভাবে পুরো পাঠটিকে এক স্ট্রিং / বাক্য হিসাবে পড়ব? আর এর একটি উদাহরণ :
p_raw <- read.table("proust.txt", sep="\t") # Because there are no tabs
p_vec <- as.character(p_raw$V1) # Conversion to character vector
p_str <- paste(p_vec, collapse=" ") # One long string with spaces
p_spl <- strsplit(p_str, split=" ")[[1]] # Vector of 1360883 words
proust <- p_spl[p_spl!=""] # Remove empty entries — 1360797
কার্য
একটি সংখ্যা হিসাবে অঙ্কের ক্রম দেওয়া, একটি দীর্ঘ বাক্য হিসাবে বিবেচিত এই প্রশিক্ষণ পাঠ্যের উপর ভিত্তি করে পরবর্তী শব্দ এক্স অনুমান করতে একটি সম্ভাব্য পাঠ্য স্ট্রিংটি যুক্ত T9 কী ব্যবহার করে একটি সম্ভাব্য শৃঙ্খলা ব্যবহার করে টাইপ করা যায় return
তাহলে এক্স পাঠের প্রথম T9 শব্দ এবং একাধিক অনুমান, আছে, এলোমেলোভাবে একটি চয়ন অন্যথায় শুধুমাত্র একটি সম্ভাব্য বাছাই।
সমস্ত পরবর্তী T9- শব্দের জন্য এক্স (i) এর আগে ডিক্রিফারড ডাব্লু (i-1) শব্দের আগে :
- একটি T9 শব্দ যদি এক্স মধ্যে একটি স্বাভাবিক শব্দ পরিবর্তিত করা যায় এক্স এক অনন্য উপায়, এটা না।
- যদি এক্সের জন্য একাধিক রূপান্তর বিকল্প উপলব্ধ থাকে তবে এক্স 1 , এক্স 2 , ... বলুন , পূর্ববর্তী অনুমানিত শব্দটি ডাব্লু দেখুন ।
- যদি ডাব্লু কখনই প্রাউস্টের মূল কাজটিতে এক্সে ম্যাপ করে এমন কিছু অনুসরণ না করে , সম্ভাব্য এক্স 1, এক্স 2, ... এলোমেলোভাবে বেছে নিন।
- তাহলে W X সবসময় অনুরূপ W X1 মূল এবং কোন সমবর্তী আছে একাদশ খামকা মধ্যে ম্যাপ করা যেতে পারে এক্স , বাছাই X1 ।
- তাহলে W X রূপান্তরিত করা যেতে পারে W X1 , W x2 , ... যে কর্পাস খুঁজে পাওয়া যেতে পারে, তবে সব সম্ভব গণনা একাদশ 'যে ফলো গুলি W এবং ম্যাপ এক্স কর্পাস এবং বাছাই একাদশ সম্ভাব্যতা সঙ্গে একাদশ / (X1 + x2 + ...) ।
উদাহরণ 2a। যদি বার্তাটি থাকে তবে 76630489
কোথায় 489
হতে পারে guy
বা ivy
(তারা কমপক্ষে একবার কর্পাসে উপস্থিত হবে), (খুব সম্ভবত প্রথম শব্দ) 7663
হিসাবে ডিক্রিফার করা যেতে পারে some
। যদি কর্পাসে some
মানচিত্রের কোনও কিছু অনুসরণ 489
না করে থাকে তবে সম্ভাব্যতা 0.5 দিয়ে বাছুন guy
বা ivy
এলোমেলোভাবে।
উদাহরণ 2 বি। যদি বার্তাটি থাকে তবে 766302277437
কোথায় বা 2277437
হতে পারে , ততই ডিক্রিফার করা যেতে পারে । যদি প্রাউস্ট সর্বদা ব্যবহৃত হয় এবং কখনই না হয় তবে বেছে নিন ।barrier
carrier
7663
some
some carrier
some barrier
some carrier
উদাহরণ 2 সি। মনে করুন আপনি ক্রমটি ডিসাইফার করতে চান 536307663
। 5363
যেমন পূর্বাভাস ছিল lend
। 7663
এর মধ্যে যে কোনো হতে পারে: pond
, roof
এবং some
। আপনি lend
নমুনা কর্পাসে নিম্নলিখিত শব্দটির উপস্থিতি গণনা করুন । মনে করুন আপনি এরকম কিছু পেয়েছেন (কেবল উদাহরণস্বরূপ):
T9 Word following lend Occurrences
7663 some 7
7663 pond 2
7663 roof 1
সুতরাং যদি 7663
এর আগে হয় lend
, 7/(7+2+1)=70%
সম্ভাবনা রয়েছে যা 20% এবং 10% এর 7663
জন্য দাঁড়িয়েছে । আপনার অ্যালগরিদম 70% ক্ষেত্রে, 20% ক্ষেত্রে ইত্যাদিতে উত্পন্ন করা উচিত etc.some
pond
roof
lend some
lend pond
আপনি নিরাপদে ধরে নিতে পারেন যে এজেন্টরা কেবল এজে অক্ষর এবং স্পেস ব্যবহার করে (কোনও বিরাম চিহ্ন, কোনও অধিকার নেই 's
, এবং কোনও সংখ্যা নেই)।
আপনি এটিও ধরে নিতে পারেন যে এম 1 এস এর এজেন্টরা কখনই "রিমেনার অব থিংস পাস্ট" (যেটি 29,237 শব্দের সম্পূর্ণ শব্দভাণ্ডার!) এর বাইরে কোনও শব্দ ব্যবহার করে না ।
এই চ্যালেঞ্জটিতে টি 9 ফোক্যালারিটি কার্যকর করা হয়েছিল , সুতরাং আপনার এটির দিকে নজর দেওয়া যেতে পারে।
আপনি যদি কোনো সাহায্যের প্রয়োজন হয়, তাহলে সম্ভাব্য চেইন মহান মধ্যে আয়ত্ত করা হয়েছিল এই , যে এবং নিম্নলিখিত চ্যালেঞ্জ, কিন্তু আপনি এমন ধরনের চেইন নীতিকে জানা প্রয়োজন না: সবকিছু টাস্ক বিবৃত করা হয়।
পরীক্ষার মামলা
--Inputs--
20784250276960369
20784250276960369
84303245304270533808430637802537808430243687
94280343084306289072908608430262780482737
94280343084306289072908608430262780482737
--Possible outputs--
c quick brown fox
a stick crown fox
the eagle gas left the nest blest vie agents
what did the navy pay to the coast guards
what did the navy raz un the coast guards
নিয়মাবলী:
- স্ট্যান্ডার্ড লুফোলস প্রযোজ্য।
- আপনি আসল বার্তাটি জানেন না, আপনি যা পেয়েছেন তা হ'ল অঙ্কগুলির ক্রম এবং proust.txt ফাইল যা আপনার কেবল মেমরি / ওয়ার্কস্পেস / যা কিছুতেই লোড করতে হবে। স্বাবলম্বী কিছু থাকার দরকার নেই; ধরে
proust.txt
নেওয়া সর্বদা অ্যাক্সেসযোগ্য। - একাধিক ডিক্রিপশন বিকল্প কর্পাস অনুসারে সম্ভাব্য হলে আপনার অ্যালগরিদম অবশ্যই সম্পর্কিত সম্ভাব্যতার সাথে বিভিন্ন আউটপুট উত্পাদন করতে সক্ষম হবে (উদাহরণ 2 সি দেখুন)।
আপনার যথাসম্ভব বিচক্ষণ থাকা দরকার, তাই সংক্ষিপ্ততম কোডটি জয়ী হয়!
PS এই সম্ভাব্যতা সংক্রান্ত অ্যালগরিদমের সুস্পষ্ট সুবিধা হ'ল এই বিষয়টি যে আপনি একটি দ্ব্যর্থহীন deciphered স্ট্রিংয়ের জন্য সত্যিকারের আসল স্ট্রিংটি পাবেন তবে অপেক্ষা করুন ...
আংশিক মিলের দ্বারা পিপিএস ভবিষ্যদ্বাণীও দেখুন ।