Matlab - matriz - reglas

 
Vista:

matriz - reglas

Publicado por Aina (15 intervenciones) el 21/02/2010 19:13:40
primero quiero agradecer por la ayuda que he recibido ..
ahora estoy en lo siguiente, tengo la sig. matriz:

ABCDE
FGHIJ 5x5 matriz y lo sig. a= AE FI AO GS CS BW EU
KLMNO
PRSTU
VWXYZ

he estado intentando con" for" och "if" resolver lo sig. ,

1: si ambas letras se encuentrar en la misma linea , las letras son convertidas en las letras que se encuentran a la derecha de cada una ejemplo: FI se convierte en GJ. Pero si se presenta este caso AE , A se convierte en B y E en A.

2.si ambas letras se encuentran en la misma columna, las letras son convertidas en las letras que se encuentran al lado hacia abajo, ejemplo: EU se convierte en JZ. Pero si se presenta este caso BW, B se convierte en G y W en B.

3. en otros casos la letras son las esquinas de un rectangulo , y se convierten de la siguiente manera: AO ----EK, GS-----HR

y el resultado sera : ABGJEKHRHXGBJZ

yo seguire intentando, si hay alguien que me pueda ayudar muchas gracias de antemano
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:matriz - reglas

Publicado por Aina (15 intervenciones) el 21/02/2010 19:48:13
a= AEFIAOGSCSBWEU no tiene espacio entre los pares de letras , pero en el ejercicio mira usa esas reglas de par en par AE FI AO GS CS BW EU
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Dave
Val: 497
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

RE:matriz - reglas, La Solución

Publicado por Dave (1094 intervenciones) el 21/02/2010 21:04:25
Hola Aina,

Aqui un ejemplo de como puedes extraer los caracteres sin los espacios entre caracteres y como se puede ir separando por pares, aunque deberiamos agregar una condición para el caso donde la cadena de caracteres es impar.

.........................

var='Hide the gold in the tree stump';
tmp=find(~isspace(var));
nvar=var(tmp);

for i=1:2:length(nvar)-1
disp(nvar(i:i+1))
end

..........................

Saludos
Dave
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Dave
Val: 497
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

RE:matriz - reglas, La Solución

Publicado por Dave (1094 intervenciones) el 21/02/2010 22:03:45
Hola Aina,

Aqui otro avance.

clear all

var='Hide the gold in the tree stump';
tmp=find(~isspace(var));
nvar=var(tmp);

nl=length(nvar);

if rem(nl,2)==0;
np=1; ni=0;
disp('Es par')
else
np=0; ni=1;
disp('Es Impar')
end

if np==1
nvar=nvar;
else
nvar=[nvar,'x'];
end

npar=0.5*length(nvar);
whos
for i=1:npar
imp=2*i-1;
par=2*i;
v1=nvar(imp);
v2=nvar(par);
if v1==v2
disp(['par igual ',num2str(i)])
nvar(imp)=v1;
nvar(par+1:length(nvar)+1)=nvar(par:end);
nvar(par)='x';
else
nvar(imp)=v1;
nvar(par)=v2;
end

end


Saludos

Dave
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:matriz - reglas, La Solución

Publicado por Aina (15 intervenciones) el 21/02/2010 22:32:07
primero quiero agradecer por la ayuda que he recibido ..
ahora estoy en lo siguiente, tengo la sig. matriz:

ABCDE
FGHIJ 5x5 matriz y lo sig. a= AEFIAOGSCSBWEU
KLMNO
PRSTU
VWXYZ

he estado intentando con" for" och "if" resolver lo sig. : toma las letras de par en par : AE FI AO GS CS BW EU.

1: si ambas letras se encuentrar en la misma linea , las letras son convertidas en las letras que se encuentran a la derecha de cada una ejemplo: FI se convierte en GJ. Pero si se presenta este caso AE , A se convierte en B y E en A.

2.si ambas letras se encuentran en la misma columna, las letras son convertidas en las letras que se encuentran al lado hacia abajo, ejemplo: EU se convierte en JZ. Pero si se presenta este caso BW, B se convierte en G y W en B.

3. en otros casos la letras son las esquinas de un rectangulo , y se convierten de la siguiente manera: AO ----EK, GS-----HR

y el resultado sera : ABGJEKHRHXGBJZ

yo seguire intentando, si hay alguien que me pueda ayudar muchas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:matriz - reglas, La Solución

Publicado por Aina (15 intervenciones) el 22/02/2010 00:51:18
esto es lo que he echo tratando de aplicar la 1:era regla, pero no lo logro, no se que esta mal aqui.
j = 1
k = 1
i = 1

while i <= 5


k = 1
j
i
while k <= (length(a)-1)

for j= 1:5
ind = 1:length(Key_Matrix(j,:));
h = ind(a(k)==Key_Matrix(j,:))
r = ind(a(k+1)== Key_Matrix(j,:))
if ~((sum(h(:))==0)||(sum(r(:))==0))
a(k) = Key_Matrix(i,j+1)
a(k+1) = Key_Matrix(i,j+1)
k
elseif ((~((sum(h(:))==0)||(sum(r(:))==0)))&&(( sum(h(:))==5)))


a(k) = Key_Matrix(i,1)
a(k+1) = Key_Matrix(i,j+1)
k
elseif ((~((sum(h(:))==0)||(sum(r(:))==0)))&&(( sum(r(:))==5)))
a(k) = Key_Matrix(i,j+1)
a(k+1) = Key_Matrix(i,1)
k

end
%k

end
k = k + 2
end
i = i + 1;
end
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Dave
Val: 497
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

RE:matriz - reglas, La Solución

Publicado por Dave (1094 intervenciones) el 22/02/2010 16:17:41
Hola Aina,

Te envio la parte que corresponde a crear la matrix 5x5 a partir de la palabra clave y las demas letras del alfabeto latino. Esto deberia agregarse a la primera parte de evaluar el texto a encriptar (evaluar letras repetidas, si las cadena de caracteres es par e impar y par de caracteres que seran evaluados con la matrix generada por la palabra clave) y complementarse con los tres criterios de incriptación.

Espero que sea de alguna ayuda.

Saludos
Dave

................
%% Programa desarrollado por: Dave ([email protected])
%
% Palabra clave para realiar el incriptado
key='hola mundo';
key=lower(key); % Transforma todas los caracteres a minisculas
indkey=find(~isspace(key)); % Elimana los espacios es blanco

nkey=key(indkey); % Crea una nueva variable sin espacio en blanco

[cad,ind]=unique(nkey,'first'); % Determina las letras sin repetición

nnkey=nkey(sort(ind)); % Crea un nuevo vector sin las letras repetidas

% En esta sección crea el vector con 25 letras para luego usarla en la
% matrix 5x5
i=1;
for ch=97:122
if ch==106
else
vm(i)=char(ch);
i=i+1;
end
end

% Une la palabra clave (sin espacios en blanco y sin repetición) al vector
% de 25 caracteres (considerando la letra i=j)

tmp=[nnkey,vm];

% Elimina las variables previas
clear vm ch i cad ind indkey nkey nnkey

% Ahora elimanos los caracteres que se repiten.
[cad,ind]=unique(tmp,'first');
vector=tmp(sort(ind));

% Reordena el vector (sin caracteres repetidos) en una matrix 5x5
matrix=reshape(vector,5,5)';

% Visualiza la matrix
disp(matrix)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar