?>/script>'; } ?> Combinaciones de digitos repetidos... ?? Widgets Magazine

Autor Tema: Combinaciones de digitos repetidos... ??  (Leído 16480 veces)

0 Usuarios y 1 Visitante están viendo este tema.

skan

  • Visitante
Combinaciones de digitos repetidos... ??
« en: 12-12-2014, 22:54 (Viernes) »
Buenas

Estaba leyendo un hilo sobre un generador de passwords... y me ha surgido una duda...

Entre todos los números de 10 digitos ¿Cómo calculas cuantos hay que tengan al menos 3 dígitos iguales consecutivos?
Parece fácil pero algunos se contarían varias veces, por ejemplo cuando tenga un grupo de 3 al principio y otro grupo de 3 en otro lugar.
« Última modificación: 13-12-2014, 01:02 (Sábado) por skan »

vk496

  • Visitante
Re: Re: Combinaciones de digitos repetidos... ??
« Respuesta #1 en: 12-12-2014, 23:02 (Viernes) »
Explicate mejor por favor, no comprendo la intención/finalidad de la pregunta.

Salu2

skan

  • Visitante
Re: Combinaciones de digitos repetidos... ??
« Respuesta #2 en: 13-12-2014, 01:01 (Sábado) »
La finalidad es sólo saber resolver un problemilla probabilistico, hacer ese cálculo,
saber como se calcula la cantidad de números distintos con al menos 3 digitos iguales consecutivos.

por ejemplo
37472345  -> ése no tiene 3 números iguales consecutivos
47772345  -> éste sí, porque tiene tres 7 seguidos.
77777345  -> éste también

Pues eso, contarlos.

En total hay 10^8 números, ¿Cuántos tienen al menos 3 digitos iguales seguidos?
« Última modificación: 13-12-2014, 01:03 (Sábado) por skan »

vk496

  • Visitante
Re: Combinaciones de digitos repetidos... ??
« Respuesta #3 en: 13-12-2014, 01:10 (Sábado) »
Es decir, de una lista de numeros, quieres saber cuantos de ellos tienen 3 números iguales consecutivos. Cierto?

Salu2

skan

  • Visitante
Re: Combinaciones de digitos repetidos... ??
« Respuesta #4 en: 13-12-2014, 01:52 (Sábado) »
3 o más.
Pero no hacerlo mediante un programa (aunque eso ayudaría a comprobarlo) que los cuente sino mediante un cálculo.

Por ejemplo aquí he visto una explicación pero no la entiendo ni sé si es correcta:
http://rinconmatematico.com/foros/index.php?topic=34705.new#new
« Última modificación: 13-12-2014, 01:55 (Sábado) por skan »

Desconectado Hwagm

  • Administrador
  • *
  • Mensajes: 18287
Re: Combinaciones de digitos repetidos... ??
« Respuesta #5 en: 13-12-2014, 22:13 (Sábado) »
a groso modo

como son 10 digitos, pues metes 10 for (blucles) de o a 9.

el ultimo for, metes la comprobacion, o hay mismo, o llamada a una funcion, para poder salir cuando se cumpla la comprobacion.

tienes los numeros parciales, en las variable de cada bucle.

Si el digito 1 = 2 = 3 sumas 1, y sales de la comprobacion
Si el digito 2 = 3 = 4 sumas 1, y sales de la comprobacion
Si el digito 3 = 4 = 5 sumas 1, y sales de la comprobacion
Si el digito 4 = 5 = 6 sumas 1, y sales de la comprobacion
Si el digito 5 = 6 = 7 sumas 1, y sales de la comprobacion
Si el digito 6 = 7 = 8 sumas 1, y sales de la comprobacion
Si el digito 7 = 8 = 9 sumas 1, y sales de la comprobacion
Si el digito 8 = 9 = 10 sumas 1, y sales de la comprobacion

Desconectado Hwagm

  • Administrador
  • *
  • Mensajes: 18287
Re: Combinaciones de digitos repetidos... ??
« Respuesta #6 en: 13-12-2014, 22:33 (Sábado) »
Código: [Seleccionar]
int i0,i1,i2,i3,i4,i5,i6,i7,i8,i9,i10, suma;

// si quieres ponlas a cero, aunque no hace falta

for(i0=0;i0<10;i0++){
for(i1=0;i1<10;i1++){
for(i2=0;i2<10;i2++){
for(i3=0;i3<10;i3++){
for(i4=0;i4<10;i4++){   //    cin>>suma, puedes poner visualizaciones por aqui si quieres
for(i5=0;i5<10;i5++){
for(i6=0;i6<10;i6++){
for(i7=0;i7<10;i7++){  //  cin>>suma, puedes poner visualizaciones por aqui si quieres
for(i8=0;i8<10;i8++){
for(i9=0;i9<10;i9++){
for(i10=0;i10<10;i10++){

 cin>>suma; // para ver sumas parciales , si va muy rapido, pues lo pones en los fors

 if (i0==i1 && i1==i2 && i2==i3)  {
                        suma++;
                        break;
                                                      }

 if (i1==i2 && i2==i3 && i3==i4)  {
                        suma++;
                        break;
                                                      }
if (i2==i3 && i3==i4 && i4==i5)  {
                        suma++;
                        break;
                                                      }
if (i3==i4 && i4==i5 && i5==i6)  {
                        suma++;
                        break;
                                                      }
if (i4==i5 && i5==i6 && i6==i7)  {
                        suma++;
                        break;
                                                      }
if (i5==i6 && i6==i7 && i7==i8)  {
                        suma++;
                        break;
                                                      }
if (i6==i7 && i7==i8 && i8==i9)  {
                        suma++;
                        break;
                                                      }
if (i7==i8 && i8==i9 && i9==i10)  {
                        suma++;
                        break;
                                                      }



}
}
}
}
}
}
}
}
}
}
 cin>>suma; // asi veras la suma final
« Última modificación: 13-12-2014, 22:42 (Sábado) por Hwagm »

Desconectado Hwagm

  • Administrador
  • *
  • Mensajes: 18287
Re: Combinaciones de digitos repetidos... ??
« Respuesta #7 en: 13-12-2014, 22:34 (Sábado) »
asi lo haria yo xd


y no me he leido el link, asi que alo mejor es super disitinto xd, pero yo aprendi a programar a base de ostias xd
« Última modificación: 13-12-2014, 22:43 (Sábado) por Hwagm »

skan

  • Visitante
Re: Combinaciones de digitos repetidos... ??
« Respuesta #8 en: 13-12-2014, 23:14 (Sábado) »
Muchas gracias pero insisto, lo que preguntaba no era por un código que lo calcule sino por como deducir la ecuación matemática.

De todos modos, ya que habéis puesto el código, ¿no hay una forma más compacta, sin tantos bucles?

vk496

  • Visitante
Re: Combinaciones de digitos repetidos... ??
« Respuesta #9 en: 13-12-2014, 23:50 (Sábado) »
yo aprendi a programar a base de ostias xd

Creo que no fueron suficientes  >:D ;D

Si eso lo ve geminis, le da algo xD

Dejo una cosa mal hecha en Bash. Mete 10 numero como parametro y obtendrás una respuesta

Código: [Seleccionar]
#!/bin/bash

numero="$1"

if [ ! ${#numero} = 10 ]; then
echo este numero no es de 10 cifras
exit 1
fi

contenedor=$(echo "$numero" | cut -c1)
contador=0

for x in $(seq 1 10); do
actual=$(echo "$numero" | cut -c$x)
echo actual: $actual


if [ $contenedor = $actual ]; then
let contador=$contador+1
echo " contenedor: $contenedor"


if [ $contador = 3 ]; then
echo hay 3 numeros
exit
fi

else
contenedor=$actual
contador=1
fi

done

Salu2

raphik

  • Visitante
Re: Combinaciones de digitos repetidos... ??
« Respuesta #10 en: 31-01-2015, 13:11 (Sábado) »
La finalidad es sólo saber resolver un problemilla probabilistico, hacer ese cálculo,
saber como se calcula la cantidad de números distintos con al menos 3 digitos iguales consecutivos.

por ejemplo
37472345  -> ése no tiene 3 números iguales consecutivos
47772345  -> éste sí, porque tiene tres 7 seguidos.
77777345  -> éste también

Pues eso, contarlos.

En total hay 10^8 números, ¿Cuántos tienen al menos 3 digitos iguales seguidos?


Para un número de diez cifras
d9 d8 d7 d6 d5 d4 d3 d2 d1 d0

hay ocho posibles casos

d9=d8=d7≠d6≠d5≠d4≠d3≠d2≠d1≠d0

d9≠d8=d7=d6≠d5≠d4≠d3≠d2≠d1≠d0

d9≠d8≠d7=d6=d5≠d4≠d3≠d2≠d1≠d0

d9≠d8≠d7≠d6=d5=d4≠d3≠d2≠d1≠d0

d9≠d8≠d7≠d6≠d5=d4=d3≠d2≠d1≠d0

d9≠d8≠d7≠d6≠d5≠d4=d3=d2≠d1≠d0

d9≠d8≠d7≠d6≠d5≠d4≠d3=d2=d1≠d0

d9≠d8≠d7≠d6≠d5≠d4≠d3≠d2=d1=d0

Si las cifras son decimales habría 8 · 108 combinaciones distintas.
Saludos.
« Última modificación: 31-01-2015, 13:20 (Sábado) por raphik »