File size: 4,500 Bytes
e29cc8c d924141 c9ca893 e29cc8c 32f2e18 d924141 c9ca893 e29cc8c c9ca893 e29cc8c c9ca893 e29cc8c c9ca893 e29cc8c c9ca893 e29cc8c c9ca893 e29cc8c c9ca893 e29cc8c c9ca893 e29cc8c c9ca893 e29cc8c d924141 c9ca893 e29cc8c c9ca893 e29cc8c c9ca893 |
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 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
# modules/number_system/grouping_techniques.py
title = "Grouping Techniques for Conversion"
description = "This module focuses on grouping techniques for conversion between bases such as binary, octal, and hexadecimal."
def generate_question():
import random
# Choose a random base to convert from, either 2, 8, or 16
from_base = random.choice([2, 8, 16])
to_base = 8 if from_base == 2 else 2 if from_base == 8 else 2
number = ''
if from_base == 2:
# Generate a random binary number, optionally with a fractional part
number = ''.join(random.choice('01') for _ in range(random.randint(4, 8)))
if random.choice([True, False]):
number += '.' + ''.join(random.choice('01') for _ in range(random.randint(1, 4)))
elif from_base == 8:
# Generate a random octal number, optionally with a fractional part
number = ''.join(random.choice('01234567') for _ in range(random.randint(2, 4)))
if random.choice([True, False]):
number += '.' + ''.join(random.choice('01234567') for _ in range(random.randint(1, 3)))
elif from_base == 16:
# Generate a random hexadecimal number, optionally with a fractional part
number = ''.join(random.choice('0123456789ABCDEF') for _ in range(random.randint(2, 4)))
if random.choice([True, False]):
number += '.' + ''.join(random.choice('0123456789ABCDEF') for _ in range(random.randint(1, 3)))
def group_conversion(number, from_base, to_base):
if from_base == 2 and to_base == 8:
# Convert binary to octal
integer_part, *fraction_part = number.split('.')
integer_result = oct(int(integer_part, 2))[2:]
if fraction_part:
fraction_result = ''.join([oct(int(f'{fraction_part[0][i:i+3]:0<3}', 2))[2:] for i in range(0, len(fraction_part[0]), 3)])
return f"{integer_result}.{fraction_result}"
return integer_result
elif from_base == 2 and to_base == 16:
# Convert binary to hexadecimal
integer_part, *fraction_part = number.split('.')
integer_result = hex(int(integer_part, 2))[2:].upper()
if fraction_part:
fraction_result = ''.join([hex(int(f'{fraction_part[0][i:i+4]:0<4}', 2))[2:].upper() for i in range(0, len(fraction_part[0]), 4)])
return f"{integer_result}.{fraction_result}"
return integer_result
elif from_base == 8 and to_base == 2:
# Convert octal to binary
integer_part, *fraction_part = number.split('.')
integer_result = bin(int(integer_part, 8))[2:]
if fraction_part:
fraction_result = ''.join([bin(int(digit, 8))[2:].zfill(3) for digit in fraction_part[0]])
return f"{integer_result}.{fraction_result}"
return integer_result
elif from_base == 16 and to_base == 2:
# Convert hexadecimal to binary
integer_part, *fraction_part = number.split('.')
integer_result = bin(int(integer_part, 16))[2:]
if fraction_part:
fraction_result = ''.join([bin(int(digit, 16))[2:].zfill(4) for digit in fraction_part[0]])
return f"{integer_result}.{fraction_result}"
return integer_result
correct_answer = group_conversion(number, from_base, to_base)
options = {correct_answer}
# Generate incorrect answers ensuring they are unique
while len(options) < 4:
invalid_number = group_conversion(''.join(random.choice('0123456789ABCDEF') for _ in range(len(correct_answer))), from_base, to_base)
options.add(invalid_number)
options = list(options)
random.shuffle(options)
question = f"Convert the number {number} from base {from_base} to base {to_base} using grouping technique."
explanation = f"The number {number} in base {from_base} is {correct_answer} in base {to_base} using the grouping technique."
step_by_step_solution = [
"Step 1: Group the digits of the number according to the conversion rules.",
"Step 2: Convert each group to the corresponding digit in the target base.",
"Step 3: Combine the digits to form the final answer."
]
return {
"question": question,
"options": options,
"correct_answer": correct_answer,
"explanation": explanation,
"step_by_step_solution": step_by_step_solution
}
|