- 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;
Процедура генерации мин в сапёре. Говно или не?
guest 10.01.2012 05:58 # 0
guest 10.01.2012 07:47 # +2
label again; - метка ? - говно
да и вобще говно
0rt 10.01.2012 11:17 # 0
TarasB 10.01.2012 11:18 # +1
Не трудитесь, я назову его за вас. Inf.
> for m:= 1 To 100 Do // Цикл для проверки, есть ли сгенерированная координата в массиве
Эпично. А if field[i,j]=9 не судьба взять.
Короче, если бы я намеренно хотел намеренно написать как можно более говняный алгоритм генерации мин, то я бы примерно так и написал.
ctm 10.01.2012 13:09 # 0
еще интересно: число возможных полей для мин 9х9, а в строке 16 говноконстанта (я уж не говорю про "1 to t-1") 100.
SmseR 10.01.2012 15:52 # −1
TarasB 10.01.2012 16:26 # 0
SmseR 10.01.2012 16:59 # −1
SmseR 10.01.2012 18:21 # 0
TarasB 10.01.2012 18:35 # +2
3.14159265 10.01.2012 19:05 # 0
Вспомнился O(1)
TarasB 10.01.2012 19:26 # 0
Да, алехуя мы довольно грубо выгнали. А он просто всего лишь тупил, он хотя бы не говнился.
3.14159265 10.01.2012 19:29 # 0
И вообще он - мудень, если ты забыл:
http://govnokod.ru/user/4367/codes
TarasB 10.01.2012 19:31 # 0
Мудак это вообще почти не оскорбление.
bugmenot 10.01.2012 21:47 # 0
http://govnokod.ru/9068
Lure Of Chaos 11.01.2012 13:23 # 0
TarasB 11.01.2012 13:45 # 0
Lure Of Chaos 11.01.2012 13:58 # 0
TarasB 11.01.2012 14:07 # 0
Lure Of Chaos 12.01.2012 14:12 # 0
SmackMyBitchUp 12.01.2012 16:15 # 0
У, максималисты, хуле. Дайте максималисту возможность он бы и бабу в идеальную форму перелепил - в сиську
roman-kashitsyn 12.01.2012 16:31 # 0
roman-kashitsyn 12.01.2012 16:48 # 0
SmackMyBitchUp 12.01.2012 17:40 # 0
TarasB 12.01.2012 18:11 # 0
Таким образом, надо писать так:
if a<0 then (a+b)/2 else a+(b-a)/2;
roman-kashitsyn 12.01.2012 18:17 # 0
В жабе (a + b) >>> 1
TarasB 12.01.2012 18:31 # 0
А если обе границы отрицательны?
И исключение при целочисленном переполнении ты всё равно так не обойдёшь.
roman-kashitsyn 12.01.2012 18:33 # 0
TarasB 12.01.2012 20:37 # 0
bugmenot 12.01.2012 19:01 # 0
$R+
ctm 11.01.2012 06:43 # 0
TarasB 11.01.2012 09:38 # 0
Вообще в сапёрах надо чтобы пользователь вводил не число мин, а плотность, это более ощутимый параметр.
ctm 11.01.2012 10:38 # 0
TarasB 11.01.2012 10:56 # 0
Поле 10х10 при 20 минах это тяжело.
Поле 30х30 при 20 минах это халява.
Поле 10х10 при 20% плотности это тяжело.
Поле 30х30 при 20% плотности (это 180 мин) это ровно так же тяжело.
Поэтому чтобы пользователь не мучался с ручным умножением плотности на размер, лучше сразу дать ему вводить именно плотность.
ctm 11.01.2012 10:40 # 0
TarasB 11.01.2012 10:57 # +1
Так что я пробовал.
Lure Of Chaos 11.01.2012 13:24 # 0
guest 10.01.2012 16:29 # −6
bugmenot 10.01.2012 17:31 # 0
eth0 10.01.2012 18:04 # +1
Govnocoder#0xFF 11.01.2012 07:12 # 0
bugmenot 11.01.2012 08:52 # +4
Govnocoder#0xFF 11.01.2012 20:30 # 0