akualung
13/01/2015, 00:18
Estoy enganchado a esta página desde hace varios dias. Te proponen ejercicios de programación más o menos cortos en varios lenguajes (yo estoy con los de java) y luego puedes pasar tu propuesta por un juego de pruebas que ellos mismos han confeccionado para cada ejercicio.
Me ha resultado curioso este ejercicio: http://codingbat.com/prob/p134250
En principio no acababa de entender del todo lo que estaba pidiendo (qué raro viniendo de mí) pero luego se me encendió al bombilla e hice esto:
public boolean xyBalance(String str) {
boolean result = true;
for (int i = 0; i < str.length(); i++) {
if (str.charAt(i) == 'x') {result = false;}
if (str.charAt(i) == 'y') {result = true;}
}
return result;
}
Después miro la solución propuesta por la propia página y se me ha partido el culo cuando he visto lo rocambolesca que es. O se me ha escapado algo (cosa que dudo porque mi código ha pasado todo el juego de pruebas perfectamente) o el que propone soluciones en esta página sabe aún menos programación que yo XDDDDDDDDD:
public boolean xyBalance(String str) {
// Find the rightmost y
int y = -1;
for (int i = 0; i < str.length(); i++) {
if (str.charAt(i)=='y') y = i;
}
// Look at the x's, return false if one is after y
for (int i = 0; i < str.length(); i++) {
if (str.charAt(i)=='x' && i > y) return false;
}
return true;
// Solution notes: this solution uses two loops, each written the simple
// 0..length way. You could do it with a single reverse loop, noticing
// if you see an x before a y. Or use lastIndexOf().
}
Me ha resultado curioso este ejercicio: http://codingbat.com/prob/p134250
En principio no acababa de entender del todo lo que estaba pidiendo (qué raro viniendo de mí) pero luego se me encendió al bombilla e hice esto:
public boolean xyBalance(String str) {
boolean result = true;
for (int i = 0; i < str.length(); i++) {
if (str.charAt(i) == 'x') {result = false;}
if (str.charAt(i) == 'y') {result = true;}
}
return result;
}
Después miro la solución propuesta por la propia página y se me ha partido el culo cuando he visto lo rocambolesca que es. O se me ha escapado algo (cosa que dudo porque mi código ha pasado todo el juego de pruebas perfectamente) o el que propone soluciones en esta página sabe aún menos programación que yo XDDDDDDDDD:
public boolean xyBalance(String str) {
// Find the rightmost y
int y = -1;
for (int i = 0; i < str.length(); i++) {
if (str.charAt(i)=='y') y = i;
}
// Look at the x's, return false if one is after y
for (int i = 0; i < str.length(); i++) {
if (str.charAt(i)=='x' && i > y) return false;
}
return true;
// Solution notes: this solution uses two loops, each written the simple
// 0..length way. You could do it with a single reverse loop, noticing
// if you see an x before a y. Or use lastIndexOf().
}