Schönen 1. Advent miteinander,
> auch wenn ich vom Ende her inkrementell zähle, geht's:
Es geht auch, wenn bei jedem Durchlauf die
Anzahlenfeststellungsreihenfolge zufällig geändert wird:
In[1]:= Remove[sorter]
sorter := Block[{o = Random[Integer, {0, 9}]},
l = {o};
While[Length[l] < 10,
o = Random[Integer, {0, 9}];
If[Count[l, o] == 0, l = Append[l, o]]
];
l
];
In[6] := abiZ := Block[{l1 = Table[-1, {10}], l2 = sorter, i = 0, log =
{}},
log = {{0, "-", FromDigits[l2]}};
While[l1 != l2,
i++;
l1 = l2;
l3 = sorter;
l2 = Fold[ReplacePart[#1, Count[#1, #2], #2 + 1]&, l2, l3];
AppendTo[log, {i,
(* FromDigits[] duldet führende Nullen nicht *)
PaddedForm[FromDigits[l3], 10,
NumberPadding -> {"0", "0"}, NumberSigns -> {"", ""}],
PaddedForm[FromDigits[l2], 10,
NumberPadding -> {"0", "0"}, NumberSigns -> {"", ""}]}]
];
TableForm[Most[log], TableHeadings -> {None, {"Schritt", "Sortierer",
"Zahl"}}]
];
Die meisten Ausgaben von abiZ haben eine einstellige Schrittzahl, aber
es gibt auch dieses:
Schritt Sortierer Zahl
0 - 7016439285
1 8240569713 1610111010
2 8752964013 7100001000
3 2947831605 7300000100
4 0859632714 7201000100
5 0574196238 6100001000
6 3806574192 7210000100
7 7043981562 6210001100
8 0234768951 5210010000
9 2463718950 6210010000
10 4589107623 7100000100
11 3670289541 7200000100
12 7196830425 7100000100
13 6974821530 7200000100
14 1396078425 7100000100
15 8342190675 7200000100
16 7160398425 7100000100
17 7651340829 7210000100
18 9546203817 6210000000
19 1459682307 7100001100
20 5167394802 6301000100
21 9605182374 5400111000
22 4273198560 6300110000
23 8195746023 7210001000
24 4385219607 7210000100
25 7824560913 6210000100
26 9461025837 5301011000
27 7269315804 6201010000
28 2351708694 7110000000
29 0675218493 7200000100
30 4598167320 7100000100
31 0873694125 7210000100
32 1862405739 6210000000
33 3261489705 6210001000
Gruss
Udo.