একটি অ্যারে digits দেওয়া আছে যেটিতে শুধু অঙ্ক রয়েছে। এগুলো থেকে সম্ভাব্য সবচেয়ে ছোট সংখ্যা বানান। তারপর সেই সংখ্যার প্রথম ও শেষ অঙ্ক দিয়ে দুটি সংখ্যা বানান (প্রথম-শেষ এবং শেষ-প্রথম) এবং যাচাই করুন কি সেগুলো প্রাইম।
উদাহরণ
ইনপুট: digits = [5, 2, 1, 7]
আউটপুট: (1257, 17, 71)
ব্যাখ্যা: ছোট সংখ্যা ১২৫৭। প্রথম-শেষ = ১৭ (প্রাইম), শেষ-প্রথম = ৭১ (প্রাইম)।
সমাধান
- অঙ্কগুলোর ফ্রিকোয়েন্সি গণনা করুন।
- ০ থেকে ৯ পর্যন্ত লুপ চালিয়ে ছোট থেকে বড় অঙ্ক যোগ করে সংখ্যা তৈরি করুন।
- প্রথম ও শেষ অঙ্ক নিয়ে দুটি সংখ্যা বানান।
- প্রাইম যাচাই করুন।
উদাহরণ কোড
from collections import defaultdict
def isPrime(num):
if num > 1:
for i in range(2, num):
if num % i == 0:
return False
return True
return False
def solve(arr):
digits_freq = defaultdict(int)
for d in arr:
digits_freq[d] += 1
number = ""
for i in range(10):
for _ in range(digits_freq[i]):
number += str(i)
num = int(number[0] + number[-1])
rev = int(number[-1] + number[0])
if isPrime(num) and isPrime(rev):
return int(number), num, rev
elif isPrime(num):
return number, num
elif isPrime(rev):
return number, rev
else:
return False
digits = [5, 2, 1, 7]
print(solve(digits)) # Output: (1257, 17, 71)
ইনপুট
[5, 2, 1, 7]
আউটপুট
(1257, 17, 71)