elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  (Solucionado) Variar números en A arrays.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: (Solucionado) Variar números en A arrays.  (Leído 503 veces)
Tachikomaia


Desconectado Desconectado

Mensajes: 415



Ver Perfil
(Solucionado) Variar números en A arrays.
« en: 5 Noviembre 2019, 18:29 pm »

Esto varía los números en 1 array:
Código:
C = new Array(1, 1, 1);
Max = 10;

// Solcheck
if (C[1]<C[0]) {
    // Sol
    stop ();
}

// Candmod
W = 1;
SenaladordeP = 2;
do {
    if (C[SenaladordeP]<Max) {
        C[SenaladordeP] = C[SenaladordeP]+1;
        W = 0;
    } else {
        C[SenaladordeP] = 1;
        if (0 < SenaladordeP) {
            SenaladordeP = SenaladordeP-1;
        } else {
            // No hay Sol o está más allá del Max.
            stop ();
        }
    }
} while (W==1);
gotoAndPlay (2);

Intentando variar A arrays (en este ejemplo A=2) hice esto:
Código:
C1 = new Array(1, 1, 1);
C2 = new Array(1, 1, 1);
Max = 10;

trace (C1+" "+C2);
// Solcheck
if (C1[0]<C2[0]) {
    // Sol
    stop ();
}

// Candmod
W = 1;
SenaladordeC = 2;
SenaladordeP = 2;
do {
    if (eval("C"+SenaladordeC+"["+SenaladordeP+"]")<Max) {
        trace (eval("C"+SenaladordeC+"["+SenaladordeP+"]"));
        set ("C"+SenaladordeC+"["+SenaladordeP+"]", eval("C"+SenaladordeC+"["+SenaladordeP+"]")+1);
        W = 0;
    } else {
        set ("C"+SenaladordeC+"["+SenaladordeP+"]", 1);
        if (0<SenaladordeP) {
            SenaladordeP = SenaladordeP-1;
        } else {
            SenaladordeP = 2;
            if (1<SenaladordeC) {
                SenaladordeC = SenaladordeC-1;
            } else {
                // No hay Sol o está más allá del Max.
                stop ();
            }
        }
    }
} while (W == 1);
gotoAndPlay (2);
El contenido de los arrays debería variar más o menos así:
Citar
// Cambio 1:
C1 = 1, 1, 1
C2 = 1, 1, 2
// Cambio 2:
C1 = 1, 1, 1
C2 = 1, 1, 3
Como si fuesen 6 cifras, que en vez de ser del 0 al 9 fuesen del 1 al 10.
El problema es que el intérprete o lo que sea, cuando por ejemplo le digo:
set ("C"+SenaladordeC+"["+SenaladordeP+"]", eval("C"+SenaladordeC+"["+SenaladordeP+"]")+1);
...lo que hace es crear variables llamadas C2[SenaladordeP], es decir, C2[2], C2[1] y C2[0]. Más claro:
Citar
Level #0:
  Variable _level0.$version = "WIN 5,0,32,0"
  Variable _level0.C1 = [object #1] [
    0:1,
    1:1,
    2:1
  ]
  Variable _level0.C2 = [object #2] [
    0:1,
    1:1,
    2:1
  ]
  Variable _level0.Max = 10
  Variable _level0.W = 0
  Variable _level0.SenaladordeC = 2
  Variable _level0.SenaladordeP = 2
  Variable _level0.C2[2] = 8
  Variable _level0.C2[1] = 3
  Variable _level0.C2[0] = 1
En vez de variar las partes del array, o sea C2[2], C2[1] y C2[0], me crea y varía variables con esos mismos nombres. No puedo hacer referencia a contenidos de array porque lo interpreta como si fuese referencia a una variable llamada igual que una referencia a array. Pero yo no cree esas variables.

Tal vez el problema es usar set (aunque no hubo problema en el 1er código) o habría que modificar la referencia en el eval (quitar comillas, poner comillas, no sé).

¿Ideas?

El programa es Macromedia Flash 5, que usa una vieja versión de Action Script. Puede que el error sea cosa de dicho programa/lenguaje, aunque imagino que es posible alguna solución que no sea cambiar de programa/lenguaje.

Gracias.


« Última modificación: 13 Noviembre 2019, 17:34 pm por Tachikomaia » En línea

Tachikomaia


Desconectado Desconectado

Mensajes: 415



Ver Perfil
Re: (Solucionado) Variar números en A arrays.
« Respuesta #1 en: 13 Noviembre 2019, 17:34 pm »

Hallé una manera:
Código:
Escena 1
   actions for fotograma 1
      C1 = new Array(1, 1, 1);
      C2 = new Array(1, 1, 1);
      Max = 5;
   actions for fotograma 2
      trace (C1+" "+C2);
      // Solcheck
      if (C2[0]<C1[0]) {
         // Sol
         stop ();
      }
   actions for fotograma 3
      // Candmod
      W = 1;
      SenaladordeC = 2;
      SenaladordeP = 2;
      do {
         if (eval("C"+SenaladordeC)[SenaladordeP]<Max) {
            eval("C"+SenaladordeC).splice(SenaladordeP, 1, eval("C"+SenaladordeC)[SenaladordeP]+1);
            W = 0;
         } else {
            eval("C"+SenaladordeC).splice(SenaladordeP, 1, 1);
            if (0<SenaladordeP) {
               SenaladordeP = SenaladordeP-1;
            } else {
               SenaladordeP = 2;
               if (1<SenaladordeC) {
                  SenaladordeC = SenaladordeC-1;
               } else {
                  // No hay Sol o está más allá del Max.
                  stop ();
               }
            }
         }
      } while (W == 1);
      gotoAndPlay (2);

Pienso que debería haber funcionado como dije, aunque con algunos ajustes.
En el if había puesto
if (eval("C"+SenaladordeC+"["+SenaladordeP+"]")<Max) {
y era
if (eval("C"+SenaladordeC)[SenaladordeP]<Max) {

Y en la modificación había puesto
set ("C"+SenaladordeC+"["+SenaladordeP+"]", eval("C"+SenaladordeC+"["+SenaladordeP+"]")+1);
lo cual según mi interpretación debería ser más o menos así
set ("C"+SenaladordeC[SenaladordeP], eval("C"+SenaladordeC)[SenaladordeP]+1);
(digo más o menos porque ya no recuerdo cómo interpreta la 1era parte)
pero eso causa el error que comenté. Leyendo respecto a arrays encontré esto:
Citar
Array.splice
Sintaxis

myArray.splice(inicio, Cuenta_elim, valor0,valor1...valorN);
Argumentos

inicio El índice del elemento de la matriz donde comienza la inserción y/o el borrado.

Cuenta_elim El número de elementos que se van a borrar. Este número incluye el elemento especificado en el argumento inicio. Si no se especifica valor para Cuenta_elim, el método borra todos los valores desde el elemento inicio hasta el último elemento de la matriz.

valor Cero o más valores que se van a insertar en la matriz en el punto de inserción especificado en el argumento inicio. Este argumento es opcional.

Descripción

Método; agrega y/o elimina elementos de una matriz. Este método modifica la propia matriz sin hacer una copia.

Reproductor

Flash 5 o posterior.
Que con los ajustes del caso sirvió.

O sea, en vez de simplemente hacer una referencia a una parte y sustituirla por otra, lo que me vi forzado a hacer (porque no sé otra forma) es borrar una parte y en su lugar poner otra. A efectos prácticos es lo mismo.


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda con numeros random en arrays
.NET (C#, VB.NET, ASP)
Edu 6 2,614 Último mensaje 6 Diciembre 2010, 23:09 pm
por Edu
[BATCH] Duda sobre ¿Arrays? [Solucionado]
Scripting
Karcrack 3 4,182 Último mensaje 4 Febrero 2011, 15:44 pm
por Edu
Texto a arrays [SOLUCIONADO]
Programación Visual Basic
rob1104 5 2,350 Último mensaje 6 Abril 2011, 17:28 pm
por rob1104
[Solucionado] Comparando 2 arrays
PHP
aaronduran2 2 1,498 Último mensaje 11 Febrero 2012, 08:09 am
por aaronduran2
(Solucionado) Suma de Arrays
Programación C/C++
dennis094 0 621 Último mensaje 19 Enero 2014, 19:11 pm
por dennis094
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines