|
import random |
|
import sympy as sp |
|
|
|
title = "Conversion Between Bases" |
|
description = "This module covers conversion techniques between different bases, including with and without fractions." |
|
|
|
def generate_question(): |
|
|
|
from_base = random.choice([2, 8, 10, 16]) |
|
to_base = random.choice([b for b in [2, 8, 10, 16] if b != from_base]) |
|
|
|
digits = '01' if from_base == 2 else '01234567' if from_base == 8 else '0123456789' if from_base == 10 else '0123456789ABCDEF' |
|
|
|
|
|
number = ''.join(random.choice(digits) for _ in range(4)) |
|
|
|
def convert_number(number, from_base, to_base): |
|
|
|
base_10_value = int(number, from_base) |
|
|
|
if to_base == 10: |
|
return str(base_10_value), base_10_value |
|
elif to_base == 16: |
|
return hex(base_10_value)[2:].upper(), base_10_value |
|
elif to_base == 8: |
|
return oct(base_10_value)[2:], base_10_value |
|
elif to_base == 2: |
|
return bin(base_10_value)[2:], base_10_value |
|
|
|
correct_answer, base_10_value = convert_number(number, from_base, to_base) |
|
options = [correct_answer] |
|
|
|
|
|
while len(options) < 4: |
|
invalid_number = ''.join(random.choice(digits) for _ in range(4)) |
|
invalid_answer, _ = convert_number(invalid_number, from_base, to_base) |
|
if invalid_answer not in options: |
|
options.append(invalid_answer) |
|
|
|
random.shuffle(options) |
|
|
|
question = f"Convert the number {number} from base {from_base} to base {to_base}." |
|
explanation = f"The number {number} in base {from_base} is {correct_answer} in base {to_base}." |
|
|
|
|
|
step_by_step_solution = [ |
|
f"Step 1: Convert the number {number} from base {from_base} to base 10:", |
|
f" {number} (base {from_base}) = {base_10_value} (base 10).", |
|
f"Step 2: Convert the base 10 number to base {to_base}:", |
|
f" {base_10_value} (base 10) = {correct_answer} (base {to_base}).", |
|
f"Step 3: The correct answer is {correct_answer}." |
|
] |
|
|
|
return { |
|
"question": question, |
|
"options": options, |
|
"correct_answer": correct_answer, |
|
"explanation": explanation, |
|
"step_by_step_solution": step_by_step_solution |
|
} |
|
|