Ayuda con Javascript

B

#30 De 1 a 1000 me salen 28.

1 respuesta
B

.

1 respuesta
B

#32 genial!

Pues ya esta, solucionado

JuAn4k4

#30 Cierto, si a lo que me refiero es que seguramente se pueda calcular de alguna forma sin necesidad de hacer brute force.

Parece combinatoria, más que binario, no se

1 respuesta
HeXaN

#34 Juraría que en álgebra o lógica en la facultad nos mandaron algunos ejercicios al respecto. Ojalá acordarme.

2 1 respuesta
JuAn4k4

#35 Si, así a simple vista combinatoria ? podría ser... binario? siempre se me ha dado regular sin papel y boli hacer esto de cabeza

desu

Para cada longitud de digito (el rango de valores a buscar) sacas las posibilidades:

6
X6 o 6X
6XX o X6X o XX6 o 66X o X66 o 666
Donde X es el digito libre y X + "numero de 6" no puede superar tu limite.

El resultado es la unión del computo para cada numero de X que te queden y quitar números repetidos (006, 06, 6 son el mismo).

Si no me falla la memoria es hacer las uniones de todos los subconjuntos y quitar todas las intersecciones de todos los posibles subconjuntos (repetidos).

A + B + C - AB - AC - BC

Pero creo que lo digo mal, la formula esta tenia un detalle mas creo.

Para implementarlo lo de quitar repetidos puedes hacerlo de varias maneras, yo creo que me sale en O(N) en una tirada, porque si estoy calculando 3 digitos y me sale un numero mas peque;o que 100 (066 o 006) se que no lo teng oque a;adir a la lista de resultados.

1 respuesta
Fyn4r

No me leí muy bien el hilo pero la cosa es ver de cuantas forma puedes meter un número acompañado de dos 6 de la siguiente forma:

X66, 6X6, 66X

Hay 10 formas de colocar números a cada X, lo que pasa es que colocar el 6 te genera el número 666 3 veces. Restas esos 2 repes y pum, 28

#37 te falta sumar ABC al final

1 1 respuesta
desu

#38 Esa es correcto, se nota que tienes la literatura al día.