Язык программирования

640 задачвместе с подтемами
Число у задачи — рейтинг сложности, слово рядом — насколько она трудна по сравнению с другими задачами такого же типа. Шкалы задач с ответом и задач с кодом между собой не сравниваются. Рядом — счётчики попыток: успешные, неуспешные.

Дана строка ДНК, состоящая из символов A, T, G, C. Длина строки кратна 3. Выполните следующие вычисления:

  1. Длина последовательности.

  2. GC-состав — процентная доля нуклеотидов G и C: \[\mathrm{GC\%} = \frac{|G|+|C|}{n}\times 100,\] где \(|X|\) — количество символов \(X\), \(n\) — длина строки. Округлить до 2 знаков после запятой.

  3. Обратная комплементарная цепь (reverse complement). Комплементарность: \(\texttt{A}\leftrightarrow\texttt{T}\), \(\texttt{G}\leftrightarrow\texttt{C}\); затем цепь разворачивается.

  4. GC-богатые кодоны — количество кодонов (трёхбуквенных блоков), в которых два или три нуклеотида являются G или C.

  5. Наиболее частый нуклеотид. При ничьей вывести тот, который идёт первым в алфавитном порядке (\(\texttt{A}<\texttt{C}<\texttt{G}<\texttt{T}\)).

Формат ввода

Одна строка — последовательность ДНК (только заглавные A, T, G, C; \(6\le n\le 300\); \(n\) кратно 3).

Формат вывода

Ровно 5 строк в следующем порядке:

length: <целое>
gc: <вещественное, 2 знака>
rc: <строка>
gc_rich_codons: <целое>
most_frequent: <символ>

Пример ввода:

ATGGGCCCTATGAAA

Пример вывода:

length: 15
gc: 46.67
rc: TTTCATAGGGCCCAT
gc_rich_codons: 2
most_frequent: A

Разбор примера. Последовательность: ATG | GGC | CCT | ATG | AAA. GC-состав: \((4+3)/15=7/15\approx46{,}67\%\). Кодоны GGC (3 G/C) и CCT (2 G/C) — итого 2 GC-богатых кодона. Частоты: \(A=5,\;G=4,\;C=3,\;T=3\) \(\Rightarrow\) лидирует A.

Дана строка, задающая полином \(f(x)\) степени не выше 3, и два целых числа \(a\), \(b\) — пределы интегрирования. Выполните три операции:

  1. Найдите производную \(f'(x)\) и упростите её.

  2. Вычислите определённый интеграл \(\displaystyle\int_a^b f(x)\,dx\). Выведите точное значение (целое или дробное, например 27/4 или 0).

  3. Найдите все вещественные корни \(f(x) = 0\). Выведите их через пробел в порядке возрастания. Если вещественных корней нет — выведите none. Кратные корни выводятся один раз.

Формат ввода.
Строка 1: выражение полинома в синтаксисе Python (** для возведения в степень, * для умножения, только переменная x).
Строка 2: два целых числа \(a\) и \(b\) через пробел (\(-100 \le a < b \le 100\)).

Формат вывода. Ровно 3 строки:

derivative: <выражение>
integral: <точное значение>
roots: <числа через пробел, или "none">

Пример ввода 1:

x**3 - 4*x**2 + x + 6
0 3

Пример вывода 1:

derivative: 3*x**2 - 8*x + 1
integral: 27/4
roots: -1 2 3

Пример ввода 2:

x**2 - 4*x + 4
0 3

Пример вывода 2:

derivative: 2*x - 4
integral: 3
roots: 2

Корень \(x=2\) кратный — выводим один раз.

Разбор примера 1. \(f(x) = x^3 - 4x^2 + x + 6\).

\[f'(x) = 3x^2 - 8x + 1, \qquad \int_0^3 f\,dx = \left[\frac{x^4}{4} - \frac{4x^3}{3} + \frac{x^2}{2} + 6x\right]_0^3 = \frac{81}{4} - 36 + \frac{9}{2} + 18 = \frac{27}{4}\] \[f(-1) = -1-4-1+6 = 0,\quad f(2) = 8-16+2+6=0,\quad f(3)=27-36+3+6=0.\] Корни: \(-1,\ 2,\ 3\).

Подсказки по реализации.

  • Для разбора строки: parse_expr(s, transformations=standard_transformations + (implicit_multiplication_application,)).

  • Чтобы отфильтровать только вещественные корни: im(r) == 0.

  • simplify(diff(expr, x)) даёт упрощённый вид производной.

  • Сортировка корней: sorted(..., key=lambda r: float(r)).

📊
Шаг 8: Подсчёт атак
Средне
Мы перехватили журнал атак вируса — последовательность типов атак. Нужно подсчитать частоту каждого типа и составить отчёт в алфавитном порядке.
Условие задачи
 

Дана строка слов через пробел — типы атак. Подсчитай, сколько раз встречается каждый тип, и выведи результаты в алфавитном порядке.

Входные данные

Одна строка: слова через пробел (латиница, от 1 до 100 слов).

Выходные данные

На каждой строке: тип и количество через пробел (в алфавитном порядке типов).

В Отеле все комнаты пронумерованы числами длины \(n\) (возможно, с ведущими нулями). Как и заведено во всех отелях, при заселении Вам выдали ключ, на котором написан номер, также состоящий из \(n\) цифр (возможно, с ведущими нулями).

В Отеле ключ открывает комнату, только если выполнено следующее условие. Для каждого \(1 \le i < n\), сумма \(i\)-й и \((i+1)\)-й цифры номера комнаты должна быть равна \(i\)-й цифре ключа по модулю 10. Помимо этого, последняя цифра ключа должна быть равна сумма первой и последней цифры номера комнаты по модулю 10.

Найдите все номера комнат, которые открывает имеющийся у Вас ключ.

Формат входных данных
На первой строке дано число \(n\) (\(2 \le n \le 100\,000\)) — количество цифр в номерах комнат.

Во второй строке написан номер ключа, гарантируется, что это строка длины \(n\), состоящая только из цифр.

Формат выходных данных
На первой строке выведите количество комнат, открываемых ключом.

На каждой следующей строке выведите каждый из номеров этих комнат, по одному номеру в строке. Каждый номер комнаты должен представлять собой строку длины \(n\), состоящую только из цифр.

 

Поясним второй пример. Ключ с номером 25575 открывает комнату 57870 так как: \[2 = (5 + 7) \mod 10\] \[5 = (7 + 8) \mod 10\] \[5 = (8 + 7) \mod 10\] \[7 = (7 + 0) \mod 10\] \[5 = (0 + 5) \mod 10\]

Можно проверить аналогичные равенства и для комнаты 02325. Утверждается, что больше никакие комнаты этим ключом открыть нельзя.

Дана блок-схема алгоритма F(A, B)

Найдите такую пару целых положительных чисел A и B (известно, что B > 1), чтобы вызов F(A, B) вернул число 1594323. Если таких пар существует несколько, найдите ту, у которой максимальное значение A. В ответе укажите через пробел сначала значение A и затем значение B.



 

Дана блок-схема алгоритма F(A, B)

Найдите такую пару целых положительных чисел A и B (известно, что B > 1), чтобы вызов F(A, B) вернул число 2097152. Если таких пар существует несколько, найдите ту, у которой максимальное значение A. В ответе укажите через пробел сначала значение A и затем значение B.



 

Часть 1: Функция «Здание»

Напиши функцию building(width, height, floors, color), которая рисует здание с окнами.

Параметры функции:

  • width — ширина здания
  • height — высота здания
  • floors — количество этажей (рядов окон)
  • color — цвет здания

Как выглядит здание

    ┌────────────┐
    │  ■■    ■■  │  ← этаж 3
    │  ■■    ■■  │  ← этаж 2
    │  ■■    ■■  │  ← этаж 1
    └────────────┘
    ↑
    черепашка начинает тут (левый нижний угол)

Шаг 1: Запоминаем начальную позицию

Перед рисованием сохрани координаты черепашки:

base_x = xcor()
base_y = ycor()

Шаг 2: Рисуем здание

Закрашенный прямоугольник размером width × height цвета color.


Шаг 3: Вычисляем размер окон
window_width = width / 5
window_height = height / (floors * 2)

Шаг 4: Рисуем окна

На каждом этаже по 2 окна.  Используйте данный фрагмент для рисования окон, добавив нужные строки

# floor — номер этажа (0, 1, 2...), window — номер окна на этаже (0 или 1).
# Рисуем окна по этажам
for floor in range(floors):   # проходим по этажам
    for window in range(2):   # проходим по окошкам на этаже
        # Определяем позицию окна
        x = base_x + width / 6 + window * (width / 2)
        y = base_y + window_height / 2 + floor * (height / floors)
        
        # Переходим к окну (в точку (x, y))
        # Этот код напишите сами! 
        # не забудьте поднять перо перед переходом в точку и после перехода опустить

        # Рисуем жёлтое окно
        fillcolor("yellow")
        begin_fill()
        # напишите код рисования квадрата со стороной window_width
        
        end_fill()


В конце функции поднимите перо черепашки! Протестируйте функцию на одном здании! Затем приступайте к части 2.


### Схема расположения окон
    ┌─────────────────────────┐
    │                         │
    │   ■■            ■■      │  floor = 1
    │                         │
    │   ■■            ■■      │  floor = 0
    │   │             │       │
    └───│─────────────│───────┘
    ↑   │             │
 base_x │             └── base_x + width/6 + width/2
        │
        └── base_x + width/6

 


Часть 2: Рисуем улицу

После функции напиши основную программу, которая рисует улицу с  четырьмя зданиями в ряд.

Создай четыре списки по таблице ниже и используй их при рисовании улицы.

i widths[i] heights[i] floors_list[i] colors[i]
0 60 120 4 "gray"
1 100 80 2 "beige"
2 50 150 5 "lightblue"
3 80 100 3 "pink"


Первое здание начните рисовать с точки (-300, -200) 
После рисования одного здания изменяйте положение Черепашки по оси x:
x = x + widths[i] + 10

Нарисуйте цветной рисунок из трёх дуг (каждая дуга это полуокружность - угол 180 градусов)

  1. Начало в (0, 0).
  2. Фиолетовая дуга радиусом 150 (рисуется вверх вправо).
  3. Желтая дуга радиусом 100.
  4. Зеленая дуга радиусом 50.
  5. Жёлтая и зеленая дуги находятся внутри фиолетовой так как показано на рисунке

У каждой дуги цвет контура и цвет заливки одинаковый

Совет директоров хочет выйти на новый рынок в Китае. Для этого они запросили информацию по 3 крупнейшим компаниям на этом рынке с целью их покупки. Ваша задача — проанализировать эти компании и определить, какая из них принесет наибольшую прибыль (в млн $) через 5 лет, предполагая, что темпы роста капитала не изменятся.
Название Капитал, млн $ Ежегодный прирост капитала за последние 5 лет, % Доля прибыли от капитала, %
Engine Motors 15 5 4
Speed Cross 18 3 6
Fast Fuel 10 6 7

Выберите верное название компании:
  1. Engine Motors
  2. Speed Cross
  3. Fast Fuel
bool-06#67798

Секретный уровень открывается, когда пройдены не менее 10 основных уровней (levels_passed), но не 15. Выбери правильное условие.

1. levels_passed > 10 and levels_passed != 15
2. levels_passed >= 10 and levels_passed <= 15
3. levels_passed >= 10 and levels_passed != 15
4. levels_passed > 10 or levels_passed < 15
bool-05#67797

Команда побеждает, если набрала больше 90 очков (our_points) ИЛИ очков противника (enemy_points) меньше 60. Выбери верное условие.

1. our_points > 90 and enemy_points < 60
2. our_points > 90 or enemy_points < 60
3. our_points >= 90 or enemy_points <= 60
4. our_points != 90 or enemy_points == 60
bool-04#67796

Каток открыт для детей от 7 до 14 лет включительно. Выбери правильное условие, чтобы проверить, может ли ребенок с возрастом age пойти на каток.

1. age > 7 and age < 14
2. age >= 7 and age <= 14
3. age >= 7 or age <= 14
4. age == 7 and age == 14
bool-02#67794
Робот-песик Баркод весело виляет хвостом, когда его батарея заряжена больше чем на 50%, он находится в режиме "игра" ИЛИ получил команду "гулять.

Какое условие проверит, что Баркод виляет хвостом?

1. battery > 50 and mode == "play" or command == "walk"
2. battery > 50 and (mode == "play" or command == "walk")
3. battery > 50 or mode == "play" and command == "walk"
bool-01#67793
Волшебный кристалл светится только когда загаданное число (x) положительное, четное и делится на 3. 

Выберите верное логическое выражение:
  1. x > 0 and x % 2 == 0 and x % 3 == 0
  2. x > 0 or x % 2 == 0 or x % 3 == 0
  3. x > 0 and x % 2 == 0 or x % 3 == 0
В строке содержатся теги в угловых скобках. Найдите самую длинную последовательность, начинающуюся с < и заканчивающуюся >.

Формат входных данных
На вход подается одна строка. Строка содержит печатаемые ASCII-символы. В строке обязательно есть хотя бы одна подпоследовательность начинающаяся с < и заканчивающаяся >.

Формат выходных данных
Выведите ответ на задачу.


Примеры
Входные данные
text <tag>content</tag> text

Выходные данные
<tag>content</tag>
✓ 3✗ 1900средняяВойти и решать
В заданном тексте, состоящем не более чем из 100 строк, найдите все даты в формате DD-MM-YYYY. Выведите эти даты в столбик в порядке их встречаемости в тексте. Валидность даты проверять не нужно. 

Формат даты: DD-MM-YYYY, где:

  • DD - день (две цифры, 01-31)

  • MM - месяц (две цифры, 01-12)

  • YYYY - год (четыре цифры, обычно 0000-9999)

  • Разделитель: дефис "-"



Формат входных данных
В первой строке записано натуральное число N - количество строке текста. Далее, идут сами строки текста.

Формат выходных данных
Выведите все искомые даты, каждая дата в отдельной строке.
Выберите правильный вариант ответа.

Чем занимается функция input()?  
  1.   выводит текст на экран  
  2.   считывает данные с клавиатуры  
  3.   преобразует значения  
  4.   создаёт переменную  
Поделиться
Класснуть