Однопроходные алгоритмы: задачи

TODO: сделать задачи с автоматической проверкой. Указать в заголовках задач короткие названия этих задач.

range1

Скопируйте код. Вместо ??? вставьте такие аргументы фукнции range, чтобы были напечатаны числа как в комментарии.

# 0 1 2 3 4 5 6 7 8 9
for x in range(10):
    print(x, end=' ')
print()

# 1 3 5 7 9
for x in range(???):
    print(x, end=' ')
print()

# 1 6 11 16
for x in range(???):
    print(x, end=' ')
print()

# 9 8 7 6 5 4 3 2 1 0
for x in range(???):
    print(x, end=' ')
print()

# 20 16 12 8 4 
for x in range(???):
    print(x, end=' ')
print()

Вывод:

0 1 2 3 4 5 6 7 8 9
1 3 5 7 9
1 6 11 16
9 8 7 6 5 4 3 2 1 0
20 16 12 8 4

range2

Даны целые числа k и n (по 1 числу на строке). Напечатайте числа от k до n с шагом 4. То есть если k=1, n=20, то напечатать 1 5 9 13 17

Input Output
1
20
1 5 9 13 17
1
9
1 5 9
20
1
20 16 12 8 4

Пример - напечатать все числа

На строке даны целые числа через пробел. Напечатать все числа по одному числу на строку.

a = map(int, input().split())    # прочитали 1 строку, разбили ее на слова, из слов получили числа, записали их в a
for x in a:                      # для каждого элемента из a
    print(x)                     # напечатать этот элемент

a и x - переменные. Им можно дать другие имена.

Input Output
3 46 -2 18 3 46 -2 18

Положительные числа

Даны целые числа. Напечатать из них только положительные числа.

Input Output
3 46 -2 18 3 46 -2 18

От -10 до 10

Даные целые числа. Напечатать только те числа, что лежат от -10 до 10 (включая).

Input Output
3 46 -2 18 3 -2
100 -10 0 10 -99 -10 0 10

Пример - сумма чисел

Даны целые числа. Найти их сумму.

Input Output
3 46 -2 18 65

Сумма четных чисел

Даны целые числа. Найти сумму четных чисел.

Input Output
3 46 -2 5 18 62

46 + (-2) + 18 = 62

Сколько отрицательных чисел.

Даны целые числа. Сколько их них отрицательных чисел?

Input Output
-3 46 -2 -18 3

Минимум

В задачу вставить пример максимума через None и через next.

Даны числа. Найти самое маленькое число.

Input Output
-3 46 -2 18 -3

Капитан Флинт (целые числа)

Капитан Флинт зарыл клад на Острове сокровищ. Он оставил описание, как найти клад. Описание состоит из строк вида: "0 5", где первое число – одно из 0 (North, север), 2 (Sout, юг), 1 (East, восток), 3 (West, запад), а второе число – количество шагов, необходимое пройти в этом направлении.

Напишите программу, которая по описанию пути к кладу определяет точные координаты клада, считая, что начало координат находится в начале пути, ось OX направлена на восток, ось OY – на север.

Программа получает на вход последовательность строк указанного вида, завершающуюся строкой со словом "Treasure!". Программа должна вывести два целых числа: координаты клада.

Путь 5 шагов на север, 3 шага на восток, 1 шаг на юг мы запишем как:

0 5 
1 3 
2 1 
Treasure!
Input Output
0 5
1 3
2 1
Treasure!
3 4
x = 0
y = 0
while True :
  # прочитали одну строку в line
  line = input()            

  # если Treasure! надо напечатать координаты и остановиться 
  if line == 'Treasure!' :      
    print(x, y)
    break

  # line разбили на части и каждую часть сделали int   
  direction, d = map(int, line.split())

  if direction == 0 :     # север
    y = y + d
  # тут нужно дописать решение для юг, восток, запад

Пример - напечатать строку по 1 символу

s = input()      # прочитать строку
for x in s:      # для каждого символа в строке s
    print(x)     # напечатать этот символ

# Input:
# Hello
# Output:
# H
# e    
# e
# l
# o

Сколько раз встретилась z

Дана строка. Сколько раз в ней встретилась буква z?

Input Output
azzzbz 4
z 1
Hello 0
ZZZ 0

for_14 - Скобки-1

Дана строка из скобок. Напечатать YES, если это правильная скобочная последовательность. Иначе напечатать NO.

Input Output
()() YES
(()()) YES
((())) YES
(() NO
()) NO
)( NO

for_8 Строка из *

Дано натуральное число N. Напечатать символ * N раз без пробелов.

Код, который печатает 4 символа:

for i in range(4):
    print('*', end='') # end='' - не делать новую строку, не делать пробелов
Input Output
4 ****

for_9 Прямоугольник из *

Даны натуральные числа M и N. Вывести символами * прямоугольник M строк на N столбцов.

Input Output
3
4
****
****
****

for_91 Прямоугольник из *

Даны натуральные числа M и N. Вывести символами * рамку M строк на N столбцов.

Input Output
3
4
****
*  *
****

Двойной минимум

Даны целые числа (2 или более). Найти в один проход минимум и второй минимум в этой последовательности.

Input Output
3 -5 7 1 0 10 -5 0
3 5 7 1 -1 10 -1 1
3 5 7 1 13 10 1 3
3 5 7 1 13 1 1 1

results matching ""

    No results matching ""