Display a linear combination: Difference between revisions
Content added Content deleted
(Added D) |
(Added Java) |
||
Line 326: | Line 326: | ||
fourbanger _1 |
fourbanger _1 |
||
-e(1)</lang> |
-e(1)</lang> |
||
=={{header|Java}}== |
|||
{{trans|Kotlin}} |
|||
<lang Java>import java.util.Arrays; |
|||
public class LinearCombination { |
|||
private static String linearCombo(int[] c) { |
|||
StringBuilder sb = new StringBuilder(); |
|||
for (int i = 0; i < c.length; ++i) { |
|||
if (c[i] == 0) continue; |
|||
String op; |
|||
if (c[i] < 0 && sb.length() == 0) { |
|||
op = "-"; |
|||
} else if (c[i] < 0) { |
|||
op = " - "; |
|||
} else if (c[i] > 0 && sb.length() == 0) { |
|||
op = ""; |
|||
} else { |
|||
op = " + "; |
|||
} |
|||
int av = Math.abs(c[i]); |
|||
String coeff = av == 1 ? "" : "" + av + "*"; |
|||
sb.append(op).append(coeff).append("e(").append(i + 1).append(')'); |
|||
} |
|||
if (sb.length() == 0) { |
|||
return "0"; |
|||
} |
|||
return sb.toString(); |
|||
} |
|||
public static void main(String[] args) { |
|||
int[][] combos = new int[][]{ |
|||
new int[]{1, 2, 3}, |
|||
new int[]{0, 1, 2, 3}, |
|||
new int[]{1, 0, 3, 4}, |
|||
new int[]{1, 2, 0}, |
|||
new int[]{0, 0, 0}, |
|||
new int[]{0}, |
|||
new int[]{1, 1, 1}, |
|||
new int[]{-1, -1, -1}, |
|||
new int[]{-1, -2, 0, -3}, |
|||
new int[]{-1}, |
|||
}; |
|||
for (int[] c : combos) { |
|||
System.out.printf("%-15s -> %s\n", Arrays.toString(c), linearCombo(c)); |
|||
} |
|||
} |
|||
}</lang> |
|||
{{out}} |
|||
<pre>[1, 2, 3] -> e(1) + 2*e(2) + 3*e(3) |
|||
[0, 1, 2, 3] -> e(2) + 2*e(3) + 3*e(4) |
|||
[1, 0, 3, 4] -> e(1) + 3*e(3) + 4*e(4) |
|||
[1, 2, 0] -> e(1) + 2*e(2) |
|||
[0, 0, 0] -> 0 |
|||
[0] -> 0 |
|||
[1, 1, 1] -> e(1) + e(2) + e(3) |
|||
[-1, -1, -1] -> -e(1) - e(2) - e(3) |
|||
[-1, -2, 0, -3] -> -e(1) - 2*e(2) - 3*e(4) |
|||
[-1] -> -e(1)</pre> |
|||
=={{header|Julia}}== |
=={{header|Julia}}== |