Foros del Web » Programando para Internet » PHP »

Encontrar rachas de aciertos

Estas en el tema de Encontrar rachas de aciertos en el foro de PHP en Foros del Web. Buenas, Dispongo del siguiente array de aciertos, donde el 0 se considera fallo y el 1 acierto. Array ( [0] => 1 [1] => 0 ...
  #1 (permalink)  
Antiguo 10/01/2015, 18:12
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años
Puntos: 20
Encontrar rachas de aciertos

Buenas,

Dispongo del siguiente array de aciertos, donde el 0 se considera fallo y el 1 acierto.

Array
(
[0] => 1
[1] => 0
[2] => 0
[3] => 1
[4] => 1
[5] => 0
[6] => 0
[7] => 0
[8] => 0
[9] => 1
[10] => 1
[11] => 0
[12] => 0
[13] => 0
[14] => 0
[15] => 0
[16] => 1
[17] => 1
)

Me interesa construir un array donde me muestre que las rachas de aciertos.
Con un ejemplo se verá claro si tengo
0,0,1 significa que a la tercera se acertó por lo que en la posición 3 del array resultado debería incrementar 1 el valor.

Partiendo del array inicial el numero de aciertos ha sido
1
3
1
5
1
6
1

Por lo que el array final deberia ser

1 >> 4
2 >> 0
3 >> 1
4 >> 0
5 >> 1
6 >> 1

Lo que significa que en total han habido 7 aciertos, que en 4 ocasiones se ha acertado tras otro acierto, y que la racha mas larga ha sido de 6.

Muchas gracias de antemano!
  #2 (permalink)  
Antiguo 11/01/2015, 11:31
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años
Puntos: 20
Respuesta: Encontrar rachas de aciertos

Buenas,

Me funciona pero no consigo hacerlo bien ya que me muestra errores por pantalla


Codigo usado:

Código PHP:
Ver original
  1. $arrayAciertos=('1,0,0,1,1,0,0,0,0,1,1,0,0,0,0,0,1,1');
  2. $arrayAciertos = explode(",", $arrayAciertos);
  3. $arrayContador = array();
  4. $max=1;
  5. foreach($arrayAciertos as $elemento){
  6.     if ($elemento !=1){
  7.         $max++;
  8.     }else{
  9.         $arrayContador[$max] += 1;
  10.         $max=1;
  11.     }  
  12. }
  13. echo "<pre>";print_r($arrayContador);echo "</pre>";

Errores que recibo.

Notice: Undefined offset: 1 in XXXX on line XXX
Notice: Undefined offset: 3 in XXXX on line XXX
Notice: Undefined offset: 5 in XXXX on line XXX
Notice: Undefined offset: 6 in XXXX on line XXX

Resultado:
Array
(
[1] => 4
[3] => 1
[5] => 1
[6] => 1
)

¿Alguien me echa una mano para mejorar el código?

Muchas gracias
  #3 (permalink)  
Antiguo 11/01/2015, 11:37
Avatar de seRgiOOOOOO  
Fecha de Ingreso: noviembre-2011
Mensajes: 35
Antigüedad: 12 años, 4 meses
Puntos: 1
Respuesta: Encontrar rachas de aciertos

acabo de probar tu codigo y no me da los errores que te salen a ti :S
la salida es esta

Código PHP:
Array
(
    [
1] => 4
    
[3] => 1
    
[5] => 1
    
[6] => 1

no veo como puedes simplificar ese codigo
  #4 (permalink)  
Antiguo 11/01/2015, 11:40
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años
Puntos: 20
Respuesta: Encontrar rachas de aciertos

He encontrado la forma que no de los errores ;)

Código PHP:
Ver original
  1. foreach($arrayAciertos as $elemento){
  2.     if ($elemento !=1){
  3.         $max++;
  4.     }else{
  5.         if ( ! isset($arrayContador[$max])) {
  6.             $arrayContador[$max] = null;
  7.         }
  8.         $arrayContador[$max] += 1;
  9.         $max=1;
  10.     }  
  11. }

Gracias.

Etiquetas: encontrar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:18.