НАПИСАТЬ ПРОГРАММУ НА ПИТОНЕ. Вариант 6 Текстовый файл состоит не более чем 10**6 символов арабских цифр (0, 1, ⋯, 9). Определите максимальное количество идущих подряд одинаковых цифр.
Вариант 7 Текстовый файл состоит не более чем 10**6символов арабских цифр (0, 1, ⋯, 9). Определите максимальное количество идущих подряд цифр, среди которых каждые две соседние различны.
Вариант 8 Текстовый файл состоит не более чем 10**6символов арабских цифр (0, 1, ⋯, 9). Определите максимальное количество идущих подряд цифр, расположенных строго в возрастающем порядке.
Если мы хотим вывести числа от 0 до 1, то мы пишем следующее :
1
2
3
var a : integer;
a := random;
Т.е. random без всего.
Бывают случаи когда хочется иметь промежуток(диапазон) чисел. Допустим от -23 до 5, как его задать ?
Для начала мы складываем 23 и 5 без учета знаков и прибавляем 1(всегда) , у нас будет 29. Теперь пишем
1
2
3
var a : integer;
a := random(29);
Но это вернет нам числа от 0 до 28, теперь просто надо вычесть 23, не учитывая знаков. Так для промежутка c отрицательными числами.
С двумя положительными числами всё наоборот, сначала вычитаем из второго первое и прибавляем 1, мы получаем число, затем к нему прибавляем первое число :
1
2
3
5 до 29 = 29 - 5 + 1 = random(25) + 5
-1 до 13 = 13 + 1 + 1 = random(15) - 1
Так же есть формула для всех случаев:
1
x := random(max-min+1)+min; // тут уже все знаки учитываются
Т.е. если нам нужен диапазон отрицательных чисел, например от -5 до -10, то мы пишем:
1
2
3
// -5 это максимальное значение, потому что оно больше -10, а -10 это минимальное
random(-5-(-10)+1)+(-10) // все знаки учитываются
В основном random и randomize в pascal используются вместе. Если использовать random отдельно, то у нас будут случайные числа постоянно одинаковы.
Допустим у нас есть код :
1
2
3
4
5
6
var a : integer;
begin
a := random(10);
writeln(a);
readln;
end;
И при запуске программы у нас выведется допустим 3. И если мы запустим заново, то у нас снова выведется 3 и так при каждом запуске.
Для этого и используется randomize, чтобы числа не повторялись :
1
2
3
4
5
6
7
var a : integer;
begin
randomize; // пишем до использование random()
a := random(10);
writeln(a);
readln;
end;
Если мы это напишем, то у нас функция random каждый раз при запуске программы будет выдавать разные числа.
Объяснение:
uses GraphABC,Events,Utils; //необходимые библиотеки подключены
var pr,px,py,kx,ky,ku,pc,s: integer; //переменные: положение ракетки, координаты мяча, коэффициенты отражения, положение ракетки компьютера
procedure KeyDown(Key: integer); //процедура обработки нажтия клавиши
begin
case Key of
VK_Up: if pr>10 then pr:=pr-10; //если вверх, и если ракетка не достигла края экрана, сместить координаты ракетки на 10 вверх
VK_Down: if pr<490 then pr:=pr+10; //то же, только вниз
end;
end;
procedure Pm; //процедура определения координат мячика
begin
if px<10 then
begin
kx:=kx*(-1); //если достиг стенки левой - поменять коэффициент смещения по х на противоположный
s:=random(2);
if s=1 then ky:=ky*(-1);
end;
if (py<10) or (py>490) then ky:=ky*(-1); //если достиг стенки верхней или нижней - поменять коэффициент смещения на противоположный
if px>590 then //если достиг правой (игрока) стенки, проверяем
if (py>pr-20) and (py<pr+20) then kx:=kx*(-1) else //если координаты мяча совпадают с координатами ракетки, меняем коэффициент смешения по х на противоположный
begin //иначе
showmessage('Вы упустили мячик!'); //выводим сообщение
inc(ku); //увеличиваем счетчик упущенных мячей
px:=15; //возвращаем мяч в исходную позицию у противоположной стенки
py:=250;
end;
px:=px+kx; //смещаем координаты на коэффициенты смещения
py:=py+ky;
end;
begin
lockdrawing; //запрет прорисовки в окне (мигание убираем)
setwindowsize(600,500); //размер окна
kx:=5; ky:=1; px:=15; py:=250; pr:=250; //задаем координаты смещения и позицию мяча
repeat //цикл с постусловием
clearwindow; //очистить окно
setbrushcolor(clgreen); //цвет кисти зеленый
rectangle(5,5,595,495); //прямоугольник - поле
Pm; //процедура определения координат мяча
setbrushcolor(clwhite); //цвет кисти - белый
circle(px,py,10); //мяч
OnKeyDown:=KeyDown; //процедура нажатия клавиши
pc:=py; //ракетка противника следует за мячом неотступно...
setbrushcolor(clblack); //цвет кисти - черный
rectangle(592,pr-20,597,pr+20); //ракетки
rectangle(3,pc-20,8,pc+20);
sleep(25); //задержка
redraw; //перерисовка
until ku=5; //цикл повторяется до 5 пропущенных мячей
end.