Problem 1286. MatCAT - Reconstruct X from Its X-rays
Consider a matrix x
x = [ 1 2 0 0 5 0 3 0 8 ]
If we sum x along the rows we get
row_sums = [3 5 11]
Summing along the columns gives
col_sums = [4 7 8]
Metaphorically, we might call these sums "x-rays". Your job is to take these x-rays and reconstruct the matrix x being x-rayed, in the fashion of a CAT scan. Can you put all the bones in the right place?
All matrix elements must be non-negative integers. There is no guarantee of a unique answer. I will only check that the row and column sums match the supplied matrix, and that your elements are non-negative integers.
Bonus question: Under what circumstances does the answer become unique? Discuss.
Solution Stats
Problem Comments
-
4 Comments
regarding the discussion question, my guess is that the only cases where the answer becomes unique are those 'trivial' single-vector or equivalent cases. More precisely those cases where min(nnz(row_sums),nnz(col_sums))<=1. The reasons is that if one solution exist where x(a,b)>0 and x(c,d)>0 (and a~=c and b~=d; i.e. they are not in the same row or column), then you could simply subtract one from x(a,b) and x(c,d), and add one to x(c,b) and x(a,d), and the result will also be a valid solution... thoughts?
Nice problem
good problem.
See also this: https://it.mathworks.com/matlabcentral/cody/problems/47618
There is a nice video explaining how to solve these problems.
Solution Comments
Show commentsProblem Recent Solvers114
Suggested Problems
-
10032 Solvers
-
We love vectorized solutions. Problem 1 : remove the row average.
825 Solvers
-
Make a vector of prime numbers
643 Solvers
-
Rounding off numbers to n decimals
4524 Solvers
-
4674 Solvers
More from this Author50
Problem Tags
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!