copyEndy challenge

Hi,

I am working one below challenge



 copyEndy
prev  |  next  |  chance
We'll say that a positive int n is "endy" if it is in the range 0..10 or 90..100 (inclusive). Given an array of positive ints, return a new array of length "count" containing the first endy numbers from the original array. Decompose out a separate isEndy(int n) method to test if a number is endy. The original array will contain at least "count" endy numbers.

copyEndy([9, 11, 90, 22, 6], 2) → [9, 90]
copyEndy([9, 11, 90, 22, 6], 3) → [9, 90, 6]
copyEndy([12, 1, 1, 13, 0, 20], 2) → [1, 1]

i am not clear what above description is talking about. How

copyEndy([9, 11, 90, 22, 6], 2) → [9, 90]
copyEndy([9, 11, 90, 22, 6], 3) → [9, 90, 6]
copyEndy([12, 1, 1, 13, 0, 20], 2) → [1, 1]
please advise
LVL 7
gudii9Asked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Guy Hengel [angelIII / a3]Billing EngineerCommented:
read this part clearly:
return a new array of length "count" containing the first "count" (I added this into the text) endy numbers from the original array
gudii9Author Commented:
what is endy?
is it is verb or noun or adjective ?

Expected      Run            
copyEndy([9, 11, 90, 22, 6], 2) → [9, 90]      null      X      
copyEndy([9, 11, 90, 22, 6], 3) → [9, 90, 6]      null      X      
copyEndy([12, 1, 1, 13, 0, 20], 2) → [1, 1]      null      X      
copyEndy([12, 1, 1, 13, 0, 20], 3) → [1, 1, 0]      null      X      
copyEndy([0], 1) → [0]      null      X      
copyEndy([10, 11, 90], 2) → [10, 90]      null      X      
copyEndy([90, 22, 100], 2) → [90, 100]      null      X      
copyEndy([12, 11, 10, 89, 101, 4], 1) → [10]      null      X      
copyEndy([13, 2, 2, 0], 2) → [2, 2]      null      X      
copyEndy([13, 2, 2, 0], 3) → [2, 2, 0]      null      X      
copyEndy([13, 2, 13, 2, 0, 30], 2) → [2, 2]      null      X      
copyEndy([13, 2, 13, 2, 0, 30], 3) → [2, 2, 0]      null      X      
other tests
X      

how above outputs relates to below description

We'll say that a positive int n is "endy" if it is in the range 0..10 or 90..100 (inclusive). //so output array elements should always be between 0 till 10 or 90 till 100?but what is length of output array?how we know(looks like it is count)?
Given an array of positive ints, return a new array of length "count" containing the first endy count numbers from the original array.//first endy count numbers means what??
gudii9Author Commented:
copyEndy([13, 2, 2, 0], 2) → [2, 2]      null      X      
copyEndy([13, 2, 2, 0], 3) → [2, 2, 0]      null      X      
copyEndy([13, 2, 13, 2, 0, 30], 2) → [2, 2]      null      X      
copyEndy([13, 2, 13, 2, 0, 30], 3) → [2, 2, 0]

i think i got now. Eliminate all the numbers out of the range and return upto the count even there are 100 endy numbers are there.

let me think on psedo code and code
Get Blueprints for Increased Customer Retention

The IT Service Excellence Tool Kit has best practices to keep your clients happy and business booming. Inside, you’ll find everything you need to increase client satisfaction and retention, become more competitive, and increase your overall success.

rrzstudentCommented:
Please post the link to the challenge.
gudii9Author Commented:
oops here is the link

http://codingbat.com/prob/p130124
gudii9Author Commented:
public int[] copyEndy(int[] nums, int count) {
  int[] arr=new int[count];
  for(int i=0;i<nums.length;i++){
  if( ((nums[i]>0)&&(nums[i]<10))|| (nums[i]>100)&&(nums[i]<10) ){
    arr[i]=nums[i];
  }
  }
  return arr;
}

Open in new window


i wrote asd above and failing some tests as below. please advise
Expected      Run            
copyEndy([9, 11, 90, 22, 6], 2) → [9, 90]      Exception:java.lang.ArrayIndexOutOfBoundsException: 4 (line number:5)      X      
copyEndy([9, 11, 90, 22, 6], 3) → [9, 90, 6]      Exception:java.lang.ArrayIndexOutOfBoundsException: 4 (line number:5)      X      
copyEndy([12, 1, 1, 13, 0, 20], 2) → [1, 1]      Exception:java.lang.ArrayIndexOutOfBoundsException: 2 (line number:5)      X      
copyEndy([12, 1, 1, 13, 0, 20], 3) → [1, 1, 0]      [0, 1, 1]      X      
copyEndy([0], 1) → [0]      [0]      OK      
copyEndy([10, 11, 90], 2) → [10, 90]      [0, 0]      X      
copyEndy([90, 22, 100], 2) → [90, 100]      [0, 0]      X      
copyEndy([12, 11, 10, 89, 101, 4], 1) → [10]      Exception:java.lang.ArrayIndexOutOfBoundsException: 5 (line number:5)      X      
copyEndy([13, 2, 2, 0], 2) → [2, 2]      Exception:java.lang.ArrayIndexOutOfBoundsException: 2 (line number:5)      X      
copyEndy([13, 2, 2, 0], 3) → [2, 2, 0]      [0, 2, 2]      X      
copyEndy([13, 2, 13, 2, 0, 30], 2) → [2, 2]      Exception:java.lang.ArrayIndexOutOfBoundsException: 3 (line number:5)      X      
copyEndy([13, 2, 13, 2, 0, 30], 3) → [2, 2, 0]      Exception:java.lang.ArrayIndexOutOfBoundsException: 3 (line number:5)      X      
other tests
X      
Your progress graph for this problem
Guy Hengel [angelIII / a3]Billing EngineerCommented:
>arr[i]=nums[i];

Open in new window


the issue is that you will copy the found items into the exact same index in the "result" array, and actually are not counting how many you really are copying.

create a variable (j) that defines where the found item should go to in the resulting array

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
gudii9Author Commented:
public int[] copyEndy(int[] nums, int count) {
  int[] arr=new int[count];
  for(int j=0;j<nums.length;j++){
  for(int i=0;i<nums.length;i++){
  if( ((nums[i]>0)&&(nums[i]<10))|| (nums[i]>100)&&(nums[i]<10) ){
    arr[j]=nums[i];
  }
  }
  }
  return arr;
}

Open in new window

something like above?
gudii9Author Commented:
public int[] copyEndy(int[] nums, int count) {
  int j=0;
  int[] arr=new int[count];
 // for(int j=0;j<nums.length;j++){
  for(int i=0;i<nums.length;i++){
  if( ((nums[i]>0)&&(nums[i]<10))|| (nums[i]>100)&&(nums[i]<10) ){
    arr[j]=nums[i];
    j++;
  }
  }
 // }
  return arr;
}

Open in new window

something like above?above fails below tests. please advise
Expected      Run            
copyEndy([9, 11, 90, 22, 6], 2) → [9, 90]      [9, 6]      X      
copyEndy([9, 11, 90, 22, 6], 3) → [9, 90, 6]      [9, 6, 0]      X      
copyEndy([12, 1, 1, 13, 0, 20], 2) → [1, 1]      [1, 1]      OK      
copyEndy([12, 1, 1, 13, 0, 20], 3) → [1, 1, 0]      [1, 1, 0]      OK      
copyEndy([0], 1) → [0]      [0]      OK      
copyEndy([10, 11, 90], 2) → [10, 90]      [0, 0]      X      
copyEndy([90, 22, 100], 2) → [90, 100]      [0, 0]      X      
copyEndy([12, 11, 10, 89, 101, 4], 1) → [10]      [4]      X      
copyEndy([13, 2, 2, 0], 2) → [2, 2]      [2, 2]      OK      
copyEndy([13, 2, 2, 0], 3) → [2, 2, 0]      [2, 2, 0]      OK      
copyEndy([13, 2, 13, 2, 0, 30], 2) → [2, 2]      [2, 2]      OK      
copyEndy([13, 2, 13, 2, 0, 30], 3) → [2, 2, 0]      [2, 2, 0]      OK      
other tests
X      
gudii9Author Commented:
public int[] copyEndy(int[] nums, int count) {
  int j=0;
  int[] arr=new int[count];
 // for(int j=0;j<nums.length;j++){
  for(int i=0;i<nums.length;i++){
  if( ((nums[i]>=0)&&(nums[i]<=10))|| (nums[i]=>100)&&(nums[i]=<10) ){
    arr[j]=nums[i];
    j++;
  }
  }
 // }
  return arr;
}

Open in new window


why above give below error?

Compile problems:


Error:	if( ((nums[i]>=0)&&(nums[i]<=10))|| (nums[i]=>100)&&(nums[i]=<10) ){
	                                             ^
Syntax error on token ">", delete this token

Open in new window


which side i should put = towards left side of > or right side (even for less than also which side we have to place = . i confuse often with this?)
gudii9Author Commented:
looks like = always right side.

public int[] copyEndy(int[] nums, int count) {
  int j=0;
  int[] arr=new int[count];
 // for(int j=0;j<nums.length;j++){
  for(int i=0;i<nums.length;i++){
  if( ((nums[i]>=0)&&(nums[i]<=10))|| (nums[i]>=100)&&(nums[i]<=10) ){
    arr[j]=nums[i];
    j++;
  }
  }
 // }
  return arr;
}

Open in new window


above fails below tests? please advise
Expected      Run            
copyEndy([9, 11, 90, 22, 6], 2) → [9, 90]      [9, 6]      X      
copyEndy([9, 11, 90, 22, 6], 3) → [9, 90, 6]      [9, 6, 0]      X      
copyEndy([12, 1, 1, 13, 0, 20], 2) → [1, 1]      Exception:java.lang.ArrayIndexOutOfBoundsException: 2 (line number:7)      X      
copyEndy([12, 1, 1, 13, 0, 20], 3) → [1, 1, 0]      [1, 1, 0]      OK      
copyEndy([0], 1) → [0]      [0]      OK      
copyEndy([10, 11, 90], 2) → [10, 90]      [10, 0]      X      
copyEndy([90, 22, 100], 2) → [90, 100]      [0, 0]      X      
copyEndy([12, 11, 10, 89, 101, 4], 1) → [10]      Exception:java.lang.ArrayIndexOutOfBoundsException: 1 (line number:7)      X      
copyEndy([13, 2, 2, 0], 2) → [2, 2]      Exception:java.lang.ArrayIndexOutOfBoundsException: 2 (line number:7)      X      
copyEndy([13, 2, 2, 0], 3) → [2, 2, 0]      [2, 2, 0]      OK      
copyEndy([13, 2, 13, 2, 0, 30], 2) → [2, 2]      Exception:java.lang.ArrayIndexOutOfBoundsException: 2 (line number:7)      X      
copyEndy([13, 2, 13, 2, 0, 30], 3) → [2, 2, 0]      [2, 2, 0]      OK      
other tests
X      
Your progress graph for this problem
rrzstudentCommented:
(nums[i]>=100)&&(nums[i]<=10)

Open in new window

That will never be true.  You should be finding 90..100 (inclusive).  
Also, you searching all through the nums array. You need to stop when the arr array is full.
gudii9Author Commented:
public int[] copyEndy(int[] nums, int count) {
  int j=0;
  int[] arr=new int[count];
 // for(int j=0;j<nums.length;j++){
  for(int i=0;i<nums.length;i++){
  if( ((nums[i]>=0)&&(nums[i]<=10))|| (nums[i]>=90)&&(nums[i]<=100) ){
    arr[j]=nums[i];
    j++;
  }
  }
 // }
  return arr;
}

Open in new window


above passign more tests.
Expected      Run            
copyEndy([9, 11, 90, 22, 6], 2) → [9, 90]      Exception:java.lang.ArrayIndexOutOfBoundsException: 2 (line number:7)      X      
copyEndy([9, 11, 90, 22, 6], 3) → [9, 90, 6]      [9, 90, 6]      OK      
copyEndy([12, 1, 1, 13, 0, 20], 2) → [1, 1]      Exception:java.lang.ArrayIndexOutOfBoundsException: 2 (line number:7)      X      
copyEndy([12, 1, 1, 13, 0, 20], 3) → [1, 1, 0]      [1, 1, 0]      OK      
copyEndy([0], 1) → [0]      [0]      OK      
copyEndy([10, 11, 90], 2) → [10, 90]      [10, 90]      OK      
copyEndy([90, 22, 100], 2) → [90, 100]      [90, 100]      OK      
copyEndy([12, 11, 10, 89, 101, 4], 1) → [10]      Exception:java.lang.ArrayIndexOutOfBoundsException: 1 (line number:7)      X      
copyEndy([13, 2, 2, 0], 2) → [2, 2]      Exception:java.lang.ArrayIndexOutOfBoundsException: 2 (line number:7)      X      
copyEndy([13, 2, 2, 0], 3) → [2, 2, 0]      [2, 2, 0]      OK      
copyEndy([13, 2, 13, 2, 0, 30], 2) → [2, 2]      Exception:java.lang.ArrayIndexOutOfBoundsException: 2 (line number:7)      X      
copyEndy([13, 2, 13, 2, 0, 30], 3) → [2, 2, 0]      [2, 2, 0]      OK      
other tests
X      
Your progress graph for this problem

need to figure out how to stop at count. I am not able to give additional condition like j<count in for loop though?
gudii9Author Commented:
public int[] copyEndy(int[] nums, int count) {
  int j=0;
  int[] arr=new int[count];
 // for(int j=0;j<nums.length;j++){
  for(int i=0;i<nums.length;i++){
  if( ((nums[i]>=0)&&(nums[i]<=10))|| (nums[i]>=90)&&(nums[i]<=100) ){
    arr[j]=nums[i];
    j++;
    if(j==count) break;
  }
  }
 // }
  return arr;
}

Open in new window


above passed all tests. any improvements, alternate approaches?
rrzstudentCommented:
Looks good.
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Java

From novice to tech pro — start learning today.