scoresSpecial challenge

Hi,

i am working one below challenge
http://codingbat.com/prob/p140485

i was not clear on below description


Given two arrays, A and B, of non-negative int scores. A "special" score is one which is a multiple of 10, such as 40 or 90. Return the sum of largest special score in A and the largest special score in B. To practice decomposition, write a separate helper method which finds the largest special score in an array. Write your helper method after your scoresSpecial() method in the JavaBat text area.


how below results are 40 each? please advise
scoresSpecial([12, 10, 4], [2, 20, 30]) → 40
scoresSpecial([20, 10, 4], [2, 20, 10]) → 40
scoresSpecial([12, 11, 4], [2, 20, 31]) → 20
LVL 7
gudii9Asked:
Who is Participating?

Improve company productivity with a Business Account.Sign Up

x
 
Guy Hengel [angelIII / a3]Connect With a Mentor Billing EngineerCommented:
>Return the sum of largest special score in A and the largest special score in B
+
>write a separate helper method which finds the largest special score in an array

actually, the answer is fully given there, apart from actually giving out the code itself.
0
 
krakatoaCommented:
Good luck to you in your mysterious and futile mission.
0
 
gudii9Author Commented:
public int scoresSpecial(int[] a, int[] b) {
  int result1=0;
  int result2=0;
  int initialA=0;
  int intitiaB=0;
  for(int i=0;i<a.length;i++){
    if(a[i]%10==0){
      result1=result1+a[i];
    }
    
  }
  for(int j=0;j<b.length;j++){
    if(b[j]%10==0){
      result2=result1+b[j];
    }
  }
  return (result1+result2);
}

Open in new window


something like above?
xpected      Run            
scoresSpecial([12, 10, 4], [2, 20, 30]) → 40      50      X      
scoresSpecial([20, 10, 4], [2, 20, 10]) → 40      70      X      
scoresSpecial([12, 11, 4], [2, 20, 31]) → 20      20      OK      
scoresSpecial([1, 20, 2, 50], [3, 4, 5]) → 50      70      X      
scoresSpecial([3, 4, 5], [1, 50, 2, 20]) → 50      20      X      
scoresSpecial([10, 4, 20, 30], [20]) → 50      140      X      
scoresSpecial([10, 4, 20, 30], [20]) → 50      140      X      
scoresSpecial([10, 4, 20, 30], [3, 20, 99]) → 50      140      X      
scoresSpecial([10, 4, 20, 30], [30, 20, 99]) → 60      140      X      
scoresSpecial([], [2]) → 0      0      OK      
scoresSpecial([], [20]) → 20      20      OK      
scoresSpecial([14, 10, 4], [4, 20, 30]) → 40      50      X      
other tests
X

how to get biggest 10 multiple from array a and also array b to add them up and return?
0
What Kind of Coding Program is Right for You?

There are many ways to learn to code these days. From coding bootcamps like Flatiron School to online courses to totally free beginner resources. The best way to learn to code depends on many factors, but the most important one is you. See what course is best for you.

 
gudii9Author Commented:
public int scoresSpecial(int[] a, int[] b) {
  int result1=0;
  int result2=0;
  int initialA=0;
  int initialB=0;
  for(int i=0;i<a.length;i++){
    if(a[i]%10==0&&initialA<a[i]){
     
      initialA=a[i];
       result1=initialA;
    }
    
  }
  for(int j=0;j<b.length;j++){
    if(b[j]%10==0&&initialB<b[j]){
      
      initialB=b[j];
      result2=initialB;
    }
  }
  return (result1+result2);
}

Open in new window

something like above. Above passes all tests.
Any improvements or alternate approaches?
0
 
gudii9Author Commented:
public int scoresSpecial(int[] a, int[] b) {

  return (scoresUtil(a)+scoresUtil(b));
}

  public int scoresUtil(int[] x){
  int result1=0;
  int result2=0;
  int initialA=0;
  int initialB=0;
  for(int i=0;i<x.length;i++){
    if(x[i]%10==0&&initialA<x[i]){
     
      initialA=x[i];
       result1=initialA;
    }
   
  }

 return result1;
}

Open in new window

more refactored to helper method as above.
0
 
rrzConnect With a Mentor Commented:
That is good. I think you are improving.  You could clean it up to make it more readable.  
public int scoresSpecial(int[] a, int[] b) {
  return (scoresUtil(a) + scoresUtil(b));
}
public int scoresUtil(int[] x){
  int largest = 0;
  for(int i = 0; i < x.length; i++){
    if(x[i]%10 == 0 && largest < x[i]){
      largest = x[i];
    }
  }
 return largest;
}

Open in new window

0
 
krakatoaCommented:
0
 
Guy Hengel [angelIII / a3]Billing EngineerCommented:
I think the code is ok and complete, at least I see nothing missing
0
 
krakatoaCommented:
Very funny - you deleted my code for being "complete" (full was the term used). So what's the difference now?
0
 
rrzCommented:
@krakatoa,
So what's the difference now?
The difference is that I was just rewriting gudii9 code that he posted at  
https://www.experts-exchange.com/questions/28966729/scoresSpecial-challenge.html#a41790660
0
 
krakatoaCommented:
The point is both your code and mine passed all the tests, and you made no more attempt to get him to iron out his mistakes and recode it than I did - so imho, the situation is still not kosher.
0
 
gudii9Author Commented:
You could clean it up to make it more readable.  

i like naming largest and your code is more refined.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.