পাসওয়ার্ড ক্র্যাক করার জন্য সেই হিংসাত্মক প্রোগ্রামগুলি মনে রাখবেন যা তারা চেষ্টা করছে এমন প্রতিটি সংমিশ্রণ দেখায়? আরও স্পষ্টতই, এক পর্যায়ে, এন প্রথম অক্ষরগুলি স্থির করা হয় (সেগুলি সফলভাবে অনুমান করা হয়েছে), এবং বাকী অক্ষরের জন্য প্রতিটি সম্ভাব্য চরিত্র পরীক্ষা করা হচ্ছে। আপনি সম্ভবত কিছু সিনেমা দেখেছেন বা এমন কিছু সফ্টওয়্যার যা লোকেরা লিখেছেন অভিনব ইন্টারফেস পছন্দ করে।
হতাশার জন্য দুঃখিত, তবে আমরা পাসওয়ার্ড ক্র্যাক করার জন্য একটি প্রোগ্রাম লিখব না, কেবলমাত্র সুন্দর আউটপুট পুনরুত্পাদন করতে one
চ্যালেঞ্জ
মুদ্রণযোগ্য আসকি অক্ষরযুক্ত একটি স্ট্রিং দেওয়া হয়েছে তবে কোনও নতুনলাইন নেই (ascii কোড 32 থেকে 126 বা রেজেক্সের সাথে মিলছে ^[ -~]{2,}$
), এই বিধি অনুসরণ করে একটি আউটপুট মুদ্রণ করুন:
- সময়ে
t=n seconds
,n
মুদ্রিত প্রথম অক্ষরn
ইনপুট স্ট্রিং এর প্রথম অক্ষর। n
নির্দিষ্ট অক্ষরগুলির পরে , আপনাকে প্রাথমিকের দৈর্ঘ্যের একটি স্ট্রিং গঠনের জন্য একটি স্ট্রিং গঠিত এলোমেলো অক্ষর (ইউনিকোড পরিসীমাথেকে
~
কোড অভিন্নভাবে সিউডো-এলোমেলোভাবে বেছে নেওয়া হয়েছে) (কোড 32 থেকে 126) সংযোজন করা উচিত ।- আপনার কমপক্ষে কমপক্ষে (আরও পরে) আরও 20 টি লাইন আউটপুট করা উচিত : তাদের প্রত্যেকেরই
n
প্রথম অক্ষর একই হবে তবে ভিন্ন এলোমেলো প্রান্ত থাকবে।
আপনার কী করা উচিত তা এখনও খুব স্পষ্ট নয়, সুতরাং একটি উদাহরণ দেওয়া যাক:
উদাহরণ
আমি এটিকে আরও পঠনযোগ্য করে তুলতে কেবলমাত্র 20 ন্যূনতম পরিবর্তে প্রতি সেকেন্ডের জন্য কেবল 5 টি ভিন্ন লাইন প্রিন্ট করব।
ইনপুট বিবেচনা করুন abcde
।
প্রথম সেকেন্ডের সময়, একটি বৈধ আউটপুট এমন কিছু হতে পারে (সম্পূর্ণরূপে এলোমেলো):
dGuT4
S!jkN
"gQ>[
TU3!
*fAjV
তারপরে, t=1
নিম্নলিখিত প্রতিটি স্ট্রিংয়ের a
প্রথম অক্ষরটি হবে ( ইনপুটটির প্রথম অক্ষর):
a);jD
aHv^p
aqw5*
a|.?:
a{gbK
এখন, t=2
প্রথম দুটি অক্ষর হবে ab
:
abTJ"
ab\ e
ab3T#
abYWS
ab"#<
এখন, t=3
প্রথম তিনটি অক্ষর হবে abc
:
abcvW
abc3G
abc(g
abc{@
abc@4
এখন, t=4
প্রথম চারটি অক্ষর হবে abcd
:
abcdD
abcdv
abcdj
abcd$
abcd6
অবশেষে, t=5
আমরা ইনপুটটি মুদ্রণ করি (কেবল একবার):
abcde
কয়েকটি নির্ভুলতা
- সেকেন্ডের দিকে আপনার ভাষার নির্ভুলতার সাথে আপনার খুব বেশি বিরক্ত করা উচিত নয় (উদাঃ যদি আপনার অ্যালগরিদম সঠিক হয় তবে আপনার সিস্টেম / ভাষায় যথাযথতার অভাব হয় তবে তা ঠিক আছে)।
- প্রথম সেকেন্ডটি এক সেকেন্ডের চেয়ে কম হতে পারে (এটি যদি আপনি একটি সেকেন্ডের সময় প্রোগ্রাম চালু করেন তবে প্রথম সেকেন্ডটি বর্তমান সেকেন্ডের শেষ হওয়া পর্যন্ত অবশিষ্ট সময় হতে পারে)। বা অন্যভাবে বলতে গেলে, আউটপুটগুলি মুদ্রণ শুরু করতে আপনাকে নতুন দ্বিতীয় শুরু করার জন্য অপেক্ষা করতে হবে না।
- কমপক্ষে 20 সেকেন্ডে প্রতি সেকেন্ড : আরও প্রাকৃতিক উপায়ে প্রতি সেকেন্ডে (বা একটি সময়সীমা, বা যাই হোক না কেন) একটি বিশেষ আচরণের সাথে একটি অসীম লুপ হবে, যার ফলস্বরূপ সম্ভবত প্রতি সেকেন্ডে কয়েক হাজার লাইন হবে (এবং এটি পুরোপুরি ঠিক আছে! )। তবে আপনার যদি অন্য ধারণা থাকে তবে যতক্ষণ না আপনি প্রতি সেকেন্ডে কমপক্ষে 20 লাইন প্রিন্ট করবেন ততক্ষণ এটি ব্যবহার করতে দ্বিধা বোধ করবেন।
- ইনপুটটি সর্বদা 2 টিরও বেশি অক্ষরের দীর্ঘ হবে।
- আপনি বিবেচনা করতে পারেন যে ইনপুটটি 30 টি অক্ষরের বেশি হবে না যদি এটি সাহায্য করে। (তবে এটি যদি দীর্ঘ সময়ের জন্য কাজ করে তবে এটি সর্বোত্তম জন্য)
- ইনপুট ফর্ম্যাটটি আপনার ভাষার কোনও স্ট্রিংয়ের সর্বাধিক প্রাকৃতিক উপস্থাপনা হওয়া উচিত।
- আপনাকে একটি ট্রেলিং নিউলাইন মুদ্রণের অনুমতি দেওয়া হয়েছে।
কোড উদাহরণ
আপনার এখনও ঠিক কী করতে হবে তা আপনি যদি বুঝতে না পারেন তবে লিনাক্স টার্মিনালে নিম্নলিখিত কোডটি চালাতে পারেন:
perl -F -aplE 'map{$t=time;print$s,map{chr 32+rand 94}@F until$t-time;$s.=shift@F}@F' <<< "Cracking in progress\!"
বিজয়ী মানদণ্ড
এটি কোড-গল্ফ , তাই বাইট জিতে সংক্ষিপ্ততম কোড!
স্যান্ডবক্সে তাদের পরামর্শ এবং উন্নতির জন্য লাইকনি এবং Flp.Tkc ধন্যবাদ।
\r
(এনিমেশনের মতো একে অপরের অনস্ক্রিনকে প্রতিস্থাপন করা), বা \n
গ্রহণযোগ্য?
\n
পুরোপুরি গ্রহণযোগ্য। সংস্করণটি \r
এখানে ঠিক আছে কারণ এটি আরও ভাল দেখাচ্ছে তবে আপনার এটির দরকার নেই \r
।