1+ """
2+ Tests for FLAMES Game core logic.
3+ """
4+
5+ def remove_common_chars (name1 , name2 ):
6+ name1_list = list (name1 )
7+ name2_list = list (name2 )
8+ for char in name1_list [:]:
9+ if char in name2_list :
10+ name1_list .remove (char )
11+ name2_list .remove (char )
12+ return name1_list , name2_list
13+
14+
15+ def calculate_flames (count ):
16+ flames = ['F' , 'L' , 'A' , 'M' , 'E' , 'S' ]
17+ index = 0
18+ while len (flames ) > 1 :
19+ index = (index + count - 1 ) % len (flames )
20+ flames .pop (index )
21+ return flames [0 ]
22+
23+
24+ def calculate_score (name1 , name2 , count ):
25+ total_len = len (name1 ) + len (name2 )
26+ matched_chars = total_len - count
27+ return 30 + round ((matched_chars / total_len ) * 70 ) if total_len > 0 else 0
28+
29+
30+ # Tests
31+ def test_remove_common_chars_basic ():
32+ n1 , n2 = remove_common_chars ("alice" , "bob" )
33+ assert len (n1 ) + len (n2 ) > 0
34+
35+
36+ def test_remove_common_chars_identical ():
37+ n1 , n2 = remove_common_chars ("abc" , "abc" )
38+ assert len (n1 ) + len (n2 ) == 0
39+
40+
41+ def test_flames_result_valid ():
42+ result = calculate_flames (3 )
43+ assert result in ['F' , 'L' , 'A' , 'M' , 'E' , 'S' ]
44+
45+
46+ def test_flames_count_one ():
47+ result = calculate_flames (1 )
48+ assert result in ['F' , 'L' , 'A' , 'M' , 'E' , 'S' ]
49+
50+
51+ def test_flames_count_six ():
52+ result = calculate_flames (6 )
53+ assert result in ['F' , 'L' , 'A' , 'M' , 'E' , 'S' ]
54+
55+
56+ def test_score_range ():
57+ score = calculate_score ("alice" , "bob" , 4 )
58+ assert 0 <= score <= 100
59+
60+
61+ def test_score_full_match ():
62+ score = calculate_score ("abc" , "abc" , 0 )
63+ assert score == 100
64+
65+
66+ def test_degenerate_case ():
67+ n1 , n2 = remove_common_chars ("abc" , "abc" )
68+ count = len (n1 ) + len (n2 )
69+ assert count == 0
70+
71+
72+ def test_flames_known_output ():
73+ # "alice" vs "bob" — count = 4+1 = 5 remaining
74+ n1 , n2 = remove_common_chars ("alice" , "bob" )
75+ count = len (n1 ) + len (n2 )
76+ result = calculate_flames (count )
77+ assert result in ['F' , 'L' , 'A' , 'M' , 'E' , 'S' ]
0 commit comments