Multiple freelancers that pass the requirements section will be considered. The best algorithm wins. Should 2 or more freelancers successfully complete the project, the lowest bid wins. Good luck!
Preferred Language: Python 3 (However, you're free to use any language and any techniques at your disposal)
Given:
You will be given 2 parameters: I and P. You must deduce two additional parameters: i and N.
N is a matrix of dimension (1, i) that contains the natural numbers in ascending order. (i.e. if i = 7 then N = [1, 2, 3, 4, 5, 6, 7]).
I will always be a permutation of N, and therefore also has dimensions (1, i). (i.e. if i = 7, then I *could* be equal to I = [2, 5, 3, 1, 4, 6, 7]).
By definition, there will exist factorial(i) permutation matrices. You are given a subset of those matrices, denoted P, which also by definition, has dimensions (i, i).
You will be given I and P in the form of CSV files (delimited by commas). I will have the name "[login to view URL]" and for each P, the file names will go on as "[login to view URL]", "[login to view URL]", "[login to view URL]" and so on, up to the subset of P's given to you.
i and N are obviously easily deduced from I alone.
Problem:
Your algorithm must output a sequence of P (denoted as S(P) in this text) such that when dotted with I in the given order, produces a result equal to N (Here, dotted means the dot product).
The exact way S(P) is outputted doesn't matter, as long as the order is discernible in the way I should be dotted with S(P).
Example:
p0 = [[1, 0, 0], [0, 0, 1], [0, 1, 0]]. p1 = [[0, 1, 0], [1, 0, 0], [0, 0, 1]]. I = [3, 1, 2].
The correct answer is S(P) = (p1, p0). Why? because (I * p1) * p0 = N. Notice that (I * p0) * p1 DOES NOT EQUAL N, therefore S(P) = (p0, p1) is incorrect.
Requirements to be accepted:
Complete this practice problem (the parameters here are not in CSV file format; it's just a google doc). You can either directly message me the answer or provide the solution in your project proposal (remember, Freelancer.com allows you to edit them). Link: [login to view URL]
Although I do not specifically require it as long as you can solve the problem, a background in linear algebra and algorithmic programming will help you.
I am very proficient in c and c++. I have 16 years c++ developing experience now, and have worked for more than 7 years. My work is online game developing, and mainly focus on server side, using c++ under Windows environment. I made many great projects using c++, for example, I made the tools which could convert java codes into c++ scripts, of course garbage collection included, this was very similar to a compiler, and was very complex. I also made our own mobile game using c++, I can show you the demo of client, if you like. I am very proficient in java also. I have a very good review on Freelancer.com, I never miss a project once I accept the job, you can check my review. Trust me, please let expert help you.
There are many solutions with 8 multiplications... one of them (p0, p0, p2, p4, p5, p2, p4, p4). Very interesting!
Relevant Skills and Experience
Math, Coding, Complex problems
Proposed Milestones
$155 USD - Lets discuss