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()
|