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

প্রতিযোগিতামূলক প্রোগ্রামিংয়ের জন্য পাইথন ইনপুট মেথডসমূহ

প্রতিযোগিতামূলক প্রোগ্রামিং-এ ইনপুট যত দ্রুত পড়া যায়, তত সুবিধা मिलে। এই লেখায় পাইথনে বিভিন্ন I/O মেথড আলোচনা করা হলো।

মান लीজিয়ে, আপনি কোডফোর্স বা এসপিওজে (SPOJ) এর মত অনলাইন জাজে আছেন এবং a, b, c, d চারটি সংখ্যা পড়ে তাদের গুণফল প্রিন্ট করতে হবে। এটাকে করতে একাধিক পদ্ধতি রয়েছে।

পদ্ধতি ১: লিস্ট কম্প্রিহেনশন ব্যবহার করে

a, b, c, d = [int(x) for x in input().split()]
print(a * b * c * d)

পদ্ধতি ২: map ফাংশন ব্যবহার করে

a, b, c, d = map(int, input().split())
print(a * b * c * d)

আরেকটি দ্রুত পদ্ধতি হলো stdin এবং stdout ব্যবহার করা।

পদ্ধতি ১ক: stdin এবং stdout দিয়ে লিস্ট কম্প্রিহেনশন

from sys import stdin, stdout
a, b, c, d = [int(x) for x in stdin.readline().rstrip().split()]
stdout.write(str(a * b * c * d) + "\n")

SPOJ INTEST সমস্যা সমাধান

ইনপুট: শুরুতে দুটি পজিটিভ ইন্টিজার n k (n, k ≤ 10⁷)। পরবর্তী n লাইনে একটি করে পজিটিভ ইন্টিজার tᵢ (≤ 10⁹)।

আউটপুট: কতগুলো tᵢ k-দিয়ে বিভাজ্য, সেটি প্রিন্ট করুন।

পদ্ধতি ১: সাধারণ পদ্ধতি (কম দক্ষ)

def main():
    n, k = [int(c) for c in input().split()]
    cnt = 0
    for _ in range(n):
        t = int(input())
        if t % k == 0:
            cnt += 1
    print(cnt)

if __name__ == "__main__":
    main()

পদ্ধতি ২: stdin এবং stdout ব্যবহার (আরো দক্ষ)

from sys import stdin, stdout

def main():
    n, k = [int(c) for c in input().split()]
    cnt = 0
    for _ in range(n):
        t = int(stdin.readline())
        if t % k == 0:
            cnt += 1
    stdout.write(str(cnt))

if __name__ == "__main__":
    main()

পদ্ধতি ৩: পুরো ইনপুট একসাথে পড়া (সর্বোচ্চ দক্ষ)

from sys import stdin, stdout

def main():
    n, k = stdin.readline().split()
    n = int(n)
    k = int(k)
    cnt = 0
    lines = stdin.readlines()
    for line in lines:
        if int(line) % k == 0:
            cnt += 1
    stdout.write(str(cnt))

if __name__ == "__main__":
    main()

নোট: পদ্ধতি ৩ সবচেয়ে দ্রুত কারণ এখানে পুরো ইনপুট একবারে মেমরিতে লোড করা হয় এবং লুপে প্রতিবার সিস্টেম কল না করে সরাসরি লিস্ট থেকে ডেটা নেওয়া হয়।

  1. কুইকসর্টের পাইথন প্রোগ্রাম

  2. উইন্ডোজে পাইথন প্রোগ্রামিং-এ IDE সমূহ

  3. প্রতিযোগিতামূলক কোডিং-এ পাইথন কেন সেরা পছন্দ?

  4. পাইথনে Turtle গ্রাফিক্স: আঙ্কন ও অ্যানিমেশন