- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
public static boolean isBouncy(long n) {
boolean isBouncy = false;
String num = Long.toString(n);
String[] seperateDigits = new String[num.length()+1];
for (int i=1; i <= num.length(); i++) {
seperateDigits[i] = num.substring(i-1,i);
}
int firstDig = Integer.parseInt(num.substring(0,1));
int cDig;
int iDeg = 0;
int cDeg = 0;
int dig0;
int dig1;
for (int i = 2; i <= seperateDigits.length-1; i++) {
if (!isBouncy) {
dig0 = Integer.parseInt(seperateDigits[i-1]);
dig1 = Integer.parseInt(seperateDigits[i]);
if (i == 2) iDeg = getDegree(dig0, dig1);
else {
cDeg = getDegree(dig0,dig1);
if (iDeg == 0) iDeg = cDeg;
else if (cDeg == -iDeg) isBouncy = true;
}
}
}
if (iDeg == 0) isBouncy = false;
return isBouncy;
}
bormand 19.05.2012 12:47 # +3
bormand 19.05.2012 13:28 # 0
http://ideone.com/fC4g9
TheHamstertamer 19.05.2012 14:33 # 0
bormand 19.05.2012 14:45 # 0
wvxvw 19.05.2012 14:39 # 0
12123456
--^
дальше уже не нужно ничего проверять.
bormand 19.05.2012 14:55 # 0
wvxvw 19.05.2012 15:23 # 0
bormand 19.05.2012 16:02 # +1
wvxvw 19.05.2012 15:35 # 0
Т.е. в принципе, с точки зрения рассчетов тут все правильно, но результат немного отличается. Х.з. тоже как они проценты считали - в какую сторону округлять?
bormand 19.05.2012 16:20 # 0
wvxvw 19.05.2012 16:23 # 0
Да, и на счет перебора не всех чисел - в принципе можно было бы, но становится очень сложно изза того, что если перебирать числа не последовательно, а "скачками":
101->109 bouncy
110->119 not bouncy
120->121 bouncy
и т.д. то потом становится очень заморочливо найти процент. Нужно придумыватьс сложную эвристику - когда остановиться перед тем, как считать по одному числу вместо блоками... Вобщем, согласен с комментарием, не интуитивно! :)
bormand 19.05.2012 16:24 # 0
bormand 19.05.2012 16:30 # 0
wvxvw 19.05.2012 16:44 # 0
wvxvw 19.05.2012 23:20 # +1
Но можно было еще и не прыгающих заоптимизировать :)
JavaGovno 19.05.2012 21:20 # +4
HaskellGovno 19.05.2012 23:00 # −3
eth0 20.05.2012 15:38 # +3
lucidfoxGovno 20.05.2012 19:45 # +3
unu-foja 21.05.2012 17:59 # 0