সমস্যা বিবরণ
একটি সংখ্যাসূচক সিরিজ দেওয়া আছে। লক্ষ্য হলো যেসব সংখ্যা পূর্ণবর্গ (perfect square) অর্থাৎ কোনো পূর্ণসংখ্যার বর্গ (যেমন ১, ৪, ৯, ১৬, ২৫, ৩৬, ৪৯...), সেগুলো ফিল্টার করে বের করা।
ইনপুট সিরিজ
0 14
1 16
2 30
3 49
4 80
সমাধান ১: ম্যাথ লাইব্রেরি ও লুপ ব্যবহার করে
import pandas as pd
import math as m
l = [4, 16, 30, 49, 80]
data = pd.Series(l)
print("মূল সিরিজ:")
print(data)
lis = []
for i in range(len(data)):
for j in data:
if data[i] == int(m.sqrt(j) + 0.5) ** 2:
lis.append(data[i])
print("\nপূর্ণবর্গ সংখ্যাগুলো:")
print(data[data.isin(lis)])
সমাধান ২: Lambda Filter ও math.sqrt ব্যবহার করে (সংক্ষিপ্ত)
import pandas as pd
import math as m
l = [14, 16, 30, 49, 80]
data = pd.Series(l)
# পূর্ণবর্গ চেক: sqrt(x) ইন্টেজার কিনা
result = pd.Series(filter(lambda x: x == int(m.sqrt(x) + 0.5) ** 2, l))
print("পূর্ণবর্গ সংখ্যাগুলো:")
print(data[data.isin(result)])
আউটপুট
পূর্ণবর্গ সংখ্যাগুলো:
1 16
3 49
dtype: int64
ব্যাখ্যা
int(m.sqrt(x) + 0.5) ** 2 == x ফর্মুলায় sqrt(x) নিকটতম পূর্ণসংখ্যায় রাউন্ড করে (০.৫ যোগ করে ইন্ট কনভারশন) এবং তার বর্গ নেওয়া হয়। যদি ফলাফল x এর সমান হয়, তবে x পূর্ণবর্গ। ১৬ (৪²) এবং ৪৯ (৭²) পূর্ণবর্গ। ১৪, ৩০, ৮০ নয়।