Problem Statement
Throughout the term in computer science class, Professor Smith's exams consisted entirely of true or false questions. The reason? He was too lazy to grade things by hand, so after a test was over, he would input each student's answers into his computer, and the grades would be automatically calculated. Easy!
It is the end of the term now, and grades are due tomorrow. As luck would have it, Smith's computer has crashed, and he has no time to try and fix it. All he can do now is to try and dig up old test papers and regrade them by hand.
The problem is, the answer keys for all the tests were on the computer. So now, he must try and reconstruct the answer keys so that he can grade things. All is not lost, however. He has all of the papers stored, and he can remember the number of correct answers for certain students. In addition, he is sure each question was answered correctly by at least one student. However, he still hasn't been able to figure out the answer keys for some of them, and he's asked you for help.
For some given test, the papers for which he can remember grades are given as a
Definition
- Class:
- TrueFalse
- Method:
- answerKey
- Parameters:
- String[]
- Returns:
- String
- Method signature:
- String answerKey(String[] graded)
- (be sure your method is public)
Notes
- Each question has been answered correctly by at least one student. (See example 0.)
Constraints
- graded will contain between 1 and 50 elements, inclusive.
- each element of graded will be between 3 and 18 characters in length, inclusive.
- each element of graded will contain a number N without extra leading zeros, followed by one space and then a sequence of 'T's and 'F's.
- each element of graded will have the same number of letters following the number.
- for each element of graded, N will be between 0 and the number of letters in each element, inclusive.
Examples
{"2 TTF", "1 FTF", "2 FTT"}
Returns: "TTT"
Since the second question was answered 'T' by all of them, it must be right, since every question was answered correctly by at least one student. Then the second person's test paper tells us that the only possible correct answer key is "TTT", which is consistent with the other two students' papers.
{"7 TTFFTFT"}
Returns: "TTFFTFT"
Only one person, and he had a perfect score.
{"9 TTTFFFFTTFFTTFT", "7 FFFFFFFFFFFFFFF"}
Returns: "inconsistent"
{"9 TTTFFFFTTFFTTFT", "7 FFFFFFFFFFFFFFF", "8 TTTTTTTTTTTTTTT"}
Returns: "FFFFFFFTTTTTTTT"
{"10 TTTTTTTTTTTTTTT", "10 TTTTTTTTTTTTTTT", "10 TTTTTTTTTTTTTTT", "10 TTTTTTTTTTTTTTT", "10 TTTTTTTTTTTTTTT", "10 TTTTTTTTTTTTTTT", "10 TTTTTTTTTTTTTTT", "10 TTTTTTTTTTTTTTT", "10 TTTTTTTTTTTTTTT", "10 TTTTTTTTTTTTTTT", "10 TTTTTTTTTTTTTTT", "10 TTTTTTTTTTTTTTT", "10 TTTTTTTTTTTTTTT", "10 TTTTTTTTTTTTTTT", "10 TTTTTTTTTTTTTTT", "10 TTTTTTTTTTTTTTT", "10 TTTTTTTTTTTTTTT", "10 TTTTTTTTTTTTTTT", "10 TTTTTTTTTTTTTTT", "10 TTTTTTTTTTTTTTT", "10 TTTTTTTTTTTTTTT", "10 TTTTTTTTTTTTTTT", "10 TTTTTTTTTTTTTTT", "10 TTTTTTTTTTTTTTT", "10 TTTTTTTTTTTTTTT", "5 FFFFFFFFFFFFFFF", "5 FFFFFFFFFFFFFFF", "5 FFFFFFFFFFFFFFF", "5 FFFFFFFFFFFFFFF", "5 FFFFFFFFFFFFFFF", "5 FFFFFFFFFFFFFFF", "5 FFFFFFFFFFFFFFF", "5 FFFFFFFFFFFFFFF", "5 FFFFFFFFFFFFFFF", "5 FFFFFFFFFFFFFFF", "5 FFFFFFFFFFFFFFF", "5 FFFFFFFFFFFFFFF", "5 FFFFFFFFFFFFFFF", "5 FFFFFFFFFFFFFFF", "5 FFFFFFFFFFFFFFF", "5 FFFFFFFFFFFFFFF", "5 FFFFFFFFFFFFFFF", "5 FFFFFFFFFFFFFFF", "5 FFFFFFFFFFFFFFF", "5 FFFFFFFFFFFFFFF", "5 FFFFFFFFFFFFFFF", "5 FFFFFFFFFFFFFFF", "5 FFFFFFFFFFFFFFF", "5 FFFFFFFFFFFFFFF", "5 FFFFFFFFFFFFFFF"}
Returns: "FFFFFTTTTTTTTTT"
{"6 FFTTFTTFTFFTT"}
Returns: "inconsistent"
{"2 TFFTF", "4 FFTFT"}
Returns: "FFFFT"
{"5 FFTFTT", "5 TTTFTT"}
Returns: "FTTFTT"
{"9 TTTFTFTTFFTFFF", "6 TFTTFTTFTFFFTT", "7 FFTFTFFFFFFTTT", "4 TFFFTFFFTTFTTF"}
Returns: "FFFFFFTTFFTFFT"
{"2 TFT", "1 FTF", "1 FFT"}
Returns: "TFF"
{"1 FT", "2 FF", "0 TT"}
Returns: "FF"
{"1 T", "0 F", "1 T", "0 F"}
Returns: "T"
{"4 TFFFF", "4 TTFFT"}
Returns: "TFFFT"
{"1 FT", "1 TF", "2 FF"}
Returns: "FF"
{"13 FFTTTFTFFTFTFF", "4 TTFFFTTTTFFFFT"}
Returns: "FFFTTFTFFTFTFF"
{"5 FFTFFFTFFFFTTFTF", "9 FFFFFFTTTTFTFTTF", "5 FFTTFTTFFFFFTTFT", "8 FTFTFTTFFTFFTTFT", "6 TTTTTTTFTFTTTTFF"}
Returns: "FTFFTFTTTTTFFFFT"
{"5 FTTFFTTTFF", "5 TFFTTFFFTT", "7 FFFTTTFFFF", "4 FFTTTFFFFT"}
Returns: "FFFFFTFFTF"
{"5 TTTTTT", "6 TTTTTT"}
Returns: "inconsistent"
{"7 FFFFFTTTTTFFFFFT", "9 TTTTTFFFFFTTTTTF"}
Returns: "FFFFFFFFFFFFTTTF"
{ "9 TTTFFFFTTFFTTFT", "7 FFFFFFFFFFFFFFF", "8 TTTTTTTTTTTTTTT", "8 TTTTTTTTTTTTTTT", "7 FFFFFFFFFFFFFFF", "9 TTTFFFFTTFFTTFT", "8 TTTTTTTTTTTTTTT", "7 FFFFFFFFFFFFFFF", "9 TTTFFFFTTFFTTFT", "8 TTTTTTTTTTTTTTT", "7 FFFFFFFFFFFFFFF", "9 TTTFFFFTTFFTTFT", "8 TTTTTTTTTTTTTTT", "7 FFFFFFFFFFFFFFF", "9 TTTFFFFTTFFTTFT", "8 TTTTTTTTTTTTTTT", "7 FFFFFFFFFFFFFFF", "9 TTTFFFFTTFFTTFT", "8 TTTTTTTTTTTTTTT", "7 FFFFFFFFFFFFFFF", "9 TTTFFFFTTFFTTFT", "8 TTTTTTTTTTTTTTT", "7 FFFFFFFFFFFFFFF", "9 TTTFFFFTTFFTTFT", "8 TTTTTTTTTTTTTTT", "7 FFFFFFFFFFFFFFF", "9 TTTFFFFTTFFTTFT", "8 TTTTTTTTTTTTTTT", "7 FFFFFFFFFFFFFFF", "9 TTTFFFFTTFFTTFT", "8 TTTTTTTTTTTTTTT", "7 FFFFFFFFFFFFFFF", "9 TTTFFFFTTFFTTFT", "8 TTTTTTTTTTTTTTT", "7 FFFFFFFFFFFFFFF", "9 TTTFFFFTTFFTTFT", "8 TTTTTTTTTTTTTTT", "7 FFFFFFFFFFFFFFF", "9 TTTFFFFTTFFTTFT", "8 TTTTTTTTTTTTTTT", "7 FFFFFFFFFFFFFFF", "9 TTTFFFFTTFFTTFT", "8 TTTTTTTTTTTTTTT", "7 FFFFFFFFFFFFFFF", "9 TTTFFFFTTFFTTFT", "8 TTTTTTTTTTTTTTT", "7 FFFFFFFFFFFFFFF", "9 TTTFFFFTTFFTTFT" }
Returns: "FFFFFFFTTTTTTTT"
{ "1 FF" }
Returns: "inconsistent"
{ "14 TTTTTTTTTTTTTT", "13 TTTTTTTTTTTTTF" }
Returns: "TTTTTTTTTTTTTT"
{ "9 TTTFFFFTTFFTTFT", "7 FFFFFFFFFFFFFFF" }
Returns: "inconsistent"
{ "12 TTTFFFTFTFTF" }
Returns: "TTTFFFTFTFTF"
{ "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT" }
Returns: "inconsistent"
{ "2 TTF", "1 FTF", "2 FTT" }
Returns: "TTT"
{ "1 TT", "1 TT" }
Returns: "inconsistent"
{ "10 TTTTTTTTTT", "0 FFFFFFFFFF" }
Returns: "TTTTTTTTTT"
{ "9 TTTTTTTTTFFFFFF", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT", "9 FFFFFFTTTTTTTTT" }
Returns: "FFFFFFTTTFFFFFF"