← run

bcb-0008

1.000
7/7 tests· lib-knowledge
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