def int_to_mini_roman(number):
    """
    Cho một số nguyên dương, lấy số La Mã tương đương của nó dưới dạng chuỗi,
    và trả về dưới dạng chữ thường.
    Hạn chế: 1 <= num <= 1000

    Ví dụ:
    >>> int_to_mini_roman(19) == 'xix'
    >>> int_to_mini_roman(152) == 'clii'
    >>> int_to_mini_roman(426) == 'cdxxvi'
    """

def int_to_mini_roman(number):
    """
    Cho một số nguyên dương được đưa ra, lấy chuỗi số La Mã tương ứng,
    và trả về dưới dạng chữ thường.
    Điều kiện giới hạn: 1 <= num <= 1000

    Ví dụ:
    >>> int_to_mini_roman(19) == 'xix'
    >>> int_to_mini_roman(152) == 'clii'
    >>> int_to_mini_roman(426) == 'cdxxvi'
    """

def int_to_mini_roman(number):
    """
    Cho một số nguyên dương, lấy số La Mã tương đương của nó dưới dạng chuỗi,
    và trả về dưới dạng chữ thường.
    Điều kiện: 1 <= num <= 1000

    Ví dụ:
    >>> int_to_mini_roman(19) == 'xix'
    >>> int_to_mini_roman(152) == 'clii'
    >>> int_to_mini_roman(426) == 'cdxxvi'
    """


def right_angle_triangle(a, b, c):
    '''
    Cho độ dài của ba cạnh của một tam giác. Trả về True nếu ba
    cạnh tạo thành một tam giác vuông, False nếu không.
    Một tam giác vuông là một tam giác trong đó một góc là góc vuông hoặc
    90 độ.
    Ví dụ:
    right_angle_triangle(3, 4, 5) == True
    right_angle_triangle(1, 2, 3) == False
    '''

def right_angle_triangle(a, b, c):
    '''
    Cho độ dài ba cạnh của một tam giác. Trả về True nếu ba cạnh tạo thành một tam giác vuông, False nếu không.
    Một tam giác vuông là tam giác có một góc vuông (90 độ).
    Ví dụ:
    right_angle_triangle(3, 4, 5) == True
    right_angle_triangle(1, 2, 3) == False
    '''

def right_angle_triangle(a, b, c):
    '''
    Cho độ dài của ba cạnh của một tam giác. Nếu ba cạnh tạo thành một tam giác vuông thì trả về True,
    nếu không thì trả về False.
    Tam giác vuông là tam giác có một góc vuông hoặc 90 độ.
    Ví dụ:
    right_angle_triangle(3, 4, 5) == True
    right_angle_triangle(1, 2, 3) == False
    '''


def find_max(words):
    """Viết một hàm nhận vào một danh sách các chuỗi.
    Danh sách chứa các từ khác nhau. Trả về từ có số lượng ký tự duy nhất lớn nhất. Nếu có nhiều từ có số lượng chữ cái
    lớn nhất, trả về từ xuất hiện trước theo thứ tự từ điển.

    find_max(["name", "of", "string"]) == "string"
    find_max(["name", "enam", "game"]) == "enam"
    find_max(["aaaaaaa", "bb", "cc"]) == "aaaaaaa"
    """

def find_max(words):
    """Viết một hàm chấp nhận một danh sách các chuỗi.
    Danh sách chứa các từ khác nhau. Trả về từ có số lượng ký tự
    duy nhất tối đa. Nếu nhiều chuỗi có số lượng ký tự duy nhất tối đa
    hãy trả về chuỗi đứng đầu theo thứ tự từ điển.

    find_max(["name", "of", "string"]) == "string"
    find_max(["name", "enam", "game"]) == "enam"
    find_max(["aaaaaaa", "bb" ,"cc"]) == ""aaaaaaa"
    """

def find_max(words):
    """Viết một hàm nhận vào một danh sách các chuỗi.
    Danh sách chứa các từ khác nhau. Trả về từ có số lượng ký tự duy nhất nhiều nhất.
    Nếu có nhiều từ có số lượng ký tự duy nhất tối đa, hãy trả về từ có thứ tự trước trong bảng chữ cái.

    find_max(["name", "of", "string"]) == "string"
    find_max(["name", "enam", "game"]) == "enam"
    find_max(["aaaaaaa", "bb" ,"cc"]) == "aaaaaaa"
    """


def eat(number, need, remaining):
    """
    Bạn là một con thỏ đói, và bạn đã ăn một số lượng cà rốt nhất định,
    nhưng bây giờ bạn cần ăn thêm cà rốt để hoàn thành bữa ăn trong ngày.
    Bạn nên trả về một mảng gồm [ tổng số cà rốt đã ăn sau bữa ăn của bạn,
                                    số cà rốt còn lại sau bữa ăn của bạn ]
    Nếu không có đủ cà rốt còn lại, bạn sẽ ăn hết tất cả cà rốt còn lại, nhưng vẫn sẽ cảm thấy đói.

    Ví dụ:
    * eat(5, 6, 10) -> [11, 4]
    * eat(4, 8, 9) -> [12, 1]
    * eat(1, 10, 10) -> [11, 0]
    * eat(2, 11, 5) -> [7, 0]

    Biến:
    @number : số nguyên
        số lượng cà rốt mà bạn đã ăn.
    @need : số nguyên
        số lượng cà rốt mà bạn cần ăn.
    @remaining : số nguyên
        số lượng cà rốt còn lại trong kho

    Giới hạn:
    * 0 <= number <= 1000
    * 0 <= need <= 1000
    * 0 <= remaining <= 1000

    Chúc vui vẻ :)
    """

def eat(number, need, remaining):
    """
    Bạn là một chú thỏ đói, và bạn đã ăn một số lượng cà rốt nhất định,
    nhưng bây giờ bạn cần ăn thêm cà rốt để hoàn thành bữa ăn trong ngày,
    bạn nên trả về một mảng [tổng số cà rốt đã ăn sau bữa ăn của bạn,
                                    số lượng cà rốt còn lại sau bữa ăn của bạn]
    nếu không có đủ cà rốt còn lại, bạn sẽ ăn hết số cà rốt còn lại, nhưng vẫn sẽ đói.
    Ví dụ:
    * eat(5, 6, 10) -> [11, 4]
    * eat(4, 8, 9) -> [12, 1]
    * eat(1, 10, 10) -> [11, 0]
    * eat(2, 11, 5) -> [7, 0]

    Variables:
    @number : số nguyên
        số lượng cà rốt bạn đã ăn.
    @need : số nguyên
        số lượng cà rốt bạn cần ăn.
    @remaining : số nguyên
        số lượng cà rốt còn lại trong kho

    Constrain:
    * 0 <= number <= 1000
    * 0 <= need <= 1000
    * 0 <= remaining <= 1000

    Have fun :)
    """

def eat(number, need, remaining):
    """
    Bạn là một chú thỏ đói, và bạn đã ăn một số lượng cà rốt nhất định,
    nhưng bây giờ bạn cần ăn thêm cà rốt để hoàn thành bữa ăn trong ngày.
    Bạn cần trả về một mảng gồm [ tổng số cà rốt đã ăn sau bữa ăn của bạn,
                                    số cà rốt còn lại sau bữa ăn của bạn ]
    Nếu số cà rốt còn lại không đủ, bạn sẽ ăn hết tất cả số cà rốt còn lại, nhưng vẫn sẽ đói.

    Ví dụ:
    * eat(5, 6, 10) -> [11, 4]
    * eat(4, 8, 9) -> [12, 1]
    * eat(1, 10, 10) -> [11, 0]
    * eat(2, 11, 5) -> [7, 0]

    Các biến:
    @number : số nguyên
        số lượng cà rốt mà bạn đã ăn.
    @need : số nguyên
        số lượng cà rốt mà bạn cần ăn.
    @remaining : số nguyên
        số cà rốt còn lại trong kho.

    Điều kiện:
    * 0 <= number <= 1000
    * 0 <= need <= 1000
    * 0 <= remaining <= 1000

    Chúc bạn vui vẻ :)
    """


def do_algebra(operator, operand):
    """
    Cho hai danh sách operator và operand. Danh sách đầu tiên chứa các phép toán đại số cơ bản, và
    danh sách thứ hai là một danh sách các số nguyên. Sử dụng hai danh sách đã cho để xây dựng
    biểu thức đại số và trả về kết quả tính toán của biểu thức này.

    Các phép toán đại số cơ bản:
    Cộng ( + )
    Trừ ( - )
    Nhân ( * )
    Chia lấy phần nguyên ( // )
    Lũy thừa ( ** )

    Ví dụ:
    operator = ['+', '*', '-']
    array = [2, 3, 4, 5]
    kết quả = 2 + 3 * 4 - 5
    => kết quả = 9

    Lưu ý:
        Độ dài của danh sách operator bằng độ dài của danh sách operand trừ đi một.
        Operand là một danh sách các số nguyên không âm.
        Danh sách operator có ít nhất một phép toán, và danh sách operand có ít nhất hai toán hạng.
    """

def do_algebra(operator, operand):
    """
    Cho hai danh sách toán tử và toán hạng. Danh sách đầu tiên có các phép toán đại số cơ bản và
    danh sách thứ hai là danh sách các số nguyên. Sử dụng hai danh sách đã cho để xây dựng biểu thức
    đại số và trả về kết quả đánh giá của biểu thức này.

    Các phép toán đại số cơ bản:
    Phép cộng ( + )
    Phép trừ ( - )
    Phép nhân ( * )
    Phép chia lấy phần nguyên ( // )
    Phép luỹ thừa ( ** )

    Ví dụ:
    toán tử['+', '*', '-']
    mảng = [2, 3, 4, 5]
    kết quả = 2 + 3 * 4 - 5
    => kết quả = 9

    Lưu ý:
        Độ dài của danh sách toán tử bằng độ dài của danh sách toán hạng trừ đi một.
        Toán hạng là danh sách các số nguyên không âm.
        Danh sách toán tử có ít nhất một toán tử và danh sách toán hạng có ít nhất hai toán hạng.

    """

def do_algebra(operator, operand):
    """
    Cho hai danh sách operator và operand. Danh sách đầu tiên chứa các phép toán đại số cơ bản,
    và danh sách thứ hai là một danh sách các số nguyên. Sử dụng hai danh sách này để xây dựng
    biểu thức đại số và trả về kết quả đánh giá của biểu thức này.

    Các phép toán đại số cơ bản:
    Cộng ( + )
    Trừ ( - )
    Nhân ( * )
    Chia lấy phần nguyên ( // )
    Lũy thừa ( ** )

    Ví dụ:
    operator['+', '*', '-']
    array = [2, 3, 4, 5]
    result = 2 + 3 * 4 - 5
    => result = 9

    Lưu ý:
        Độ dài của danh sách operator bằng độ dài của danh sách operand trừ đi một đơn vị.
        Operand là danh sách các số nguyên không âm.
        Danh sách operator có ít nhất một toán tử và danh sách operand có ít nhất hai toán hạng.
    """


def solve(s):
    """Chuỗi s được cung cấp.
    Nếu s[i] là chữ cái, chuyển chữ thường thành chữ hoa hoặc từ chữ hoa thành chữ thường,
    nếu không thì giữ nguyên.
    Nếu chuỗi không chứa chữ cái nào, hãy đảo ngược chuỗi.
    Hàm phải trả về chuỗi kết quả.
    Ví dụ
    solve("1234") = "4321"
    solve("ab") = "AB"
    solve("#a@C") = "#A@c"
    """

def solve(s):
    """Bạn được cung cấp một chuỗi s.
    nếu s[i] là một chữ cái, hãy đảo ngược trường hợp của nó từ thường sang hoa hoặc ngược lại,
    nếu không thì giữ nguyên như vậy.
    Nếu chuỗi không chứa chữ cái nào, hãy đảo ngược chuỗi.
    Hàm sẽ trả về chuỗi kết quả.
    Ví dụ
    solve("1234") = "4321"
    solve("ab") = "AB"
    solve("#a@C") = "#A@c"
    """

def solve(s):
    """Bạn được cho một chuỗi s.
    nếu s[i] là một chữ cái, đảo ngược chữ hoa từ thường sang hoa hoặc ngược lại,
    nếu không thì giữ nguyên như vậy.
    Nếu chuỗi không chứa chữ cái nào, đảo ngược chuỗi.
    Hàm sẽ trả về chuỗi kết quả.
    Ví dụ
    solve("1234") = "4321"
    solve("ab") = "AB"
    solve("#a@C") = "#A@c"
    """


def string_to_md5(text):
    """
    Cho một chuỗi 'text', trả về chuỗi tương đương băm md5 của nó.
    Nếu 'text' là một chuỗi rỗng, trả về None.

    >>> string_to_md5('Hello world') == '3e25960a79dbc69b674cd4ec67a72c62'
    """

def string_to_md5(text):
    """
    Cho một chuỗi 'text', trả về chuỗi tương đương với mã băm md5 của nó.
    Nếu 'text' là một chuỗi rỗng, trả về None.

    >>> string_to_md5('Hello world') == '3e25960a79dbc69b674cd4ec67a72c62'
    """

def string_to_md5(text):
    """
    Cho chuỗi 'text', trả về chuỗi băm md5 tương ứng.
    Nếu 'text' là chuỗi rỗng, trả về None.

    >>> string_to_md5('Hello world') == '3e25960a79dbc69b674cd4ec67a72c62 '
    """


def generate_integers(a, b):
    """
    Cho hai số nguyên dương a và b, trả về các số chẵn giữa a và b, theo thứ tự tăng dần.

    Ví dụ:
    generate_integers(2, 8) => [2, 4, 6, 8]
    generate_integers(8, 2) => [2, 4, 6, 8]
    generate_integers(10, 14) => []
    """

def generate_integers(a, b):
    """
    Cho hai số nguyên dương a và b, trả về các số chẵn giữa a
    và b, theo thứ tự tăng dần.

    Ví dụ:
    generate_integers(2, 8) => [2, 4, 6, 8]
    generate_integers(8, 2) => [2, 4, 6, 8]
    generate_integers(10, 14) => []
    """

def generate_integers(a, b):
    """
    Cho hai số nguyên dương a và b, trả về các số chẵn giữa a và b theo thứ tự tăng dần.

    Ví dụ:
    generate_integers(2, 8) => [2, 4, 6, 8]
    generate_integers(8, 2) => [2, 4, 6, 8]
    generate_integers(10, 14) => []
    """