Некоторый алгоритм из одной цепочки символов получает новую цепочку следующим образом. Сначала вычисляется длина исходной цепочки символов; если она чётна, то удаляется последний символ цепочки, а если нечётна, то в начало цепочки добавляется символ Б. В полученной цепочке символов каждая буква заменяется буквой, следующей за ней в русском алфавите (А — на Б, Б — на В и т. д., а Я — на А). Получившаяся таким образом цепочка является результатом работы алгоритма. Например, если исходной была цепочка НОГА, то результатом работы алгоритма будет цепочка ОПД, а если исходной была цепочка ТОН, то результатом работы алгоритма будет цепочка ВУПО.
Дана цепочка символов ПЛОТ. Какая цепочка символов получится, если к данной цепочке применить описанный алгоритм дважды (т. е. применить алгоритм к данной цепочке, а затем к результату вновь применить алгоритм)? Русский алфавит: АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ.
Многие разработчики приходят в разработку ПО, потому что хотят создавать игры. Не все могут стать профессиональными разработчиками игр, но любой может создавать собственные игры из интереса (а может быть, и с выгодой). В этом туториале, состоящем из пяти частей, я расскажу вам, как создавать двухмерные однопользовательские игры с Python 3 и замечательного фреймворка PyGame.
(Остальные части туториала: вторая, третья, четвёртая, пятая.)
Мы создадим версию классической игры Breakout. Освоив этот туториал, вы будете чётко понимать, что необходимо для создания игры, познакомитесь с возможностями Pygame и напишете собственный пример игры.
Мы реализуем следующие функции и возможности:
простые стандартные GameObject и TextObject
простой стандартный Game object
простая стандартная кнопка
файл конфигурации
обработка событий клавиатуры и мыши
кирпичи, ракетка и мяч
управление движением ракетки
обработка коллизий мяча с объектами игры
фоновое изображение
звуковые эффекты
расширяемая система спецэффектов
Не стоит ожидать, что игра будет очень красива графически. Я программист, а не художник, меня больше интересует эстетика кода. Созданный мной дизайн может неприятно удивить. С другой стороны, у вас будут почти неограниченные возможности по улучшению графики этой версии Breakout. Если вы отважитесь повторять за мной, посмотрите на скриншот:
# подключаем модуль, чтобы использовать случайные числа
from random import *
a = [0]*32 # Создание списка
for i in range (0, 32):
a[i] = randint(1, 101) # заполнение случайными числами
a.sort() # сортировка
print(a) # вывод на экран
b = int(input('Введите число для поиска : ')) # ввод числа для поиска
mid = len(a) // 2 # определяем средний элемент списка
low = 0 # определяем верхнюю границу списка
high = len(a) - 1 # определяем верхнюю границу списка
step = 0 # обнуляем счётчик шагов
while a[mid] != b and low <= high: # в цикле пока не нашли искомый элемент
if b > a[mid]: # если искомый элемент > среднего элемента в диапазоне
low = mid + 1 # то нижнюю границу выставим в середину диапазона
else: # если искомый элемент <= среднего элемента в диапазоне
high = mid - 1 # то верхнюю границу выставим в середину диапазона
mid = (low + high) // 2 # считаем новый средний элемент диапазона
step += 1 # увеличиваем счётчик на 1
if low > high:
print('Нет числа')
else:
print('Количество шагов = ', step)
print('Индекс = ', mid)