- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
procedure GenerateMines; // Процедура генерации мин
label
again;
var
t,m:Integer; // Переменные для цикла
i,j:Byte; // Координаты на поле
bufer:String; // Вспомогательная переменная цикла. Хранит текущие сгенерированные координаты мины для записи в массив
begin
Randomize;
for t:= 1 To mines Do
begin
again:
i:=Round(Random*9+1);
j:=Round(Random*9+1);
bufer:=IntToStr(i) + ',' + IntToStr(j); // Создание строковой записи коордитаты мины
for m:= 1 To 100 Do // Цикл для проверки, есть ли сгенерированная координата в массиве
begin
if bufer = mines_a[m] then goto again; // Если сгенерированная координата в массиве есть, то программа генерирует новые координаты
end;
mines_a[t]:=bufer; // Запись новой координаты в массив
field[i,j]:=9; // Добавление мины на поле в сгенерированные координаты
end;
end;
Процедура генерации мин в сапёре. Говно или не?
label again; - метка ? - говно
да и вобще говно
Не трудитесь, я назову его за вас. Inf.
> for m:= 1 To 100 Do // Цикл для проверки, есть ли сгенерированная координата в массиве
Эпично. А if field[i,j]=9 не судьба взять.
Короче, если бы я намеренно хотел намеренно написать как можно более говняный алгоритм генерации мин, то я бы примерно так и написал.
еще интересно: число возможных полей для мин 9х9, а в строке 16 говноконстанта (я уж не говорю про "1 to t-1") 100.
Вспомнился O(1)
Да, алехуя мы довольно грубо выгнали. А он просто всего лишь тупил, он хотя бы не говнился.
И вообще он - мудень, если ты забыл:
http://govnokod.ru/user/4367/codes
Мудак это вообще почти не оскорбление.
http://govnokod.ru/9068
У, максималисты, хуле. Дайте максималисту возможность он бы и бабу в идеальную форму перелепил - в сиську
Таким образом, надо писать так:
if a<0 then (a+b)/2 else a+(b-a)/2;
В жабе (a + b) >>> 1
А если обе границы отрицательны?
И исключение при целочисленном переполнении ты всё равно так не обойдёшь.
$R+
Вообще в сапёрах надо чтобы пользователь вводил не число мин, а плотность, это более ощутимый параметр.
Поле 10х10 при 20 минах это тяжело.
Поле 30х30 при 20 минах это халява.
Поле 10х10 при 20% плотности это тяжело.
Поле 30х30 при 20% плотности (это 180 мин) это ровно так же тяжело.
Поэтому чтобы пользователь не мучался с ручным умножением плотности на размер, лучше сразу дать ему вводить именно плотность.
Так что я пробовал.