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)