File size: 1,694 Bytes
d924141
 
 
 
 
 
 
 
 
 
07ba05d
 
 
 
 
 
 
 
 
 
d924141
 
984a89c
07ba05d
 
 
 
 
 
 
d924141
984a89c
 
 
 
 
07ba05d
984a89c
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import random

def generate_question():
    base = random.choice([2, 8, 10, 16])
    length = random.randint(3, 5)
    
    def generate_valid_number():
        return ''.join([str(random.randint(0, base - 1)) for _ in range(length)])

    def generate_invalid_number():
        if base <= 9:
            valid_digits = ''.join([str(random.randint(0, base - 1)) for _ in range(length - 1)])
            invalid_digit = str(random.randint(base, 9))
            return valid_digits + invalid_digit
        else:
            # For bases higher than 9 (base 10 and base 16), generate an invalid number differently.
            valid_digits = [str(random.randint(0, base - 1)) for _ in range(length - 1)]
            invalid_digit = chr(random.randint(65, 70))  # Use A-F for invalid hex digits
            valid_digits[random.randint(0, length - 2)] = invalid_digit
            return ''.join(valid_digits)

    correct_answer = generate_invalid_number()
    options = [correct_answer] + [generate_valid_number() for _ in range(3)]
    random.shuffle(options)

    steps = [
        f"Check if all digits are within the valid range for base {base}.",
        f"In base {base}, valid digits are 0 to {base-1}.",
        f"The number {correct_answer} contains a digit outside this range, so it is invalid."
    ]

    question_data = {
        "question": f"Which of the following is an invalid number in base {base}?",
        "options": options,
        "correct_answer": correct_answer,
        "explanation": f"The number {correct_answer} is invalid in base {base} because it contains a digit outside the range 0-{base-1}.",
        "step_by_step_solution": steps
    }

    return question_data