PDA

Ver la versión completa : [Programación] Conoceis CodingBat? ejercicios online de programación



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().
}

pakoito
13/01/2015, 00:25
Me acaba de dar estres postraumatico de las entrevistas de junior/becario.

Están entretenidos pero estos días prefiero un problema de mundo real (applicación en tiempo real, concurrencia...) a uno de algoritmia pura y dura.

swapd0
13/01/2015, 00:39
En tu caso si le pasas la cadena vacía te devuelve que esta balanceado cuando no debería estarlo, lo mismo si la cadena solo tiene una 'y', o tiene y-es pero no tiene 'x'.

akualung
13/01/2015, 01:01
En tu caso si le pasas la cadena vacía te devuelve que esta balanceado cuando no debería estarlo, lo mismo si la cadena solo tiene una 'y', o tiene y-es pero no tiene 'x'.

Sí, precisamente por eso dije que me costó entender lo que pedían. Resulta que si la cadena está vacía, o solo hay una "y" o varias pero sin "x", el juego de pruebas te lo considera como balanceado. De hecho han puesto varios casos en que la función recibe una cadena vacía, o un que solo tiene una "y", etc.

IronArthur
13/01/2015, 09:51
Yo estuve medio-enganchado una temporada a http://www.codewars.com/ pero al final raya la verdad.

Salu2