М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
Morenova123456
Morenova123456
17.04.2023 12:15 •  Информатика

Здравствуйте, данный код создаёт поле игры в сапёр пользовательских размеров и расставляет пользовательское количество бомб (ещё не добавил проверку, если бомб больше, чем размер поля). Но столкнулся с проблемой: например, при вводе: Высота: 10
Ширина: 10
Сколько бомб: 98
Во время расстановки бомб код расставляет не по координатам, точнее вторую координату он соблюдает, и в итоге бомбы расставляются на всех строках поля по координатам y.
Как это исправить?

import random

def create_field(height, width):
return [[[0] * width] * height]

def place_bombs(field, number):
x_y_bombs = []
width = len(field[0])
height = len(field)
if number <= height * width // 2:
while len(x_y_bombs) < number:
x_y_bombs.append([random.randint(0, height - 1), random.randint(0, width - 1)])
temp = x_y_bombs.copy()
del temp[-1]
for item in temp:
if x_y_bombs[-1] == item:
del x_y_bombs[-1]
for coord in x_y_bombs:
field[coord[0]][coord[-1]] = 'x'
else:
number = height * width - number
field = [[['x'] * width] * height][0]
while len(x_y_bombs) < number:
x_y_bombs.append([random.randint(0, height - 1), random.randint(0, width - 1)])
temp = x_y_bombs.copy()
del temp[-1]
for item in temp:
if x_y_bombs[-1] == item:
del x_y_bombs[-1]
for coord in x_y_bombs:
field[coord[0]][coord[-1]] = 0
return field

def main():
field = create_field(int(input('Высота: ')), int(input('Ширина: ')))[0]
field = place_bombs(field, int(input('Сколько бомб: ')))
print(field)

if __name__ == '__main__':
main()

👇
Открыть все ответы
Ответ:
Ytbjfdg
Ytbjfdg
17.04.2023
Var
a:array[1..100,1..100] of integer;
c:array[1..20,1..20] of real;
b:array[1..20,1..20] of real;
i,j,n,k:integer;
t:real;
r:integer;
begin
randomize;
t:=0;
Writeln('Введите порядок матрицы: ');
readln(n);
for i:=1 to n do
for j:=1 to n do
begin
a[i, j] := random(10); 
end;
for i:=1 to n do
for j:=1 to n do
begin
b[i,j]:=1/i+j-1;
end;
for i:=1 to n do
for j:=1 to n do
begin
for k:=1 to n do
begin
t :=t+a[i,k]*b[k, j];
end;
c[i,j]:=t;
t:=0;
end;
for i:=1 to n do
begin
for j:=1 to n do
begin
write(' ',c[i,j]:2:2);
end;
Writeln;
end;

end.
4,5(82 оценок)
Ответ:
denian11343
denian11343
17.04.2023
#include <iostream>
#include <cstdlib>
// содержит srand() и rand()
#include <ctime>
 using namespace std;

 int main()
{   
 int n=10;
 int mas[n] = {};
 int tmp,j=0;
 cout<<"random number";
 cout<<endl;
// начальная установка генератора случ. чисел
 srand(time(NULL));
// заполнение массива случайными числами
 for (int i = 0; i < n; i++) 
{
  mas[i] = rand()/100;  cout<<mas[i]<<" ";
}
cout<<endl;
// перестановка элементов
for (int i = 0; i < n/2; i++)
 { 
     tmp=mas[i];    mas[i]=mas[2*(i+1)-1];    j=2*i;
        while (j>i) 
    {   
        mas[j+1]=mas[j];    j--;
     }
        mas[i+1]=tmp;
}
//"массив после замены"
 for (int i = 0; i < n; i++)    cout<<mas[i]<<" ";
 cout<<endl;
 system("pause");
return 0;
}
4,7(89 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ