Problem p00025 - Generation 1

Orig Description

Hit and Blow
Let's play Hit and Blow game. A imagines four numbers and B guesses the numbers. After B picks out four numbers, A answers:
 The number of numbers which have the same place with numbers A imagined (Hit) 
 The number of numbers included (but different place) in the numbers A imagined (Blow)
For example, if A imagined numbers:
9 1 8 2
and B chose:
4 1 5 9
A should say 1 Hit and 1 Blow.
Write a program which reads four numbers A imagined and four numbers B chose and prints the number of Hit and Blow respectively. You may assume that the four numbers are all different and within from 0 to 9.
Input
The input consists of multiple datasets. Each dataset set consists of:
a1 a2 a3 a4
b1 b2 b3 b4
, where ai (0 ≤ ai ≤ 9) is i-th number A  imagined and bi (0 ≤ bi ≤ 9) is i-th number B chose.
The input ends with EOF. The number of datasets is less than or equal to 50.
Output
For each dataset, print the number of Hit and Blow in a line. These two numbers should be separated by a space.
Sample Input
9 1 8 2
4 1 5 9
4 6 8 2
4 6 3 2
Output for the Sample Input
1 1
3 0

Extracted Specification

An integer ai (0 ≤ ai ≤ 9) representing a single digit number.
An integer bi (0 ≤ bi ≤ 9) representing a single digit number.
The input consists of multiple datasets.
The number of datasets is less than or equal to 50.
The input ends with EOF.

### Example Input:

```
9 1 8 2
4 1 5 9
4 6 8 2
4 6 3 2
```

### Function Signature:
Write a function f(inputs) that takes in the input.
def f(inputs: List[Tuple[List[int], List[int]]]):
    ''' 
    inputs: a list of tuples, where each tuple contains two lists of integers
    '''

Test Case Generator

Sure! Here is a test case generator for the "Hit and Blow" problem:

```python
import random

def generate_unique_numbers():
    return random.sample(range(10), 4)

def tcgen():
    datasets = []
    num_datasets = random.randint(1, 50)
    for _ in range(num_datasets):
        A = generate_unique_numbers()
        B = generate_unique_numbers()
        datasets.append((A, B))
    return datasets

# Test case generator usage example
if __name__ == "__main__":
    test_cases = tcgen()
    for A, B in test_cases:
        print(" ".join(map(str, A)))
        print(" ".join(map(str, B)))
```

This script generates a random number of datasets (between 1 and 50, inclusive), where each dataset consists of two lists of four unique integers between 0 and 9. The `generate_unique_numbers` function ensures that the numbers in each list are unique.

You can run this script to generate test cases. The output will be formatted in such a way that each dataset is printed on two lines: the first line for `A` and the second line for `B`.

Extract Arguments

def extract_arguments(fh):
    inputs = []
    while True:
        line_a = fh.readline().strip()
        if not line_a:
            break
        a = list(map(int, line_a.split()))
        b = list(map(int, fh.readline().strip().split()))
        inputs.append((a, b))
    return inputs

# if __name__ == "__main__":
#     input_path = sys.argv[1]
#     with open(input_path, 'r') as fh:
#         inputs = extract_arguments(fh)
#         f(inputs)