Sina Media Lab
commited on
Commit
·
f59ba06
1
Parent(s):
c9ca893
Updates
Browse files- modules/addition_bases.py +8 -3
- modules/conversion_bases.py +10 -4
- modules/valid_invalid_numbers.py +4 -1
modules/addition_bases.py
CHANGED
|
@@ -6,11 +6,16 @@ description = "This module covers addition operations in bases like binary, octa
|
|
| 6 |
def generate_question():
|
| 7 |
import random
|
| 8 |
|
|
|
|
| 9 |
base = random.choice([2, 8, 16])
|
| 10 |
-
|
| 11 |
-
|
|
|
|
|
|
|
|
|
|
| 12 |
|
| 13 |
def add_numbers(num1, num2, base):
|
|
|
|
| 14 |
return hex(int(num1, base) + int(num2, base))[2:].upper() if base == 16 else \
|
| 15 |
oct(int(num1, base) + int(num2, base))[2:] if base == 8 else \
|
| 16 |
bin(int(num1, base) + int(num2, base))[2:] if base == 2 else \
|
|
@@ -21,7 +26,7 @@ def generate_question():
|
|
| 21 |
|
| 22 |
# Generate incorrect answers
|
| 23 |
while len(options) < 4:
|
| 24 |
-
invalid_answer = ''.join(random.choice(
|
| 25 |
if invalid_answer != correct_answer:
|
| 26 |
options.append(invalid_answer)
|
| 27 |
|
|
|
|
| 6 |
def generate_question():
|
| 7 |
import random
|
| 8 |
|
| 9 |
+
# Choose a base and corresponding valid digits
|
| 10 |
base = random.choice([2, 8, 16])
|
| 11 |
+
digits = '01' if base == 2 else '01234567' if base == 8 else '0123456789ABCDEF'
|
| 12 |
+
|
| 13 |
+
# Generate two valid numbers for the selected base
|
| 14 |
+
num1 = ''.join(random.choice(digits) for _ in range(3))
|
| 15 |
+
num2 = ''.join(random.choice(digits) for _ in range(3))
|
| 16 |
|
| 17 |
def add_numbers(num1, num2, base):
|
| 18 |
+
# Perform the addition in the correct base
|
| 19 |
return hex(int(num1, base) + int(num2, base))[2:].upper() if base == 16 else \
|
| 20 |
oct(int(num1, base) + int(num2, base))[2:] if base == 8 else \
|
| 21 |
bin(int(num1, base) + int(num2, base))[2:] if base == 2 else \
|
|
|
|
| 26 |
|
| 27 |
# Generate incorrect answers
|
| 28 |
while len(options) < 4:
|
| 29 |
+
invalid_answer = ''.join(random.choice(digits) for _ in range(4))
|
| 30 |
if invalid_answer != correct_answer:
|
| 31 |
options.append(invalid_answer)
|
| 32 |
|
modules/conversion_bases.py
CHANGED
|
@@ -6,9 +6,14 @@ description = "This module covers conversion techniques between different bases,
|
|
| 6 |
def generate_question():
|
| 7 |
import random
|
| 8 |
|
|
|
|
| 9 |
from_base = random.choice([2, 8, 10, 16])
|
| 10 |
to_base = random.choice([2, 8, 10, 16])
|
| 11 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 12 |
|
| 13 |
def convert_number(number, from_base, to_base):
|
| 14 |
# Convert from `from_base` to base 10
|
|
@@ -28,9 +33,10 @@ def generate_question():
|
|
| 28 |
|
| 29 |
# Generate incorrect answers
|
| 30 |
while len(options) < 4:
|
| 31 |
-
invalid_number = ''.join(random.choice(
|
| 32 |
-
|
| 33 |
-
|
|
|
|
| 34 |
|
| 35 |
random.shuffle(options)
|
| 36 |
|
|
|
|
| 6 |
def generate_question():
|
| 7 |
import random
|
| 8 |
|
| 9 |
+
# Choose a base and corresponding valid digits
|
| 10 |
from_base = random.choice([2, 8, 10, 16])
|
| 11 |
to_base = random.choice([2, 8, 10, 16])
|
| 12 |
+
|
| 13 |
+
digits = '01' if from_base == 2 else '01234567' if from_base == 8 else '0123456789' if from_base == 10 else '0123456789ABCDEF'
|
| 14 |
+
|
| 15 |
+
# Generate a valid number for the selected from_base
|
| 16 |
+
number = ''.join(random.choice(digits) for _ in range(4))
|
| 17 |
|
| 18 |
def convert_number(number, from_base, to_base):
|
| 19 |
# Convert from `from_base` to base 10
|
|
|
|
| 33 |
|
| 34 |
# Generate incorrect answers
|
| 35 |
while len(options) < 4:
|
| 36 |
+
invalid_number = ''.join(random.choice(digits) for _ in range(4))
|
| 37 |
+
invalid_answer = convert_number(invalid_number, from_base, to_base)
|
| 38 |
+
if invalid_answer != correct_answer:
|
| 39 |
+
options.append(invalid_answer)
|
| 40 |
|
| 41 |
random.shuffle(options)
|
| 42 |
|
modules/valid_invalid_numbers.py
CHANGED
|
@@ -14,7 +14,10 @@ def generate_question():
|
|
| 14 |
|
| 15 |
def generate_invalid_number():
|
| 16 |
valid_digits = ''.join([str(random.randint(0, base - 1)) for _ in range(length - 1)])
|
| 17 |
-
|
|
|
|
|
|
|
|
|
|
| 18 |
return valid_digits + invalid_digit
|
| 19 |
|
| 20 |
correct_answer = generate_invalid_number()
|
|
|
|
| 14 |
|
| 15 |
def generate_invalid_number():
|
| 16 |
valid_digits = ''.join([str(random.randint(0, base - 1)) for _ in range(length - 1)])
|
| 17 |
+
if base < 10:
|
| 18 |
+
invalid_digit = str(random.randint(base, 9)) # For bases < 10, pick an invalid digit from [base, 9]
|
| 19 |
+
else:
|
| 20 |
+
invalid_digit = random.choice('ABCDEF') # For bases >= 10, pick a hex digit to make it invalid
|
| 21 |
return valid_digits + invalid_digit
|
| 22 |
|
| 23 |
correct_answer = generate_invalid_number()
|