<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def multiple_choice(question, choices, answers):
 """ Generates a multiple choice question that allows the user to select an answer choice and shows whether choice was correct. Args: question (str):
 Question text displayed above choices. choices (list str):
 Answer choices that user can select. answers (int | iterable int):
 Either an integer or iterable of integers. Each integer in answers corresponds to the index of the correct choice in `choices`. Returns: None <What is 10 + 2 * 5?> <Button> <12> <Button> <60> <Button> <20> (Correct) <Select all prime numbers.> <Button> <12> <Button> <3> (Correct) <Button> <31> (Correct) """

    if not isinstance(answers, (int, collections.Iterable)):
        raise TypeError(
            'The `answers` arg is expected to be of type '
            '(int | iterable int) but got {} instead.'.format(type(answers))
        )

    @curry
    def check_answer(index, button):
        is_correct = (
            index == answers if isinstance(answers, int) else index in answers
        )
        button.style.button_color = GREEN if is_correct else RED

    answer_choices = []
    for index, choice in enumerate(choices):
        button = widgets.Button(
            layout=widgets.Layout(width='20px', height='20px', padding='0')
        )
        button.on_click(check_answer(index))

        button_and_question = widgets.HBox(
            [button, widgets.HTML(TEXT_STYLE.format(choice))],
            layout=widgets.Layout(align_items='center')
        )

        answer_choices.append(button_and_question)

    question_html = [widgets.HTML(TEXT_STYLE.format(question))]
    display(widgets.VBox(question_html + answer_choices))