File size: 1,888 Bytes
58956eb
c9ca893
58956eb
 
d924141
58956eb
 
c9ca893
58956eb
 
 
 
 
 
 
 
 
 
 
 
 
3a56900
58956eb
 
3a56900
58956eb
 
 
 
 
 
 
 
 
 
 
 
 
 
 
c9ca893
58956eb
 
 
 
 
 
 
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
42
43
44
45
46
47
48
49
# modules/valid_invalid_numbers.py

title = "Validity of Numbers in Bases"
description = "This module helps determine the validity of numbers in different bases like binary, octal, decimal, and hexadecimal."

def generate_question():
    import random
    
    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():
        valid_digits = ''.join([str(random.randint(0, base - 1)) for _ in range(length - 1)])
        if base < 10:
            invalid_digit = str(random.randint(base, 9))  # For bases < 10, pick an invalid digit from [base, 9]
        else:
            invalid_digit = random.choice('ABCDEF')  # For bases >= 10, pick a hex digit to make it invalid
        return valid_digits + invalid_digit

    correct_answer = generate_invalid_number()
    options = [correct_answer]

    # Generate valid options
    while len(options) < 4:
        valid_option = generate_valid_number()
        if valid_option not in options:
            options.append(valid_option)
    
    random.shuffle(options)
    
    question = f"Which of the following is an invalid number in base {base}?"
    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 = [
        "Step 1: Identify the valid digits for the base.",
        "Step 2: Check each option to see if it contains any invalid digits.",
        "Step 3: The correct answer will have a digit that is not allowed in the specified base."
    ]
    
    return {
        "question": question,
        "options": options,
        "correct_answer": correct_answer,
        "explanation": explanation,
        "step_by_step_solution": step_by_step_solution
    }