Spätere |
||||
Nächste |
|
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. |
Spätere |
||||
Nächste |