Borrar filtros
Borrar filtros

Program to Change the least number of a given Matrix Elements to get a condition on the sum of the numbers from collated row digits of the Matrix

2 visualizaciones (últimos 30 días)
I have a given Matrix A=k x n (k rows and n columns), with all elements digits in base 4,(can be only {0,1,2,3}). I want to write a program to change for any input matrix A to a new output B matrix respecting a condition. The condition is to change the least number of elements of A to form a modified matrix B(which keeps all the other unchanged elements of A), such that the k numbers of the row collated digits summed in base 4, are a multiple of (4^n)-1, expressed in base 4(n the number of columns of A and B)(The multiple must be the one such that B differs with the minimum nr of elements from A). Note that (4^n)-1 in base 4 is a row of n digits all 3s(3333...33, n times) . (4^3)-1 in base 4 = 333, However, a multiple of (4^3)-1, for instance [5*(4^3)-1] in base 4= 10323.
%I will give just an Example of a matrix A=3x6, k=3, n=6
A= [3,3,3,2,2,2; 3,2,3,3,1,2; 3,1,0,1,3,2]
%Convert row collated digits to numbers then to decimal
%ans = '4074'
%ans = '3830'
%ans = '3358'
%Calculate their sum in base 10 of row digits 3 numbers
%S = 11262
%Calculate (4^6) - 1 in decimal
(4^6) - 1
% One can see that a multiple of 2 of (4^6) - 1=8190, which can be expressed in base 4 , and is close to S
%ans = '1333332'
%To get this row digits sum just one element change is sufficient, change element of A (2,1)=3 to B(2,1)=0, hence B is
B= [3,3,3,2,2,2; 0,2,3,3,1,2; 3,1,0,1,3,2]
%ans = '4074'
%ans = '758'
%ans = '3358'
%Sum all in decimal to check if it is in base 4
%S2 = 8190
% Which is the sought result. The program should be able to do such conversions of A to B for any input A

Respuestas (0)


Más información sobre Logical en Help Center y File Exchange.




Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by