কম্পিউটার টিউটোরিয়াল

পাইথনে স্ট্রং পাসওয়ার্ড চেকার


ধরুন একটি স্ট্রিং পাসওয়ার্ড আছে। আমাদের পাসওয়ার্ডকে স্ট্রং করার জন্য ন্যূনতম পরিবর্তনের সংখ্যা বের করতে হবে। পাসওয়ার্ডের মানদণ্ডগুলো −

  • ন্যূনতম ৬ অক্ষর এবং সর্বোচ্চ ২০ অক্ষর দীর্ঘ হতে হবে
  • কমপক্ষে একটি লোয়ারকেস, একটি আপারকেস এবং একটি न्यूमেরিক ক্যারেক্টার থাকতে হবে
  • লগাতার তিনটি একই ক্যারেক্টার থাকতে পারবে না (যেমন ...aaa..., ...PPP..., ...888...)

উদাহরণ: "aa26bbb" ইনপুটের জন্য কমপক্ষে ১টি পরিবর্তন দরকার, কারণ আপারকেস লেটার নেই এবং তিনটি 'b' একসাথে আছে। যেকোনো 'b'-কে আপারকেস লেটার দিয়ে রিপ্লেস করলে স্ট্রং হবে।

সমাধানের ধাপগুলো −

  • missingTypes := 3 সেট করুন
  • যদি কমপক্ষে একটি লোয়ারকেস থাকে তবে missingTypes ১ কমান
  • যদি কমপক্ষে একটি আপারকেস থাকে তবে missingTypes ১ কমান
  • যদি কমপক্ষে একটি নম্বর থাকে তবে missingTypes ১ কমান
  • change := 0, one := 0, two := 0, p := 2
  • while p < len(s) − যদি s[p] == s[p-1] == s[p-2] হয় তবে length কাউন্ট করুন, change += length//3, length%3 অনুযায়ী one বা two বাড়ান
  • যদি len(s) < 6 তবে max(missingTypes, 6-len(s)) রিটার্ন করুন
  • যদি len(s) <= 20 তবে max(missingTypes, change) রিটার্ন করুন
  • অন্যথায় delete = len(s)-20; change -= min(delete, one); change -= min(max(delete-one,0), two*2)//2; change -= max(delete-one-2*two,0)//3; delete + max(missingTypes, change) রিটার্ন করুন

নিচের ইমপ্লিমেন্টেশনটি দেখুন −

উদাহরণ

class Solution(object):
    def strongPasswordChecker(self, s):
        missing_type = 3
        if any('a' <= c <= 'z' for c in s): missing_type -= 1
        if any('A' <= c <= 'Z' for c in s): missing_type -= 1
        if any(c.isdigit() for c in s): missing_type -= 1
        change = 0
        one = two = 0
        p = 2
        while p < len(s):
            if s[p] == s[p-1] == s[p-2]:
                length = 2
                while p < len(s) and s[p] == s[p-1]:
                    length += 1
                    p += 1
                change += length // 3
                if length % 3 == 0: one += 1
                elif length % 3 == 1: two += 1
            else:
                p += 1
        if len(s) < 6:
            return max(missing_type, 6 - len(s))
        elif len(s) <= 20:
            return max(missing_type, change)
        else:
            delete = len(s) - 20
            change -= min(delete, one)
            change -= min(max(delete - one, 0), two * 2) // 2
            change -= max(delete - one - 2 * two, 0) // 3
            return delete + max(missing_type, change)

ob = Solution()
print(ob.strongPasswordChecker('aa26bbb'))

ইনপুট

“aa26bbb”

আউটপুট

1

  1. Linux-এ পাসওয়ার্ড পরিবর্তন করার পদ্ধতি

  2. পাইথনে PDF ফাইল ক্র্যাক (পাসওয়ার্ড খোলা) করা

  3. কয়েন চেঞ্জ সমস্যার পাইথন প্রোগ্রাম

  4. নিরাপদে আপনার উইন্ডোজ ৭ পাসওয়ার্ড পরিবর্তন করুন