gudii9
asked on
scoreUp challenge
Hi,
I am working on below challenge
http://codingbat.com/prob/p180365
The "key" array is an array containing the correct answers to an exam, like {"a", "a", "b", "b"}. the "answers" array contains a student's answers, with "?" representing a question left blank. The two arrays are not empty and are the same length. Return the score for this array of answers, giving +4 for each correct answer, -1 for each incorrect answer, and +0 for each blank answer.
i was not clear on above description.
i was not clear how below result is 6 etc. please advise
scoreUp(["a", "a", "b", "b"], ["a", "c", "b", "c"]) → 6
scoreUp(["a", "a", "b", "b"], ["a", "a", "b", "c"]) → 11
scoreUp(["a", "a", "b", "b"], ["a", "a", "b", "b"]) → 16
I am working on below challenge
http://codingbat.com/prob/p180365
The "key" array is an array containing the correct answers to an exam, like {"a", "a", "b", "b"}. the "answers" array contains a student's answers, with "?" representing a question left blank. The two arrays are not empty and are the same length. Return the score for this array of answers, giving +4 for each correct answer, -1 for each incorrect answer, and +0 for each blank answer.
i was not clear on above description.
i was not clear how below result is 6 etc. please advise
scoreUp(["a", "a", "b", "b"], ["a", "c", "b", "c"]) → 6
scoreUp(["a", "a", "b", "b"], ["a", "a", "b", "c"]) → 11
scoreUp(["a", "a", "b", "b"], ["a", "a", "b", "b"]) → 16
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
yes, exactly
don't forget to code for the "blank" answers
don't forget to code for the "blank" answers
ASKER
public int scoreUp(String[] key, String[] answers) {
int count=0;
for(int i=0;i<key.length;i++){
if(( (!key[i].equals("?")) &&(!answers.equals("?")) &&(key[i]==answers[i]))){
count=count+4;
}else{
count=count-1;
}
}
return count;
}
above failing below tests. please advise
Expected Run
scoreUp(["a", "a", "b", "b"], ["a", "c", "b", "c"]) → 6 6 OK
scoreUp(["a", "a", "b", "b"], ["a", "a", "b", "c"]) → 11 11 OK
scoreUp(["a", "a", "b", "b"], ["a", "a", "b", "b"]) → 16 16 OK
scoreUp(["a", "a", "b", "b"], ["?", "c", "b", "?"]) → 3 1 X
scoreUp(["a", "a", "b", "b"], ["?", "c", "?", "?"]) → -1 -4 X
scoreUp(["a", "a", "b", "b"], ["c", "?", "b", "b"]) → 7 6 X
scoreUp(["a", "a", "b", "b"], ["c", "?", "b", "?"]) → 3 1 X
scoreUp(["a", "b", "c"], ["a", "c", "b"]) → 2 2 OK
scoreUp(["a", "a", "b", "b", "c", "c"], ["a", "c", "a", "c", "a", "c"]) → 4 4 OK
scoreUp(["a", "a", "b", "b", "c", "c"], ["a", "c", "?", "?", "a", "c"]) → 6 4 X
scoreUp(["a", "a", "b", "b", "c", "c"], ["a", "c", "?", "?", "c", "c"]) → 11 9 X
scoreUp(["a", "b", "c"], ["a", "b", "c"]) → 12 12 OK
other tests
X
The challenge states
"?" representing a question left blank.this will appear in the "answers" array. Therefore the following
(!key[i].equals("?"))
is not necessary. Your errors occur when there is a "?" in the answers. When it is found you add -1. That is wrong.
I confirm, and that is what I meant by:
don't forget to code for the "blank" answers
don't forget to code for the "blank" answers
ASKER
The challenge states
"?" representing a question left blank.
this will appear in the "answers" array. Therefore the following
(!key[i].equals("?"))
is not necessary. Your errors occur when there is a "?" in the answers. When it is found you add -1. That is wrong.
what i supposed to do when i see question mark(?)
ASKER
public int scoreUp(String[] key, String[] answers) {
int count=0;
for(int i=0;i<key.length;i++){
if(( (!key[i].equals("?")) &&(!answers.equals("?")) &&(key[i]==answers[i]))){
count=count+4;
}else if(key[i].equals("?")){
count=0;
}else if(answers[i].equals("?")){
count=0;
}else{
count=count-1;
}
}
return count;
}
something like above?
I am failing some tests. please advise
Expected Run
scoreUp(["a", "a", "b", "b"], ["a", "c", "b", "c"]) → 6 6 OK
scoreUp(["a", "a", "b", "b"], ["a", "a", "b", "c"]) → 11 11 OK
scoreUp(["a", "a", "b", "b"], ["a", "a", "b", "b"]) → 16 16 OK
scoreUp(["a", "a", "b", "b"], ["?", "c", "b", "?"]) → 3 0 X
scoreUp(["a", "a", "b", "b"], ["?", "c", "?", "?"]) → -1 0 X
scoreUp(["a", "a", "b", "b"], ["c", "?", "b", "b"]) → 7 8 X
scoreUp(["a", "a", "b", "b"], ["c", "?", "b", "?"]) → 3 0 X
scoreUp(["a", "b", "c"], ["a", "c", "b"]) → 2 2 OK
scoreUp(["a", "a", "b", "b", "c", "c"], ["a", "c", "a", "c", "a", "c"]) → 4 4 OK
scoreUp(["a", "a", "b", "b", "c", "c"], ["a", "c", "?", "?", "a", "c"]) → 6 3 X
scoreUp(["a", "a", "b", "b", "c", "c"], ["a", "c", "?", "?", "c", "c"]) → 11 8 X
scoreUp(["a", "b", "c"], ["a", "b", "c"]) → 12 12 OK
other tests
X
ASKER
public int scoreUp(String[] key, String[] answers) {
int count=0;
for(int i=0;i<key.length;i++){
if(( (!key[i].equals("?")) &&(!answers.equals("?")) &&(key[i]==answers[i]))){
count=count+4;
}else if(key[i].equals("?")){
count=0;
}else if(answers[i].equals("?")){
count=count+0;
}else if(!answers[i].equals(key[i])){
count=count-1;
}
}
return count;
}
something like above.Above passes all tests.
any improvements or alternate approaches? please advise
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
i see your point.
above looks ok? any improvements, alternate approaches?
public int scoreUp(String[] key, String[] answers) {
int count=0;
for(int i=0;i<key.length;i++){
if(( (!answers.equals("?")) &&(key[i]==answers[i]))){
count=count+4;
}/*else if(key[i].equals("?")){
continue;
}*/else if(answers[i].equals("?")){
count=count+0;
}else if(!answers[i].equals(key[i])){
count=count-1;
}
}
return count;
}
above looks ok? any improvements, alternate approaches?
above looks ok?It looks ok, but you could clean it up to improve readability.
public int scoreUp(String[] key, String[] answers) {
int count = 0;
for(int i=0;i<key.length;i++){
if(answers[i].equals("?"))continue;
if(key[i]==answers[i]){
count = count + 4;
}else count--;
}
return count;
}
ASKER
why you chose if with if then else approach rather than
if with else if with else approach as i did ?
any specific advantage or disadvantage?
if with else if with else approach as i did ?
any specific advantage or disadvantage?
any specific advantage or disadvantage?I just thought it was clearer.
ASKER
i think i got it now
scoreUp(["a", "a", "b", "b"], ["a", "c", "b", "c"]) → 6
as 'a' is same in both array give +4
then a not same as c so -1
then b same as b +4
then b not same as c -1
total is 6
let me think on pseudo code and code now