ในที่นี้เราจะมาดูวิธีการตรวจจับตัวเลข n เป็นเลข Happy กันหรือไม่ ดังนั้นจำนวนสุขคือตัวเลข โดยที่เริ่มต้นด้วยจำนวนเต็มบวกใดๆ แทนที่ตัวเลขด้วยผลรวมของกำลังสองของหลัก กระบวนการนี้จะถูกทำซ้ำจนกว่าจะกลายเป็น 1 มิฉะนั้นจะวนซ้ำเป็นรอบไม่รู้จบ ตัวเลขเหล่านั้นเมื่อพบตัวที่ 1 จะเป็นเลขมงคล
สมมติว่าตัวเลขคือ 19 ผลลัพธ์จะเป็นจริงเนื่องจากตัวเลขนั้นเป็นตัวเลขสุข ดังที่เราเห็นจาก 19 เราจะได้
1 2 + 9 2 =82
8 2 + 2 2 =68
6 2 + 8 2 =100
1 2 + 0 2 + 0 2 =1
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- ในที่นี้ เราจะใช้วิธีการเขียนโปรแกรมแบบไดนามิก และแก้ปัญหานี้โดยใช้การเรียกซ้ำ
- ตัวพิมพ์พื้นฐานคือเมื่อ n =1 แล้วคืนค่าเป็นจริง
- เมื่อ n ถูกเข้าชมแล้ว ให้คืนค่าเท็จ
- ทำเครื่องหมาย n ว่าเข้าชมแล้ว
- n :=n เป็นสตริง l :=รายการหลักทั้งหมดใน n
- temp :=ผลรวมกำลังสองของตัวเลขทั้งหมด
- ฟังก์ชันส่งคืนซ้ำด้วยพารามิเตอร์ temp และรายการที่เข้าชม
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
class Solution(object): def isHappy(self, n): """ :type n: int :rtype: bool """ return self.solve(n,{}) def solve(self,n,visited): if n == 1: return True if n in visited: return False visited[n]= 1 n = str(n) l = list(n) l = list(map(int,l)) temp = 0 for i in l: temp += (i**2) return self.solve(temp,visited) ob1 = Solution() op = ob1.isHappy(19) print("Is Happy:",op)
อินพุต
19
ผลลัพธ์
Is Happy: True