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
|