Доброго времени суток!
В данный момент пишу пасьянс Медичи на МП.
Столкнулся с тем, что не знаю алгоритма перемешивания(!), а действительно зачам перемешивать если всю жизнь решал задачки на сортировку?..
Полазив в интернете таи нашел плодотворную статью.
{На данном этапе задача программы - только сортировать колоду}
Вот код.
Program Medichy;
var
i,z:integer;
s,o:string;
k:array[1..37] of string;
Begin
randomize;
//наполнение массива
k[1]:='6 пик';
k[2]:='7 пик';
k[3]:='8 пик';
k[4]:='9 пик';
k[5]:='10 пик';
k[6]:='валет пик';
k[7]:='дама пик';
k[8]:='король пик';
k[9]:='туз пик';
k[10]:='6 треф';
k[11]:='7 треф';
k[12]:='8 треф';
k[13]:='9 треф';
k[14]:='10 треф';
k[15]:='валет треф';
k[16]:='дама треф';
k[17]:='король треф';
k[18]:='туз треф';
k[19]:='6 бубен';
k[20]:='7 бубен';
k[21]:='8 бубен';
k[22]:='9 бубен';
k[23]:='10 бубен';
k[24]:='валет бубен';
k[25]:='дама бубен';
k[26]:='король бубен';
k[27]:='туз бубен';
k[28]:='6 червей';
k[29]:='7 червей';
k[30]:='8 червей';
k[31]:='9 червей';
k[32]:='10 червей';
k[33]:='валет червей';
k[34]:='дама червей';
k[35]:='король червей';
k[36]:='туз червей';
//проверка
Showcanvas;
setcolor(15,99,10);
drawtext('ccc', 10, 10);
Repaint;
//"сортировка"
for i:=1 to 36 do
begin
z:=random(36);
o:=k[i];
k[i]:=k[z];
k[z]:=o;
end;
//вывод
for i:=1 to 36 do
begin
setcolor(00,00,00);
drawtext(k[i], 10, i*10);
end;
Repaint;
Delay(5000);
End.
Код рабочий.
Проблема:
в 1 из 10 запусков мидлета - просто белый экран
в 3 из 10 запусков мидлета -белый экран и надпись "ссс"
остальное - работающие правильно случаи.
Внимание вопрос:
Почему мидлет так выкаблучивается? И как его отучить?).