Rešitev: program Programske enote na m magnetnih trakovih (Mathematica)

Iz MaFiRaWiki

IDEJA:
(1)
n programskih enot uredimo po dolžini in sicer naraščajoče
BŠS: l_{1} \leq l_{2} \leq ... \leq l_{n}
(2)
n \leq m
programsko enoto 1 dolžine l1 vstavimo na 1. mesto magnetnega traku 1
programsko enoto 2 dolžine l2 vstavimo na 1. mesto magnetnega traku 2
.....
programsko enoto n dolžine ln vstavimo na 1. mesto magnetnega traku m
n > m
programsko enoto 1 dolžine l1 vstavimo na 1. mesto magnetnega traku 1
programsko enoto 2 dolžine l2 vstavimo na 1. mesto magnetnega traku 2
.....
programsko enoto m dolžine lm vstavimo na 1. mesto magnetnega traku m
programsko enoto m + 1 dolžine lm + 1 vstavimo na 2. mesto magnetnega traku 1
programsko enoto m + 2 dolžine lm + 2 vstavimo na 2. mesto magnetnega traku 2
.....
REŠITEV:

Clear[f1, f2, ShraniNaTrakove]
f1[l_List] := Sort[l]
f2[i_Integer, j_Integer] := Mod[i, j] + 1
ShraniNaTrakove[pe_List, t_Integer] := Module[{tmtrakov, i},
    tmtrakov = Table[{}, {t}];
    For[i = 0, i < Length[f1[pe]], i++,
        tmtrakov[[f2[i, t]]] = Append[tmtrakov[[f2[i, t]]], f1[pe][[i + 1]]];];
    Return[tmtrakov];]

PRIMER:

Clear[pe]
In[1]:= pe = {3, 15, 6, 5, 2, 9, 12, 14, 1, 4, 13, 8, 11, 7, 10};
In[2]:= ShraniNaTrakove[pe, 10]
Out[2]:= {{1, 11}, {2, 12}, {3, 13}, {4, 14}, {5, 15}, {6}, {7}, {8}, {9}, {10}}
Osebna orodja