প্রেরণা
ইন এই চ্যালেঞ্জ আপনার টাস্ক দুটি স্ট্রিং গুন ছিল, এই স্বাভাবিকভাবেই একটি স্ট্রিং বর্গমূল গ্রহণ করা একটি উপায় প্রবর্তন করে।
এটা কিভাবে কাজ করে?
একটি স্ট্রিং দেওয়া (উদাহরণস্বরূপ pub) আপনাকে প্রথমে যা করতে হবে তা হল প্রতিটি অক্ষরের জন্য ASCII কোড নির্ধারণ করা :
"pub" -> [112, 117, 98]
এরপরে আপনি প্রতিটি মানকে [0..94]বিয়োগ করে এই কোডগুলি পরিসরে ম্যাপ করুন 32:
[112, 117, 98] -> [80, 85, 66]
এখন আপনাকে প্রতিটি মানটির মূল মডিউলগুলি খুঁজে বার করতে হবে 95(উদাহরণস্বরূপ 40*40 % 95 = 80, আপনি এটিও বেছে নিতে পারেন 55):
[80, 85, 66] -> [40, 35, 16]
এবং অবশেষে আপনি এটিকে আবার ব্যাপ্তিতে মানচিত্র করবেন [32..126]এবং এটিকে আবার স্ট্রিংয়ে রূপান্তর করবেন:
[40, 35, 16] -> [72, 67, 48] -> "HC0"
প্রকৃতপক্ষে "HC0" ⊗ "HC0" = "pub"আপনি এখানে অন্যান্য চ্যালেঞ্জ থেকে একটি সমাধান সঙ্গে যাচাই করতে পারেন ।
মডুলার গাণিতিকের সাথে পরিচিত ব্যক্তিরা সম্ভবত লক্ষ্য করেছেন যে বর্গমূলের মডুলো 95সর্বদা উপস্থিত থাকে না, উদাহরণস্বরূপ এর কোনও মূল নেই 2। এরকম ক্ষেত্রে স্ট্রিংয়ের বর্গমূলের সংজ্ঞা দেওয়া হয়নি এবং আপনার প্রোগ্রাম / ফাংশনটি ক্র্যাশ হতে পারে, অনির্দিষ্টকালের জন্য লুপ করতে পারে ইত্যাদি may
আপনার সুবিধার জন্য, এখানে বর্গমূল রয়েছে এমন অক্ষরের তালিকার তালিকা (প্রথমটি একটি স্থান)
!$%&)+03489:>CDGLMQVW]`bjlpqu
বিধি
- আপনি একটি প্রোগ্রাম / ফাংশন লিখবেন যা একটি স্ট্রিং (বা অক্ষরের তালিকা) হিসাবে যুক্তি হিসাবে গ্রহণ করবে এবং উপস্থিত থাকলে কোনও বর্গমূল প্রদান করবে
- আপনি ধরে নিতে পারেন ইনপুটটির সর্বদা একটি বর্গমূল থাকে
- ইনপুটটিতে একটি খালি স্ট্রিং থাকতে পারে
- ইনপুট মুদ্রণযোগ্য ব্যাপ্তিতে থাকবে (
[32..126]) - আউটপুটটি হয় কনসোলে মুদ্রিত হয় বা বর্গমূল উপস্থিত থাকলে আপনি একটি স্ট্রিং ফিরিয়ে দেন
- যদি বর্গমূলের অস্তিত্ব না থাকে তবে আপনার প্রোগ্রাম / ফাংশনের আচরণটি অপরিবর্তিত রয়েছে
- আপনি যদি কনসোলটির মূলটি নতুন লাইনে বা হোয়াইটস্পেসে প্রিন্ট করতে চান তবে তা ভাল
পরীক্ষার মামলা
মনে রাখবেন যে এগুলি কেবলমাত্র একমাত্র সমাধান নয়:
'' -> ''
'pub' -> 'HC0'
'pull!' -> 'HC33!'
'M>>M' -> '>MM>'
'49' -> '4%'
'64' -> undefined
'Hello, World!' -> undefined
0-94(এটি মুদ্রণযোগ্য ব্যাপ্তি), এটি একটি টাইপো - সে সম্পর্কে দুঃখিত।