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

পাইথনে স্টোন সরিয়ে সর্বোচ্চ স্কোর বের করার প্রোগ্রাম


মান লিজিয়ে আমাদের তিনটি ভ্যালু আছে a, b, c। আমরা তিনটি স্টোন পাইল নিয়ে একটি সলিটেয়ার গেম খেলছি যাদের আকার যথাক্রমে a, b, c। প্রতিটি টার্নে খেলাড় দুটি ভিন্ন নন-ইম্পটি পাইল বাছায়, প্রতিটি থেকে একটি করে স্টোন নেয় এবং নিজের স্কোরে ১ যোগ করে। গেমটি শেষ হয় যখন দুইটও নন-ইম্পটি পাইল থাকে না। আমাদের সর্বোচ্চ স্কোর বের করতে হবে।

যেমন, ইনপুট হলে a = 4, b = 4, c = 6, তবে আউটপুট হবে 7 কারণ প্রাথমিক স্টেট (4, 4, 6), এবং আমরা নিচের ধাপগুলো অনুসরণ করতে পারি:

  • ১ম ও ২য় পাইল থেকে নিলে: (3, 3, 6)

  • ১ম ও ৩য় পাইল থেকে নিলে: (2, 3, 5)

  • ১ম ও ৩য় পাইল থেকে নিলে: (1, 3, 4)

  • ১ম ও ৩য় পাইল থেকে নিলে: (0, 3, 3)

  • ২য় ও ৩য় পাইল থেকে নিলে: (0, 2, 2)

  • ২য় ও ৩য় পাইল থেকে নিলে: (0, 1, 1)

  • ২য় ও ৩য় পাইল থেকে নিলে: (0, 0, 0)

এখন দুইটও নন-ইম্পটি পাইল নেই, তাই গেম শেষ।

সমাধানের ধাপসমূহ

  • minimum := min(a, b, c)

  • maximum := max(a, b, c)

  • left := a + b + c - maximum - minimum

  • যদি maximum - left <= minimum হয়, তবে:

    • minimum + left - (1 + minimum - (maximum - left)) // 2 রিটার্ন করুন

  • minimum + min(maximum - minimum, left) রিটার্ন করুন।

উদাহরণ

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

def solve(a, b, c):
    minimum = min(a, b, c)
    maximum = max(a, b, c)
    left = a + b + c - maximum - minimum
    if maximum - left <= minimum:
        return minimum + left - (1 + minimum - (maximum - left)) // 2
    return minimum + min(maximum - minimum, left)

a = 4
b = 4
c = 6
print(solve(a, b, c))

ইনপুট

4, 4, 6

আউটপুট

7

  1. Python-এ সর্বোচ্চ বিল্ডিং হাইট বের করার প্রোগ্রাম

  2. পাইথনে সব সম্ভাব্য বৈধ পথ থেকে সর্বোচ্চ স্কোর বের করার প্রোগ্রাম

  3. পাইথনে অ্যারেতে বাম বা ডান দিক থেকে kটি এলিমেন্ট মুছে সর্বোচ্চ যোগফল বের করার প্রোগ্রাম

  4. পাইথনে সংখ্যা মুছে যাতে সর্বোচ্চ অ্যাডিটিভ স্কোর পাওয়া যায় সেটি বের করার প্রোগ্রাম