Solved

# copyEndy  challenge

Posted on 2016-08-30
94 Views
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]
0
Question by:gudii9
• 10
• 3
• 2

LVL 142

Expert Comment

ID: 41777519
return a new array of length "count" containing the first "count" (I added this into the text) endy numbers from the original array
0

LVL 7

Author Comment

ID: 41780960
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??
0

LVL 7

Author Comment

ID: 41780962
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
0

LVL 27

Expert Comment

ID: 41786821
0

LVL 7

Author Comment

ID: 41786993

http://codingbat.com/prob/p130124
0

LVL 7

Author Comment

ID: 41788986
``````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;
}
``````

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
0

LVL 142

Accepted Solution

Guy Hengel [angelIII / a3] earned 250 total points
ID: 41789070
``````>arr[i]=nums[i];
``````

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
0

LVL 7

Author Comment

ID: 41790674
``````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;
}
``````
something like above?
0

LVL 7

Author Comment

ID: 41790680
``````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;
}
``````
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
0

LVL 7

Author Comment

ID: 41790686
``````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;
}
``````

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
``````

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?)
0

LVL 7

Author Comment

ID: 41790687
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;
}
``````

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
0

LVL 27

Assisted Solution

rrz earned 250 total points
ID: 41790698
``````(nums[i]>=100)&&(nums[i]<=10)
``````
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.
0

LVL 7

Author Comment

ID: 41791356
``````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;
}
``````

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?
0

LVL 7

Author Comment

ID: 41791366
``````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;
}
``````

above passed all tests. any improvements, alternate approaches?
0

LVL 27

Expert Comment

ID: 41791410
Looks good.
0

## Featured Post

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This is an explanation of a simple data model to help parse a JSON feed
If you’re thinking to yourself “That description sounds a lot like two people doing the work that one could accomplish,” you’re not alone.
The viewer will learn how to pass data into a function in C++. This is one step further in using functions. Instead of only printing text onto the console, the function will be able to perform calculations with argumentents given by the user.
The viewer will learn how to clear a vector as well as how to detect empty vectors in C++.