Aunque creo que es una pregunta Noob, he buscado y no encuentro un ejemplo usable, la verdad no quiero codear tanto pero si he de hacerlo*quiero encontrar la forma mas eficiente.
Tengo un cadena donde faltan caraceteres Unos son totalmente desconocidos "*" y hay que hacerles fuerza bruta (Esta parte ya la tengo hecha)
Pero la misma cadena tiene algunos caraceters que son Probables "?" con ciertos caracteres posibles que no se alcanzan a ver ejemplos 8 y B. X, K y k, S y 5, Esta parte la manejo cada caracter "?" con su lista individual de caraceters posibles y no es la misma para cada simbolo "?"
Ejemplo:
sV***??c8NSs1X85ws9Er?z9FwtdJ
Cada caracter "*" puede ser uno de los 58 caraceteres del base58 Esta parte la manejo mas o menos asi
do{
//CODIGO
}while(increment_base58(string,aux));
La solucion anterior es general para cualquier numero de * en el string dado
Pero la parte de los "?" es variable, para este ejemplo vamos a decir que los los ? pueden ser alguno de los siguientes caraceteres respectivamente:
const char *doubt_possibles[3] = {"ec","B28","XKk"};
Significa que el primer caracter "?" de Izquierda a Derecha puede ser e o c el segundo "?" puede ser B, 2 u 8 (Imagen muy distorcionada) y el ultimo Signo "?" podria ser "X, K o k"
Esta solucion esta hardcodeada de la siguiente manera:
for(contadores
[0] = 0; contadores
[0] < strlen(doubt_possibles
[0]) ; contadores
[0]++) { current_string[doubt_locations[0]] = doubt_possibles[0][contadores[0]];
for(contadores
[1] = 0; contadores
[1] < strlen(doubt_possibles
[1]) ; contadores
[1]++) { current_string[doubt_locations[1]] = doubt_possibles[1][contadores[1]];
for(contadores
[2] = 0; contadores
[2] < strlen(doubt_possibles
[2]) ; contadores
[2]++) { current_string[doubt_locations[2]] = doubt_possibles[2][contadores[2]];
//Otro Codigo
do{
//CODIGO
}while(increment_base58(current_string,aux));
}
}
}
El problema con lo anterior es que si me mandan otra cadena diferente o cambia la cantidad de caracteres tengo que editar la mitad del codigo actual.
Mas o menos tengo un leve idea de como hacerlo de forma general, cualquier numero de ? y cualquier longitud de posibles, pero me pregunto cual seria su forma de abordar este problema sin utilizar tanto for, quedando algo asi:
do{ //Do para los "?" en lugar de tanto for....
do{ // Do para los "*"
//CODIGO
}while(increment_base58(current_string,aux));
}while(magic_function(current_string,aux2));
Es decir como codificarian "magic_function"
bool magic_function(char *current_string,int aux2){
// Que hay aqui?
}