es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo puedo verificar si dos secuencias cíclicas almacenadas en arreglos son iguales (Java)?

Para mi clase, me han encargado escribir un programa en Java que indique si 2 secuencias de ADN, cada una de longitud 8 y almacenadas en un arreglo, son iguales. Sin embargo, las secuencias pueden ser cíclicas. Por ejemplo, estas dos son iguales:

A T G C G T A T

A T A T G C G T

He escrito el código que verifica si ambos arreglos en el índice 0 son iguales, y si lo son, se va a un método de verificación de arreglo, mientras que si no lo son, se suma 1 al índice del segundo arreglo y se comienza de nuevo. Sin embargo, estoy bastante confundido ya que no estoy seguro de cómo puedo ingresar el nuevo índice en el que el método de verificación pasa por los dos arreglos, o cómo hacer un ciclo de índices (es decir, de 7 hacia atrás hasta 0).

Lo siento si el código es malo, pero soy principiante y he encontrado esta pregunta muy confusa.

/* verificando si los dos arreglos son iguales en cierto índice

for (x=0;x<8;) {
            for (y=0;y<8;) {
                if (DNAarray1[x] == DNAarray2[y]) {
                    isEqual(ADNarray1, ADNarray2);
                } else y++;
            }
        }

/* método isEqual - mi problema es cómo puedo llevar x e y de arriba y llevarlos a este método.
Y también cómo realizar un ciclo hacia atrás de modo que el índice de y pase de 7 a 0.

static boolean isEqual(int[] ADN1, int[] ADN2) {
        for (int c = 1; c < 8; c++) {
            if (ADN1[x + c] == ADN2[y + c]) {
                return true;
            } else return false;
        }
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Puede usar un bucle while para iterar por los índices del 7 al 0. También puede usar una variable para almacenar el índice del segundo arreglo y pasarlo al método isEqual.

    // iterar por los índices del 7 al 0
    int y = 7;
    while (y >= 0) {
        if (DNAarray1[x] == DNAarray2[y]) {
            isEqual(ADNarray1, ADNarray2, y);
        } else y--;
    }
    
    // método isEqual
    static boolean isEqual(int[] ADN1, int[] ADN2, int y) {
        for (int c = 1; c < 8; c++) {
            if (ADN1[x + c] == ADN2[y + c]) {
                return true;
            } else return false;
        }
    }
    

Comments are closed.