Sina Media Lab commited on
Commit
f59ba06
·
1 Parent(s): c9ca893
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
- num1 = ''.join(random.choice('0123456789ABCDEF') for _ in range(3))
11
- num2 = ''.join(random.choice('0123456789ABCDEF') for _ in range(3))
 
 
 
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('0123456789ABCDEF') for _ in range(4))
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
- number = ''.join(random.choice('0123456789ABCDEF') for _ in range(4))
 
 
 
 
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('0123456789ABCDEF') for _ in range(4))
32
- if invalid_number != correct_answer:
33
- options.append(invalid_number)
 
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
- invalid_digit = str(random.randint(base, 9))
 
 
 
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()