Информатика

16 015 задачвместе с подтемами
Число у задачи — рейтинг сложности, слово рядом — насколько она трудна по сравнению с другими задачами такого же типа. Шкалы задач с ответом и задач с кодом между собой не сравниваются. Рядом — счётчики попыток: ✓ успешные, ✗ неуспешные.
На ленте исполнителя МТ в соседних ячейках записана последовательность из 1000 символов, включающая только нули и единицы. Ячейки справа и слева от последовательности заполнены пустыми символами «λ». В начальный момент времени головка расположена в ближайшей ячейке слева от последовательности.

Программа для исполнителя:
 
  l 0 1
q0 l, R, q1    
q1 l, S, q1 1, R, q1 0, R, q1

Команды движения каретки: L – влево, R – вправо, S – стоп. После выполнения программы на ленте осталось ровно 515 нулей. Определите максимально возможное число нулей в исходной последовательности.
 
На ленте исполнителя МТ в соседних ячейках записана последовательность из 1000 символов, включающая только нули и единицы. Ячейки справа и слева от последовательности заполнены пустыми символами «λ». В начальный момент времени головка расположена в ближайшей ячейке справа от последовательности.
Программа для исполнителя:
  λ 0 1
q0 λ, L, q1    
q1 λ, S, q1 1, S, q1 0, L, q1

Команды движения каретки: L – влево, R – вправо, S – стоп. После выполнения программы на ленте осталось ровно 758 нулей. Определите минимально возможное число нулей в исходной последовательности.
 
Исполнитель МТ представляет собой читающую и записывающую головку, которая может передвигаться вдоль бесконечной горизонтальной ленты, разделённой на равные ячейки.
Полный текст условия см. по ссылке
 

Выполните задание.

На ленте записана последовательность из 900 символов. Каждый символ берется из алфавита {0, 1, 2}. Последовательность окружёна слева и справа пустым символом λ. Головка стартует на ближайшем слева символе λ и находится в состоянии q0.

Программа работы исполнителя:

 

λ

0 1 2
q0

λ, R, q1

     
q1

λ, S, q1

1, R, q2

2, R, q1 2, R, q1
q2

λ, S, q2

0, R, q2

1, R, q2 0, R, q2

После выполнения количество единиц стало 300, количество двоек стало 450. Определите минимально возможное число нулей в исходной последовательности.

Исполнитель МТ представляет собой читающую и записывающую головку, которая может передвигаться вдоль бесконечной горизонтальной ленты, разделённой на равные ячейки.
Полный текст условия см. по ссылке
 

Выполните задание.

На ленте записана последовательность из 800 символов. Каждый символ берется из алфавита {0, 1, 2, 3}. Последовательность окружёна слева и справа пустым символом λ. Головка стартует на ближайшем слева символе λ и находится в состоянии q0. В исходной последовательности присутствует каждый символ из алфавита хотя бы один раз.

Программа работы исполнителя:

 

λ

0 1 2 3
q0

λ, R, q1

       
q1

λ, S, q1

1, R, q1

2, R, q1 3, R, q1 0, R, q1

После выполнения программы на ленте остались символы, дающие в числовом выражении сумму равную 920. Определите максимально возможное число двоек в исходной последовательности.

Исполнитель МТ представляет собой читающую и записывающую головку, которая может передвигаться вдоль бесконечной горизонтальной ленты, разделённой на равные ячейки.
Полный текст условия см. по ссылке
 

Выполните задание.

На ленте записана последовательность из 1000 символов. Каждый символ берется из алфавита {0, 1, 2}. Последовательность окружёна слева и справа пустым символом λ. Головка стартует на ближайшем слева символе λ и находится в состоянии q0. В исходной последовательности присутствует каждый символ из алфавита хотя бы один раз.

Программа работы исполнителя:

 

λ

0 1 2
q0

λ, R, q1

     
q1

λ, S, q0

0, R, q1

2, R, q1 1, R, q1

После выполнения программы на ленте остались символы, дающие в сумме 730. Определите максимальное возможное число нулей в исходной последовательности.

Исполнитель МТ представляет собой читающую и записывающую головку, которая может передвигаться вдоль бесконечной горизонтальной ленты, разделённой на равные ячейки.
Полный текст условия см. по ссылке
 

Выполните задание.

На ленте записана последовательность из 900 символов (0 и 1), окружённая  слева и справа пустым символом λ. Головка стартует на ближайшем слева символе λ и находится в состоянии q0.

Программа работы исполнителя:

 

λ

1 0
q0

λ, R, q1

   
q1

λ, S, q0

0, R, q1

1, R, q1

После выполнения программы на ленте осталось ровно 480 единиц. Определите минимально возможное число единиц в исходной последовательности.

Дубликаты - одинаковые строки в данных, которые могут исказить анализ.

Основные методы

df.duplicated() - находит дубликаты (возвращает True/False)
df.drop_duplicates() - удаляет дубликаты
df.nunique() - количество уникальных значений
Параметры drop_duplicates()
subset - столбцы для проверки дубликатов
keep - какую копию оставить ('first', 'last', False)
ignore_index -  пересоздает аккуратный последовательный индекс (0, 1, 2, 3, 4...).
Пример
df_clean = df.drop_duplicates()  # Удалить полные дубликаты
df_partial = df.drop_duplicates(subset=['name'])  # По имени
df_last = df.drop_duplicates(keep='last')  # Оставить последний

Задание

1) Посчитайте количество полных дубликатов в прикрепленном датасете (программа должна вывести целое число)
2) Удалите все полные дубликаты и выведите размер получившегося датасета (только количество строк в результирующем датасете).

Обработка пропусков

df.dropna() - удаляет строки с пропусками
df.fillna(value, inplace=True) - заполняет пропуски значением value
df.fillna(df.mean(), inplace=True) - заполняет средним значением

Параметр inplace:
inplace=False (по умолчанию) - создает копию с изменениями
inplace=True- изменяет исходный DataFrame напрямую

Метод fillna() с словарем позволяет заполнить пропуски в разных столбцах различными значениями за одну операцию. Синтаксис:
df.fillna({'column1': value1, 'column2': value2, ...})
Пример
 
df = ...
# Заполнение разными значениями
fill_dict = {
    'age': df['age'].mean(),      # Средним значением
    'salary': df['salary'].median(), # Медианой
    'city': 'Unknown'             # Константой
}

df_filled = df.fillna(fill_dict)
print(df_filled)
 

Задание

Проанализируйте датасет супергероев, считав его из прикрепленного файла
Напишите программу, который ищет и обрабатывает пропуски. 

  1. Заполните пропуски в power и intelligence средними значениями
  2. Заполните пропуски в costume_cost медианным значением 
  3. Заполните пропуски в first_appearance значением 1950 
  4. Для текстовых полей (name, alias, universe) заполните пропуски строкой Unknown
Выведите обработанный датасет на экран, используя print(df)

Пропущенные значения (NaN, None, NULL) - одна из главных проблем при анализе данных.

Поиск пропусков

df.isnull() - находит пропуски
df.isnull().sum() - считает пропуски по столбцам

 

Задание

Проанализируйте датасет супергероев, считав его из прикрепленного файла
Напишите программу, который ищет пропуски. Выведите

  1. В первой строке - количество пропусков в каждом столбце (семь целых чисел через пробел)
  2. Во второй строке - процент пропущенных значений (отбросив дробную часть) для каждого столбца  (семь целых чисел через пробел)
Числа должны быть в порядке перечисления столбцов в датасете.

Пример вывода (пример дан для понимания формата вывода):
1 2 3 2 1 1 4
10 20 30 20 10 10 40

Промахом считается выстрел с расстоянием больше 10.0. Определите, у какого игрока был самый худший одиночный выстрел (максимальное значение в массиве)? А сколько всего фатальных промахов совершила вся команда?

Тренеры заметили, что некоторые игроки сильно «разогреваются» к концу сессии. Проверьте гипотезу: сравните среднюю точность каждого игрока по первым пяти выстрелам и по последним пяти. У кого разница в пользу последних выстрелов наибольшая? (Значит, он "разыгрывается").
Точность — это хорошо, но стабильность — лучше! Найдите игрока с самой маленькой дисперсией или стандартным отклонением результатов. Это значит, что он стабильно стреляет примерно с одинаковой точностью.
Найдите сумму всех целых чисел, расположенных между двумя целыми числами a и b (включая a и b).

Формат входных данных
В первой строке записано целое число a, во второй - целое число b (-1000 <= a, b <= 1000).

Формат выходных данных
Выведите искомую сумму.
Исполнитель МТ представляет собой читающую и записывающую головку, которая может передвигаться вдоль бесконечной горизонтальной ленты, разделённой на равные ячейки.
Полный текст условия см. по ссылке
 

Выполните задание.

На ленте записана последовательность из 1200 символов (0 и 1), окружённая  слева и справа пустым символом λ. Головка стартует на ближайшем справа символе λ и находится в состоянии q0.

Программа работы исполнителя:

 

λ

1 0
q0

λ, L, q1

   
q1

λ, S, q1

1, S, q1

0, L, q1

После выполнения программы на ленте осталось ровно 512 нулей. Определите максимально возможное число нулей в исходной последовательности.

Исполнитель МТ представляет собой читающую и записывающую головку, которая может передвигаться вдоль бесконечной горизонтальной ленты, разделённой на равные ячейки.
Полный текст условия см. по ссылке
 

Выполните задание.

На ленте записана последовательность из 800 символов (0 и 1), окружённая  слева и справа пустым символом λ. Головка стартует на ближайшем слева от последовательности символе λ и находится в состоянии q0.

Программа работы исполнителя:

 

λ

1 0
q0

λ, R, q1

   
q1

λ, S, q1

0, R, q1

1, S, q1

После выполнения программы на ленте осталось ровно 275 единиц. Определите максимально возможное число единиц в исходной последовательности.

Исполнитель МТ представляет собой читающую и записывающую головку, которая может передвигаться вдоль бесконечной горизонтальной ленты, разделённой на равные ячейки.
Полный текст условия см. по ссылке
 

Выполните задание.

На ленте записана последовательность из 950 символов (0 и 1), окружённая слева и справа пустым символом λ. Головка стартует на ближайшем справа символе λ и находится в состоянии q0.

Программа работы исполнителя:

 

λ

1 0
q0

λ, L, q1

   
q1

λ, S, q1

1, L, q1

0, S, q1

После выполнения программы на ленте осталось ровно 420 единиц. Определите максимально возможное число единиц в исходной последовательности.

Исполнитель МТ представляет собой читающую и записывающую головку, которая может передвигаться вдоль бесконечной горизонтальной ленты, разделённой на равные ячейки.
Полный текст условия см. по ссылке
 

Выполните задание.

На ленте в соседних ячейках записана последовательность из 1000 символов, включающая только нули и единицы. Ячейки справа и слева от последовательности заполнены пустыми символами «λ». В начальный момент времени головка расположена в ближайшей ячейке справа от последовательности.

Программа работы исполнителя:

 

λ

1 0
q0

λ, L, q1

   
q1

λ, S, q1

0, S, q1

1, L, q1
 

После выполнения программы на ленте осталось ровно 343 нуля. Определите максимально возможное число нулей в исходной последовательности.

Поделиться
Класснуть