প্রেরণা
ইন এই চ্যালেঞ্জ আপনার টাস্ক দুটি স্ট্রিং গুন ছিল, এই স্বাভাবিকভাবেই একটি স্ট্রিং বর্গমূল গ্রহণ করা একটি উপায় প্রবর্তন করে।
এটা কিভাবে কাজ করে?
একটি স্ট্রিং দেওয়া (উদাহরণস্বরূপ 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
(এটি মুদ্রণযোগ্য ব্যাপ্তি), এটি একটি টাইপো - সে সম্পর্কে দুঃখিত।