bcb-0008
1.000
Challenge · difficulty 2/5
# BigCodeBench/8
Implement a file **`solution.py`** that completes the function below. Keep the given name and signature; define `task_func` at module level.
Allowed libraries: `collections`, `random`, `itertools`.
```python
from collections import Counter
import itertools
from random import randint
def task_func(T1, RANGE=100):
"""
Convert elements in 'T1' to integers and create a list of random integers where the number of integers
is determined by the sum of the integers in `T1`. Random integers are generated between 0 and `RANGE`
(default is 100). Count the occurrences of each number in the generated list using a Counter.
Parameters:
T1 (tuple of tuples): Each inner tuple contains string representations of numbers that are converted to integers.
RANGE (int, optional): The upper limit for the random number generation. Defaults to 100.
Returns:
Counter: A Counter object representing the count of each number appearing in the list of generated random integers.
Requirements:
- collections.Counter
- itertools
- random.randint
Example:
>>> import random
>>> random.seed(42)
>>> T1 = (('13', '17', '18', '21', '32'), ('07', '11', '13', '14', '28'), ('01', '05', '06', '08', '15', '16'))
>>> counts = task_func(T1)
>>> print(counts) # Output will be a Counter object with random counts.
Counter({20: 6, 81: 5, 14: 5, 97: 5, 48: 5, 68: 5, 87: 5, 35: 4, 28: 4, 11: 4, 54: 4, 27: 4, 29: 4, 64: 4, 77: 4, 33: 4, 58: 4, 10: 4, 46: 4, 8: 4, 98: 4, 34: 4, 3: 3, 94: 3, 31: 3, 17: 3, 13: 3, 69: 3, 71: 3, 89: 3, 0: 3, 43: 3, 19: 3, 93: 3, 37: 3, 80: 3, 82: 3, 76: 3, 92: 3, 75: 2, 4: 2, 25: 2, 91: 2, 83: 2, 12: 2, 45: 2, 5: 2, 70: 2, 84: 2, 47: 2, 59: 2, 41: 2, 99: 2, 7: 2, 40: 2, 51: 2, 72: 2, 63: 2, 95: 2, 74: 2, 96: 2, 67: 2, 62: 2, 30: 2, 16: 2, 86: 1, 53: 1, 57: 1, 44: 1, 15: 1, 79: 1, 73: 1, 24: 1, 90: 1, 26: 1, 85: 1, 9: 1, 21: 1, 88: 1, 50: 1, 18: 1, 65: 1, 6: 1, 49: 1, 32: 1, 1: 1, 55: 1, 22: 1, 38: 1, 2: 1, 39: 1})
"""
```
<!-- imported from BigCodeBench (BigCodeBench/8) -->
tests/test_bcb_0008.py
# Auto-generated from BigCodeBench BigCodeBench/8. Do not edit by hand.
import pathlib as _pathlib
exec(_pathlib.Path(__file__).with_name("solution.py").read_text(), globals())
import unittest
from collections import Counter
class TestCases(unittest.TestCase):
def test_case_1(self):
"""Single tuple with small integers as strings"""
T1 = (('1', '2', '3'),)
result = task_func(T1)
self.assertIsInstance(result, Counter)
self.assertEqual(sum(result.values()), 6)
def test_case_2(self):
"""Multiple tuples with small integers as strings"""
T1 = (('1', '2'), ('3', '4'))
result = task_func(T1)
self.assertIsInstance(result, Counter)
self.assertEqual(sum(result.values()), 10)
def test_case_3(self):
"""Single tuple with larger integers as strings"""
T1 = (('10', '20', '30'),)
result = task_func(T1)
self.assertIsInstance(result, Counter)
self.assertEqual(sum(result.values()), 60)
def test_case_4(self):
"""Multiple tuples with mixed small and large integers as strings"""
T1 = (('1', '10'), ('100', '1000'))
result = task_func(T1)
self.assertIsInstance(result, Counter)
self.assertEqual(sum(result.values()), 1111)
def test_case_5(self):
"""Single tuple with repeating integers as strings"""
T1 = (('1', '1', '1'),)
result = task_func(T1)
self.assertIsInstance(result, Counter)
self.assertEqual(sum(result.values()), 3)
def test_empty_input(self):
"""Empty tuple as input"""
T1 = ()
result = task_func(T1)
self.assertIsInstance(result, Counter)
self.assertEqual(sum(result.values()), 0)
def test_range_limit(self):
"""Check if random numbers respect the RANGE parameter"""
T1 = (('10',),)
RANGE = 20
result = task_func(T1, RANGE)
self.assertTrue(all(0 <= num <= RANGE for num in result.keys()))
Proposed solution
```python
from collections import Counter
import itertools
from random import randint
def task_func(T1, RANGE=100):
nums = [int(x) for t in T1 for x in t]
total = sum(nums)
return Counter(randint(0, RANGE) for _ in range(total))
```Test output (stdout)
....... [100%]
7 passed in 0.02s