RosettaCodeData/Task/Display-a-linear-combination/00-TASK.txt
2023-07-01 13:44:08 -04:00

35 lines
1.4 KiB
Text

;Task:
Display a finite [[wp:linear combination|linear combination]] in an infinite vector basis <big><math>(e_1, e_2,\ldots)</math></big>.
Write a function that, when given a finite list of scalars <big><math>(\alpha^1,\alpha^2,\ldots)</math></big>, <br>creates a string representing the linear combination <big><math>\sum_i\alpha^i e_i</math></big> in an explicit format often used in mathematics, that is:
:<big><math>\alpha^{i_1}e_{i_1}\pm|\alpha^{i_2}|e_{i_2}\pm|\alpha^{i_3}|e_{i_3}\pm\ldots</math></big>
where <big><math>\alpha^{i_k}\neq 0</math></big>
<br>
The output must comply to the following rules:
* &nbsp; don't show null terms, unless the whole combination is null.
::::::: '''e(1)''' &nbsp; &nbsp; is fine, &nbsp; &nbsp; '''e(1) + 0*e(3)''' &nbsp; &nbsp; or &nbsp; &nbsp; '''e(1) + 0''' &nbsp; &nbsp; is wrong.
* &nbsp; don't show scalars when they are equal to one or minus one.
::::::: '''e(3)''' &nbsp; &nbsp; is fine, &nbsp; &nbsp; '''1*e(3)''' &nbsp; &nbsp; is wrong.
* &nbsp; don't prefix by a minus sign if it follows a preceding term. &nbsp; Instead you use subtraction.
::::::: '''e(4) - e(5)''' &nbsp; &nbsp; is fine, &nbsp; &nbsp; '''e(4) + -e(5)''' &nbsp; &nbsp; is wrong.
<br>
Show here output for the following lists of scalars:
<pre>
1) 1, 2, 3
2) 0, 1, 2, 3
3) 1, 0, 3, 4
4) 1, 2, 0
5) 0, 0, 0
6) 0
7) 1, 1, 1
8) -1, -1, -1
9) -1, -2, 0, -3
10) -1
</pre>
<br><br>