Autor Tema: Ayuda para distribuir dibujos posteriores a este: Γ

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

16 Marzo, 2025, 02:02 pm
Leído 3747 veces

Tachikomaia

  • $$\Large \color{#5b61b3}\pi\,\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 1,297
  • País: uy
  • Karma: +0/-0
  • Sexo: Masculino
Por ahora en mi programa:

1eros dibujos en 4 cuadros de 3*3 cuadraditos:


1eros dibujos en 9 cuadros de 4*4 cuadraditos, queda más bonito no sé por qué:


Intentaré explicar, si no se entiende pregunten.

Código: [Seleccionar]
// Si cada cuadradito tuviera 2 colores posibles:
DibujosPosibles = Math.pow(2, Cuadraditos);
// Esa cantidad se dividirá según la cantidad de cuadros,
// de modo que cada cuadro mostrará la misma cantidad de...
// dibujos, pero distintos a los de otros cuadros:
Disminucion = Math.floor(DibujosPosibles/Cuadros);
// Se llama disminución porque se comenzará mostrando...
// el dibujo que según el modo conque los numero,
// es el último, y se irá disminuyendo:
DibujoaMostrar = DibujosPosibles-1;

En un cuadro de 3*3 cuadraditos hay 512 dibujos posibles.

Se quiere que 512/4 se muestren en cada cuadro.

Se debe calcular qué dibujo mostrará el 1er cuadro, qué dibujo mostrará el 2ndo, y así.

Podría ser:
1er cuadro: Dibujo nro 1
2ndo cuadro: Dibujo nro 129
3er cuadro: Dibujo nro 257
4to cuadro: Dibujo nro 385

El nro de dibujo que muestre cada cuadro irá aumentando, así que en teoría cuando el 1er cuadro muestre el dibujo 128, el 4to mostrará el 512.
Error señalado por Richard, corregido.

Como el negro se puede asignar fácil como 0, puse que un cuadradito negro se considere 0 y uno blanco 1.

Y quiero que los dibujos empiecen en blanco.

Si quiero averiguar cómo es un dibujo, por ejemplo el nro 385, un método es convertir ese número en binario.

Es un poco problemático porque los dibujos en blanco, que son los 1eros, son los que tienen más valor, así que en vez de ir aumentando el dibujo a mostrar lo disminuyo:
1er cuadro: Dibujo nro 512
2ndo cuadro: Dibujo nro 384
3er cuadro: Dibujo nro 256
4to cuadro: Dibujo nro 128

Pero en binario 512 tiene 10 dígitos, y mis dibujos 9, lo cual sucede porque en el conteo de binarios el 0 es un valor, pero en mis dibujos no existe el dibujo nro 0. Por eso sí los contaré desde 0, entonces el 1er dibujo que se muestra es el nro 511, que se traduce como 111111111.

¡Todo eso ya está hecho! Ya lo tengo. Acá, es parte del código de cuando se insertan cuadros:
Código: [Seleccionar]
// Se pintarán de modo que muestren el dibujo...
// acorde a la división de dibujos; averiguarlo:
// Averiguar cómo es en binario:
DibujoEnBinario = "";
Resto = DibujoaMostrar;
while (Resto>0) {
DibujoEnBinario = DibujoEnBinario+Resto%2;
Resto = Math.floor(Resto/2);
}
// Agregar 0s a DibujoEnBinario si hacen falta:
while (DibujoEnBinario.length<Cuadraditos) {
DibujoEnBinario = DibujoEnBinario+0;
}
(...)
DibujoaMostrar = DibujoaMostrar-Disminucion;

Eso se repite para cada cuadro insertado. O sea, en cada repetición se calcula cómo es en binario el dibujo a mostrar, y al final se obtiene el siguiente dibujo (en decimal) a mostrar.

Lo que ahora quiero lograr es que el 1er dibujo, en vez de ser todo blanco, sea algo así: Γ
o sea, por ejemplo en el caso de cuadros de 3*3:
000
011
011

Debo:
- Obtener el número binario o decimal correspondiente a ese dibujo según la cantidad de cuadros y cuadraditos.
- Si es binario, convertirlo a decimal.
- Al total de dibujos posibles, restarle el número decimal obtenido.

Luego ya el programa funcionaría como está.

¿Cómo lo hago?

Se me ocurre algo como:
Al dibujo a mostrar, siendo todo blanco, ya tengo código que lo calcula, en este caso es:
DibujoaMostrar = 111111111;
Luego:
Código: [Seleccionar]
Convertirlo en texto.
FilaoColumna = 1;
Repetir
   // Para crear la línea en columnas:
   Su caracter nro (FilaoColumna) convertirlo en 0
   // Para crear la línea en filas:
   Su caracter nro (FilaoColumna*Cuadraditos) convertirlo en 0
   FilaoColumna++
mientras FilaoColumna < CuadraditosPorFila

Tendría que probarlo. Al principio no se me ocurría. Igual ¿no hay algo más eficiente, directo, una ecuación que resulte ese número?

16 Marzo, 2025, 02:56 pm
Respuesta #1

Richard R Richard

  • Ingeniero Industrial
  • $$\Large \color{#9c57a6}\pi\,\pi\,\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 4,054
  • País: ar
  • Karma: +2/-0
  • Sexo: Masculino
  • Dentro de la ciencia todo,fuera de la ciencia nada


Podría ser:
1er cuadro: Dibujo nro 1
2ndo cuadro: Dibujo nro 129
3er cuadro: Dibujo nro 257
4to cuadro: Dibujo nro 385

El nro de dibujo que muestre cada cuadro irá aumentando, así que en teoría cuando el 1er cuadro muestre el dibujo 64, el 4to mostrará el 256.


No, observa que si el primero aumentó en 63 para llegar a 64 partiendo de 1 , los demás tendran que haber aumentado $$63$$ , el segundo será $$129+63=192$$ el tercero $$257+63=320$$  y el cuarto $$385+63=448$$

Sino  prefieres eso crea un número de pantalla que ira de 1 hasta el numero de combinaciones($$c=2^{n^2}=2^9=512$$) dividido la cantidad de cuadrados por pantalla(r=4) $$q=\dfrac cr=\dfrac{2^{n^2}}{r}=512/4=128$$


haces un bucle w que vaya de 1 hasta q
en el primer cuadrado pones al dibujo  $$(w-1)*4$$ pasado a binario

en el segundo cuadrado pones al dibujo  $$(w-1)*4+1$$ pasado a binario

en el tercero cuadrado pones al dibujo  $$(w-1)*4+2$$ pasado a binario

en el cuarto cuadrado pones al dibujo  $$(w-1)*4+3$$ pasado a binario


Esto tambien se puede hacer tambien por bucle de 0 a $$r-1$$ y sumando esa variable , porque no siempre seran 4 cuadrados, en otro caso serán de 0 a 8 cuando r=9.



Y quiero que los dibujos empiecen en blanco.

de todos los dibujos posibles la mitad tendrán el primer cuadrado negro y la otra mitad blancos, así que tu rango de dibujos va del 1 al 256 cuando el primer cuadrado es blanco.

Si quiero averiguar cómo es un dibujo, por ejemplo el nro 385, un método es convertir ese número en binario.
OK

Pero en binario 512 tiene 10 dígitos, y mis dibujos 9, lo cual sucede porque en el conteo de binarios el 0 es un valor, pero en mis dibujos no existe el dibujo nro 0. Por eso sí los contaré desde 0, entonces el 1er dibujo que se muestra es el nro 511, que se traduce como 111111111.


Hola  esto ya se te explicó, tienes 512 dibujos en total a representar sus números en binario se numeran del 0 al 511, en binario el 0 es 000000000 y el 511 es  111111111
el tema pasa porque te confundes cuando dices que el dibujo 1 al 128 se representan en primer cuadro, y allí tienes que representar del 0 al 127 en binario es decir le restas 1 al numero de cuadrado y a ese le sacas el numero en binario y lo representas
$$1\ a\ 128 \to 0\ a\ 127 \text{ en binario } 000000000\ a\ 001111111$$
$$129\ a\ 256 \to 128\ a\ 255 \text{ en binario } 010000000\ a\ 011111111$$
$$257\ a\ 384 \to 256\ a\ 383 \text{ en binario } 100000000\ a\ 101111111$$
$$385\ a\ 512 \to 384\ a\ 511 \text{ en binario } 110000000\ a\ 111111111$$


Un ejemplo


Si tu cuadrado tiene solo 2 cuadraditos por lado , tienes $$2x2=4$$ cuadraditos totales y tienes $$2^4=16$$ dibujos posibles  pero 16 es $$10000$$ en binario tiene 5 dígitos!!! claro y te sorprende pero ya  se te dijo,que el tema es que los tienes que numerar del 0 al 15 así tienes los 16 elementos


cuadrado número 1:  le resto 1 obtengo 0 este lo pongo en binario de longitud 4  y queda 0000
cuadrado número 2:  le resto 1 obtengo 1 este lo pongo en binario de longitud 4  y queda 0001
....

cuadrado número 15:  le resto 1 obtengo 14 este lo pongo en binario de longitud 4  y queda 1110

cuadrado número 16:  le resto 1 obtengo 15 este lo pongo en binario de longitud 4  y queda 1111


y tengo todos los posibles... no hay dificultad, solo  resta 1 al número de cuadrado, y si quieres saber el número de un dibujo que te interesa, recupera el numero binario, pasalo a decimal y sumale 1...


Si hay algo que no entiendes en otros hilos, repregunta allí.
Saludos  \(\mathbb {R}^3\)

18 Marzo, 2025, 02:19 am
Respuesta #2

Tachikomaia

  • $$\Large \color{#5b61b3}\pi\,\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 1,297
  • País: uy
  • Karma: +0/-0
  • Sexo: Masculino
No, observa que si el primero aumentó en 63 para llegar a 64 partiendo de 1 , los demás tendran que haber aumentado $$63$$ , el segundo será $$129+63=192$$ el tercero $$257+63=320$$  y el cuarto $$385+63=448$$
Cierto, creo que inicialmente me había confundido pensando que eran 256 dibujos, luego corregí la lista pero no me di cuenta de corregir el ejemplo  :-[


Cuando dije "Y quiero que los dibujos empiecen en blanco." me refería a que el 1er cuadro (arriba izquierda) quiero que empiece en blanco, los demás el número que corresponda según la división.


Lo demás ya lo entendí, pero creo que me había confundido en algunas cosas. Es complicado de explicar, mira este video:
Creo que es mejor que los dibujos varíen desde arriba, como se ve ahí, pero si los cuadraditos están nombrados así:
0 1 2
3...
entonces no se están mostrando los dibujos en orden, por ejemplo el cuadro 1 mostraría 1ero el 111111111 y luego debería mostrar el 111111110, es decir el más cercano a si mismo, mostró el 511 y luego debería mostrar 510, pero al estar variando el 1ero cuadradito, muestra el dibujo 011111111 y no sé si eso resulta bien.

Lo que pensé es que debo hacer que los cuadraditos estén numerados de mayor a menor:
8 7 6
5...

Me tomará tiempo hacer los cambios.

Nota: El video se grabó un poco mal debido a mi PC lenta, dice que está grabando y no, así que el principio cuando son dibujos de 3*3 cuadraditos no se ve, pero la idea creo que se entiende.

19 Marzo, 2025, 01:40 am
Respuesta #3

Richard R Richard

  • Ingeniero Industrial
  • $$\Large \color{#9c57a6}\pi\,\pi\,\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 4,054
  • País: ar
  • Karma: +2/-0
  • Sexo: Masculino
  • Dentro de la ciencia todo,fuera de la ciencia nada


Cuando dije "Y quiero que los dibujos empiecen en blanco." me refería a que el 1er cuadro (arriba izquierda) quiero que empiece en blanco, los demás el número que corresponda según la división.
ok , ahoira te entendí el primer cuadrado. empieza representando al 000000000 que son los 9 cuadraditos color blanco. 
entonces no se están mostrando los dibujos en orden, por ejemplo el cuadro 1 mostraría 1ero el 111111111 y luego debería mostrar el 111111110, es decir el más cercano a si mismo, mostró el 511 y luego debería mostrar 510, pero al estar variando el 1ero cuadradito, muestra el dibujo 011111111 y no sé si eso resulta bien.

si 0 es blanco y 1 es negro, si haces eso el primer cuadrado no será todo blanco, este será el último.

Saludos  \(\mathbb {R}^3\)

19 Marzo, 2025, 05:16 am
Respuesta #4

Tachikomaia

  • $$\Large \color{#5b61b3}\pi\,\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 1,297
  • País: uy
  • Karma: +0/-0
  • Sexo: Masculino
si 0 es blanco y 1 es negro, si haces eso el primer cuadrado no será todo blanco, este será el último.
A ver...

Si
000
000
000
que es 000000000
decimos que es todo blanco
y a ese dibujo le variamos el 1er cuadradito nos queda
100
000
000
que es 100000000
entonces no parece ir en orden, como si se hubiera salteado dibujos, se supone que ese cuadro debe mostrar un rango de dibujos... Debe mostrar el dibujo 0, el 1, etc, pero ese número que puse, 100000000, es mucho más posterior.

Para que variar el 1er cuadradito modifique el último valor del número binario, ese cuadradito tiene que ser el representante del último signo del binario, ergo estar numerados al revés, no veo otra salida.

¿O no entendí?

19 Marzo, 2025, 11:00 am
Respuesta #5

Richard R Richard

  • Ingeniero Industrial
  • $$\Large \color{#9c57a6}\pi\,\pi\,\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 4,054
  • País: ar
  • Karma: +2/-0
  • Sexo: Masculino
  • Dentro de la ciencia todo,fuera de la ciencia nada
Ok, una vez tienes el número en binario conviértelo a string e invierte la cadena. El primero último y viceversa, luego representa en pantalla  esa cadena, si quieres saber que numero es ahora, convierte ese nueva conviértelo a decimal, puedes conocer la longitud de la cadena entonces por cada 1 qué tenga sumas a 2 elevado a la longitud  menos el número de la posición de ese 1 en la cadena


000000001 que es el 1 se convierte en 100000000 qué es $$2^{9-1}= 256$$ donde 1 es la posición del único 1


000001001 que es el 9 se convierte en 100100000 qué es $$2^{9-1}+2^{9-4}=256+32=288$$


No vas a conseguir  una secuencia  numérica qué te de los binarios invertidos vas a tener que hacer un algoritmo  si o si.
Saludos  \(\mathbb {R}^3\)

19 Marzo, 2025, 08:10 pm
Respuesta #6

Tachikomaia

  • $$\Large \color{#5b61b3}\pi\,\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 1,297
  • País: uy
  • Karma: +0/-0
  • Sexo: Masculino
Esa solución la pensé pero me pareció poco eficiente...

Ya puse que estén numerados de mayor a menor, pero hay un error que debo solucionar. Esto debería variar en principio el cuadradito 8 de cada cuadro:
Código: [Seleccionar]
function VariarCuadros () {
NroDelCuadroaVariar = 0;
do {
trace("Se comienza a variar el cuadro "+NroDelCuadroaVariar);
NroDelCuadraditoaVariar = MaxCuadradito;
// VariarSiguienteCuadro = "No";
do {
NombreDelCuadroaModificar = "Cuadro"+NroDelCuadroaVariar;
NombreDelCuadraditoaModificar = NombreDelCuadroaModificar+".Cuadradito";
// Esto para modificar la variable que indica el color,
// que es 0 o 1:
ReferenciaAlColoraModificar = NombreDelCuadroaModificar+".ColordeCuadradito"+NroDelCuadraditoaVariar;
ColoraModificar = eval(ReferenciaAlColoraModificar);
// Esto para el color real:
NuevoColor = new Color(NombreDelCuadraditoaModificar+NroDelCuadraditoaVariar);
// ¿El cuadradito puede cambiar de color?
if (ColoraModificar>0) {
// Sí, hacer los cambios:
trace("Se varía el cuadradito "+NroDelCuadraditoaVariar);
// En la variable:
set (ReferenciaAlColoraModificar, ColoraModificar-1);
// Del color real:
NuevoColor.setRGB(0);
// Asignarle el color de la 2nda manera:
ObtenerColumnayFila();
set (NombreDelCuadraditoaModificar+FilaDeCuadradito+"_"+ColumnaDeCuadradito, 0);
// Incrementar contador de cuadraditos pintados en...:
// la columna y fila donde se pintó:
// trace("Se incrementa el contador de pintados en columna y fila");
set (ColumnaRelevante, eval(ColumnaRelevante)+1);
// trace(ColumnaRelevante+": "+eval(ColumnaRelevante));
set (FilaRelevante, eval(FilaRelevante)+1);
// trace(FilaRelevante+": "+eval(FilaRelevante));
// Para juzgar:
// ¿El dibujo tiene cuadraditos pintados en toda columna y fila?
LineaChequeandose = 0;
// Esto puede que cambie:
CuadraditoenCadaFyC = "Sí";
// Para evitar sumas:
ReferenciaaPintadosenC = NombreDelCuadroaModificar+".PintadosenC";
// trace("ReferenciaaPintadosenC: "+ReferenciaaPintadosenC);
ReferenciaaPintadosenF = NombreDelCuadroaModificar+".PintadosenF";
// trace("ReferenciaaPintadosenF: "+ReferenciaaPintadosenF);
do {
// ¿La columna o fila LineaChequeandose no tiene algún cuadradito pintado?
// trace("Chequeando columna y fila "+LineaChequeandose+" del cuadro.");
// trace(ReferenciaaPintadosenC+LineaChequeandose+": "+eval(ReferenciaaPintadosenC+LineaChequeandose));
// trace(ReferenciaaPintadosenF+LineaChequeandose+": "+eval(ReferenciaaPintadosenF+LineaChequeandose));
if (eval(ReferenciaaPintadosenC+LineaChequeandose)<1 or eval(ReferenciaaPintadosenF+LineaChequeandose)<1) {
CuadraditoenCadaFyC = "No";
break;
}
LineaChequeandose++;
} while (LineaChequeandose < CuadraditosPorFila);
// ¿El dibujo tiene cuadraditos pintados en toda columna y fila?
if (CuadraditoenCadaFyC == "No") {
// No, no mostrarlo y hacer otro:
// NombreDelCuadroaModificar
// trace (NombreDelCuadroaModificar+": No ocupa cada F y C, salteándolo.");
// DibujosPequeños++;
NroDelCuadraditoaVariar = MaxCuadradito;
// QUITAR TODO ESTO PARA QUE LOS DIBUJOS MALOS NO SE MUESTREN
setProperty (NombreDelCuadroaModificar+".Flecha", _visible, true);
break;
} else {
// Dibujo ok:
break;
}
} else {
// El cuadradito no puede cambiar de color, resetearlo:
// trace("Se resetea el cuadradito "+NroDelCuadraditoaVariar);
set (ReferenciaAlColoraModificar, 1);
NuevoColor.setRGB(0xFFFFFF);
// Asignarle el color de la 2nda manera:
ObtenerColumnayFila();
set (NombreDelCuadraditoaModificar+FilaDeCuadradito+"_"+ColumnaDeCuadradito, 1);
// Disminuir contador de cuadraditos pintados en...:
// la columna y fila donde se pintó:
set (ColumnaRelevante, eval(ColumnaRelevante)-1);
set (FilaRelevante, eval(FilaRelevante)-1);
// trace ("   Se despintó el cuadradito "+Puntero);
// ¿Hay un cuadradito anterior?
if (NroDelCuadraditoaVariar > 0) {
// Sí, apuntar a ese:
NroDelCuadraditoaVariar--;
// trace("Se continúa el dibujo, varíar el cuadradito "+NroDelCuadraditoaVariar);
// Continuar haciendo el dibujo:
// trace ("   Haciendo dibujo, apuntando al cuadradito anterior.");
} else {
// No, aumentar tamaño de hoja y reiniciar.
// trace ("   No hay más dibujos, aumentando tamaño.");
// trace ("DibujosOk: "+DibujosOk);
// trace ("DibujosPequeños: "+DibujosPequeños);
// trace ("DibujosAislados: "+DibujosAislados);
// Para terminar el while que contiene a este:
NroDelCuadroaVariar = Cuadros;
// Para que se agrande la hoja:
CuadrosPorFila++;
CuadraditosPorFila++;
gotoAndPlay (2);
break;
}
}
} while (true);
NroDelCuadroaVariar++;
} while (NroDelCuadroaVariar<Cuadros);
gotoAndStop (4);
}
Pero el resultado es este:
Se comienza a variar el cuadro 0
Se varía el cuadradito 8
Se comienza a variar el cuadro 1
Se varía el cuadradito 8
Se comienza a variar el cuadro 2
Se varía el cuadradito 7
Se comienza a variar el cuadro 3
Se varía el cuadradito 6

Estas cosas me toman más tiempo y esfuerzo de lo que creo porque aparecen errores asi poco comprensibles. Aunque a veces ocurre lo inverso, cosas complejas que creí que no funcionarían funcionan xP

20 Marzo, 2025, 11:55 pm
Respuesta #7

Richard R Richard

  • Ingeniero Industrial
  • $$\Large \color{#9c57a6}\pi\,\pi\,\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 4,054
  • País: ar
  • Karma: +2/-0
  • Sexo: Masculino
  • Dentro de la ciencia todo,fuera de la ciencia nada
Esa solución la pensé pero me pareció poco eficiente...

Para mi es la mas rápida.
Y la más fácil de comprobar errores.



Saludos  \(\mathbb {R}^3\)

21 Marzo, 2025, 08:01 pm
Respuesta #8

Tachikomaia

  • $$\Large \color{#5b61b3}\pi\,\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 1,297
  • País: uy
  • Karma: +0/-0
  • Sexo: Masculino
Hice algo parecido, un while que que disminuye el cuadradito a variar a la vez que usa números cada vez más en la derecha del binario. La ventaja es que no invierto una cadena, pero se hacen restas, esto es parte del código:
Código: [Seleccionar]
// Se agregarán y distribuirán cuadraditos en el cuadro...
// recién agregado, numerándolos del modo opuesto:
NroDelCuadraditoaColocar = MaxCuadradito;
// Sus columnas y filas se cuentan desde 0:
ColumnaDeCuadradito = 0;
FilaDeCuadradito = 0;
// Se pintarán de modo que muestren el dibujo...
// acorde a la división de dibujos; averiguarlo:
// Averiguar cómo es en binario:
DibujoEnBinario = "";
Resto = DibujoaMostrar;
while (Resto>0) {
DibujoEnBinario = DibujoEnBinario+Resto%2;
Resto = Math.floor(Resto/2);
}
// Agregar 0s a DibujoEnBinario si hacen falta:
while (DibujoEnBinario.length<Cuadraditos) {
DibujoEnBinario = DibujoEnBinario+0;
}
trace("DibujoEnBinario: "+DibujoEnBinario);
// Para luego saber si hay demasiados cuadraditos aislados:
set (NombreDelCuadro+"CuadraditosAislados", 0);
// Para luego saber si hay filas o columnas sin algún pintado:
Puntero = 0;
do {
set (NombreDelCuadro+".PintadosenC"+Puntero, 0);
set (NombreDelCuadro+".PintadosenF"+Puntero, 0);
Puntero++;
} while (Puntero<CuadraditosPorFila);
ColumnaDeCuadradito = 0;
FilaDeCuadradito = 0;
do {
eval(NombreDelCuadro).attachMovie("sCuadradito", "Cuadradito"+NroDelCuadraditoaColocar, NroDelCuadraditoaColocar);
NombreDelCuadraditoSinNum = NombreDelCuadro+".Cuadradito";
NombreDelCuadradito = NombreDelCuadraditoSinNum+NroDelCuadraditoaColocar;
setProperty (NombreDelCuadradito, _x, ColumnaDeCuadradito*LargoDeCuadraditos);
setProperty (NombreDelCuadradito, _y, FilaDeCuadradito*LargoDeCuadraditos);
setProperty (NombreDelCuadradito, _width, LargoDeCuadraditos);
setProperty (NombreDelCuadradito, _height, LargoDeCuadraditos);
ColorDelCuadradito = new Color(NombreDelCuadradito);
NroDeColor = Number(DibujoEnBinario.charat(DibujoEnBinario.length-NroDelCuadraditoaColocar));
if (NroDeColor == 0) {
ColorDelCuadradito.setRGB(0);
// Para evitar repetición de código:
ColumnaRelevante = NombreDelCuadro+".PintadosenC"+ColumnaDeCuadradito;
FilaRelevante = NombreDelCuadro+".PintadosenF"+FilaDeCuadradito;
set (ColumnaRelevante, eval(ColumnaRelevante)+1);
set (FilaRelevante, eval(FilaRelevante)+1);
} else {
ColorDelCuadradito.setRGB(0xFFFFFF);
}
// Esto es para modificar con más practicidad el color:
set (NombreDelCuadro+".ColordeCuadradito"+NroDelCuadraditoaColocar, NroDeColor);
// Esto es la misma variable pero definida de modo que...
// facilita contar el aislamiento del cuadradito:
set (NombreDelCuadraditoSinNum+FilaDeCuadradito+"_"+ColumnaDeCuadradito, NroDeColor);
ActualizarConteoDeAislados();
ColumnaDeCuadradito++;
if (ColumnaDeCuadradito == CuadraditosPorFila) {
ColumnaDeCuadradito = 0;
FilaDeCuadradito++;
}
NroDelCuadraditoaColocar--;
} while (NroDelCuadraditoaColocar > -1);

Concretamente esto:
NroDeColor = Number(DibujoEnBinario.charat(DibujoEnBinario.length-NroDelCuadraditoaColocar));

Ya que NroDelCuadraditoaColocar va disminuyendo, y ahí resta, entonces el resultado es cada vez mayor, o sea, va tomando un caracter cada vez más posterior.

Ponele que NroDelCuadraditoaColocar inicialmente es 8, y el binario tiene 9 caracteres, pero contados desde 0, así que es como si fuesen 8, entonces primero usa el caracter 8-8, luego 8-7, luego 8-6, etc, así los va tomando en orden inverso.

Un método mejor podría ser tomar el 1ero y borrárselo a la variable, ya que no se necesitará.

El error que había comentado es porque los cálculos de qué dibujos mostrar al inicio no los había corregido y era más importante de lo que creí. No pintaba siempre los cuadraditos nro 8 porque ya estaban pintados, está bien, así es como lo programé.

Ahora el problema que tengo es que la secuencia de dibujos se corta antes de lo debido, creo.

Por otro lado, como he cambiado el orden de la numeración, ahora el 1er dibujo (del 1er cuadro) debe ser una L con el palito hacia la izquierda, no girada. Lamento el lío.

Edit:
Logré hacerlo eliminando como comenté:
NroDeColor = Number(DibujoEnBinario.charat(0));
DibujoEnBinario = DibujoEnBinario.substring(1, DibujoEnBinario.length);

21 Marzo, 2025, 10:01 pm
Respuesta #9

Richard R Richard

  • Ingeniero Industrial
  • $$\Large \color{#9c57a6}\pi\,\pi\,\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 4,054
  • País: ar
  • Karma: +2/-0
  • Sexo: Masculino
  • Dentro de la ciencia todo,fuera de la ciencia nada
Saludos  \(\mathbb {R}^3\)