Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Chương trình tìm tất cả số ngược (upside down numbers) độ dài n trong Python

Giả sử chúng ta có một giá trị n. Chúng ta phải tìm tất cả các số ngược (upside down numbers) có độ dài n. Như chúng ta biết, số ngược là số xuất hiện giống hệt khi bị lật 180 độ.

Ví dụ, nếu đầu vào là n = 2, thì đầu ra sẽ là ['11', '69', '88', '96'].

Để giải quyết, chúng ta thực hiện các bước sau:

  • Định nghĩa hàm middle(). Hàm này nhận tham số x
  • nếu x bằng 0, trả về danh sách chứa chuỗi rỗng
  • nếu x bằng 1, trả về danh sách mới các phần tử '0', '1', '8'
  • ret := danh sách mới
  • mid := middle(x - 2)
  • với mỗi m trong mid, thực hiện:
    • nếu x khác n, chèn ("0" + m + "0") vào cuối ret
    • chèn ("1" + m + "1") vào cuối ret
    • chèn ("6" + m + "9") vào cuối ret
    • chèn ("8" + m + "8") vào cuối ret
    • chèn ("9" + m + "6") vào cuối ret
  • trả về ret
  • Từ phương thức chính:
    • nếu n bằng 0, trả về danh sách mới
    • ngược lại trả về danh sách đã sắp xếp của middle(n)

Ví dụ

class Solution:
    def solve(self, n):
        if not n:
            return []
        def middle(x=n):
            if not x:
                return [""]
            if x == 1:
                return list("018")
            ret = []
            mid = middle(x - 2)
            for m in mid:
                if x != n:
                    ret.append("0" + m + "0")
                ret.append("1" + m + "1")
                ret.append("6" + m + "9")
                ret.append("8" + m + "8")
                ret.append("9" + m + "6")
            return ret
        return sorted(middle())

ob = Solution()
print(ob.solve(2))

Input

2

Output

['11', '69', '88', '96']