/* package whatever; // don't place package name! */
import java.util.* ;
import java.lang.* ;
import java.io.* ;
public class Main
{
{
int [ ] numbers = { 23 , 56 , 67 , 06, 43 , 22 , 59 , 24 , 90 , 66 } ;
int [ ] lottery = { 01, 06, 43 , 22 , 89 } ;
for ( int n = lottery.length ; n > 1 ; n-- ) {
for ( int m = 0 ; m <= lottery.length - n; m++ ) {
int ix = indexOf( lottery, m, m + n, numbers) ;
if ( ix > - 1 ) {
System .
out .
printf ( "Found subarray %s, width=%d from: %d to %d " ,
Arrays .
toString ( Arrays .
copyOfRange ( lottery, m, m
+ n
) ) , n, m, m
+ n
- 1 ) ; System .
out .
printf ( "at index: %d%n" , ix
) ; }
}
}
}
static int indexOf( int search[ ] , int from, int to, int [ ] input) {
if ( null == search || null == input || search.length > input.length ) {
return - 1 ;
}
for ( int i = 0 , n = input.length - ( to - from) ; i <= n; i++ ) {
boolean found = true ;
for ( int j = from; found && j < to; j++ ) {
if ( input[ i + j - from] != search[ j] ) {
found = false ;
}
}
if ( found) {
return i;
}
}
return - 1 ;
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgpwdWJsaWMgY2xhc3MgTWFpbgp7CglwdWJsaWMgc3RhdGljIHZvaWQgbWFpbiAoU3RyaW5nW10gYXJncykgdGhyb3dzIGphdmEubGFuZy5FeGNlcHRpb24KCXsKCQlpbnRbXSBudW1iZXJzID0gezIzLCA1NiwgNjcsIDA2LCA0MywgMjIsIDU5LCAyNCwgOTAsIDY2fTsKCQlpbnRbXSBsb3R0ZXJ5ID0gezAxLCAwNiwgNDMsIDIyLCA4OX07CgkJCgkJZm9yIChpbnQgbiA9IGxvdHRlcnkubGVuZ3RoOyBuID4gMTsgbi0tKSB7CgkJICAgIGZvciAoaW50IG0gPSAwOyBtIDw9IGxvdHRlcnkubGVuZ3RoIC0gbjsgbSsrKSB7CgkJICAgICAgICBpbnQgaXggPSBpbmRleE9mKGxvdHRlcnksIG0sIG0gKyBuLCBudW1iZXJzKTsKCQkgICAgICAgIGlmIChpeCA+IC0xKSB7CgkJICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGYoIkZvdW5kIHN1YmFycmF5ICVzLCB3aWR0aD0lZCBmcm9tOiAlZCB0byAlZCAiLAoJCSAgICAgICAgICAgICAgICAgICAgQXJyYXlzLnRvU3RyaW5nKEFycmF5cy5jb3B5T2ZSYW5nZShsb3R0ZXJ5LCBtLCBtICsgbikpLCBuLCBtLCBtICsgbiAtIDEpOwoJCSAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRmKCJhdCBpbmRleDogJWQlbiIsIGl4KTsKCQkgICAgICAgIH0KCQkgICAgfQoJCX0KCX0KCQoJc3RhdGljIGludCBpbmRleE9mKGludCBzZWFyY2hbXSwgaW50IGZyb20sIGludCB0bywgaW50W10gaW5wdXQpIHsKCSAgICBpZiAobnVsbCA9PSBzZWFyY2ggfHwgbnVsbCA9PSBpbnB1dCB8fCBzZWFyY2gubGVuZ3RoID4gaW5wdXQubGVuZ3RoKSB7CgkgICAgICAgIHJldHVybiAtMTsKCSAgICB9CgkgICAgCgkgICAgZm9yIChpbnQgaSA9IDAsIG4gPSBpbnB1dC5sZW5ndGggLSAodG8gLSBmcm9tKTsgaSA8PSBuOyBpKyspIHsKCSAgICAgICAgYm9vbGVhbiBmb3VuZCA9IHRydWU7CgkgICAgICAgIGZvciAoaW50IGogPSBmcm9tOyBmb3VuZCAmJiBqIDwgdG87IGorKykgewoJICAgICAgICAgICAgaWYgKGlucHV0W2kgKyBqIC0gZnJvbV0gIT0gc2VhcmNoW2pdKSB7CgkgICAgICAgICAgICAgICAgZm91bmQgPSBmYWxzZTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICBpZiAoZm91bmQpIHsKCSAgICAgICAgICAgIHJldHVybiBpOwoJICAgICAgICB9CgkgICAgfQoJICAgIHJldHVybiAtMTsKCX0KfQ==