Seguridad Wireless - Wifi
General => Programación => Mensaje iniciado por: skan 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.
-
Explicate mejor por favor, no comprendo la intención/finalidad de la pregunta.
Salu2
-
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?
-
Es decir, de una lista de numeros, quieres saber cuantos de ellos tienen 3 números iguales consecutivos. Cierto?
Salu2
-
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
-
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
-
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
-
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
-
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?
-
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
#!/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
-
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.