- Исполнители
-
Обучение
Учебный центр Python Запускаемые примеры, NumPy, pandas и другое Учебный центр C и C++ Указатели, память, STL и современный C++ Учебный центр C#Основы C#, ООП, LINQ, async и упражнения .NET Алгоритмы на Python Поиск, сортировка, рекурсия и визуализация O(n) Алгоритмы на C и C++ Сравнение реализаций на C и C++
- Задачи
Механизм внимания не учитывает порядок слов, поэтому оригинальный Transformer добавляет к эмбеддингу каждого токена позиционное кодирование. Для позиции pos и измерения j (оба с 0) в модели размера d_model:
- 'чётное j: PE[pos][j] = sin(pos / 10000^(j / d_model))'
- 'нечётное j: PE[pos][j] = cos(pos / 10000^((j - 1) / d_model))'
Так, измерения 0 и 1 имеют общую частоту, измерения 2 и 3 — следующую, и так далее.
Реализуйте positional_encoding(length, d_model).
Входные данные
length: Число позиций (от 0 до length - 1).
d_model: Размер эмбеддинга.
Выходные данные
Верните матрицу length × d_model.
Ограничения
1 ≤ length ≤ 200, 1 ≤ d_model ≤ 128
Примеры
Пример 1
Ввод:
length = 2
d_model = 4
Ожидаемый вывод:
[
[0.0, 1.0, 0.0, 1.0],
[0.841471, 0.540302, 0.01, 0.99995]
]
Пояснение
Позиция 0 — это sin(0) = 0 и cos(0) = 1 для каждой пары: [0, 1, 0, 1]. Позиция 1 использует частоты 1 и 1 / 10000^(2/4) = 0.01: [sin 1, cos 1, sin 0.01, cos 0.01] ≈ [0.841471, 0.540302, 0.01, 0.99995].
Пример 2
Ввод:
length = 3
d_model = 1
Ожидаемый вывод:
[
[0.0],
[0.841471],
[0.909297]
]
Пояснение
При одном измерении используется только sin(pos): [[0], [0.841471], [0.909297]].
Ссылки
-
Пример 1 Не запущеноВвод:
length = 2 d_model = 4Ожидаемый вывод:[ [0.0, 1.0, 0.0, 1.0], [0.841471, 0.540302, 0.01, 0.99995] ]Ваш вывод -
Пример 2 Не запущеноВвод:
length = 3 d_model = 1Ожидаемый вывод:[ [0.0], [0.841471], [0.909297] ]Ваш вывод
При отправке также выполняются ещё 4 скрытых теста.
Онлайн-компилятор и отладчик Python
Пишите, запускайте и отлаживайте Python онлайн. Используйте точки останова и пошаговое выполнение в серверном режиме — без установки.
🚀 4,279,704 всего выполнений (104 в этом месяце)
Практикуйте Python на задачах
Решайте задачи прямо в редакторе: запускайте тесты, отправляйте решение и получайте AI-рецензию.
🐍 Об онлайн-компиляторе Python
Онлайн-компилятор и интерпретатор Python от CodeUtility позволяет писать, запускать и тестировать код прямо в браузере — без установки и настройки. Он работает в безопасной песочнице и поддерживает реальные версии Python от 3.10 до 3.13.
Подходит для первого знакомства с Python, быстрой проверки сниппетов или отладки логики - инструмент предоставляет быстрый и не отвлекающий редактор кода. Экспериментируйте свободно и мгновенно смотрите результат в встроенной консоли.
Идеально для новичков, студентов и разработчиков, которым нужна облегчённая онлайн‑IDE для практики или быстрого прототипирования.
Больше, чем средство запуска кода
Используйте в одном исполнителе многофайловый редактор, изолированный терминал выполнения, библиотеки для выбранной среды, постоянные рабочие пространства, общий доступ и совместную работу в реальном времени.
Как пользоваться этим исполнителем?
Выберите среду выполнения, откройте или создайте файл, напишите код и нажмите «Запустить». Результат появится в терминале. Пользователи, вошедшие в систему, могут хранить файлы в рабочем пространстве, устанавливать библиотеки и совместно работать через общие ресурсы.
- Выберите версию и отредактируйте текущий файл или откройте другой файл рабочего пространства.
- Запустите код, при необходимости введите данные в терминале и просмотрите сохранённую историю запусков.
- Используйте библиотеки, инструменты рабочего пространства, общий доступ и чат, когда для задачи требуется несколько фрагментов кода.
💡 Основы Python и примеры, которые можно попробовать выше
1. Объявление переменных и констант
Python - язык с динамической типизацией, поэтому типы заранее объявлять не нужно. Встроенного ключевого слова для констант нет, но по соглашению константы пишут ПРОПИСНЫМИ буквами.
# Переменные
x = 10
pi = 3.14
name = "Алиса"
is_active = True
# Константы (по соглашению)
MAX_USERS = 100
APP_NAME = "CodeUtility"
# Константы всё ещё можно переопределить (не запрещено)
MAX_USERS = 200 # ⚠️ Технически допустимо, но не рекомендуется
2. Условные конструкции
Управляйте логикой с помощью блоков if, elif и else. В Python 3.10+ можно также использовать match-case как альтернативу switch-case.
# Обычный if-elif-else
x = 2
if x == 1:
print("Один")
elif x == 2:
print("Два")
else:
print("Другое")
Альтернатива: match-case (Python 3.10+)
# Требуется Python 3.10+
x = 2
match x:
case 1:
print("Один")
case 2:
print("Два")
case _:
print("Другое")
3. Циклы
for используется для перебора последовательностей, while выполняется, пока условие истинно.
for i in range(3):
print(i)
count = 3
while count > 0:
print(count)
count -= 1
4. Списки
Списки - упорядоченные изменяемые коллекции. Доступ к элементам осуществляется по индексу.
fruits = ["apple", "banana"]
print(fruits[0])
print(len(fruits))
5. Операции со списками
Добавляйте, удаляйте, берите срезы и переворачивайте списки. Генераторы списков позволяют компактно итерироваться.
fruits.append("cherry")
fruits.insert(1, "kiwi")
fruits.remove("banana")
fruits.pop()
print(fruits[1:3])
print(fruits[::-1])
squares = [x*x for x in range(5)]
6. Ввод/вывод в консоли
Используйте input() для чтения ввода и print() для вывода.
Можно напечатать несколько строк с помощью \n (символ новой строки) или вызвать print() несколько раз.
# Чтение ввода
name = input("Введите ваше имя: ")
print("Привет", name)
# Печать нескольких строк
print("Строка 1\nСтрока 2\nСтрока 3")
# Или используйте несколько вызовов print
print("Строка A")
print("Строка B")
print("Строка C")
7. Функции
Функции помогают организовывать код и переиспользовать его. Используйте параметры и возвращаемые значения.
def greet(name):
return "Привет " + name
print(greet("Алиса"))
8. Словари
Хранят пары ключ‑значение. Ключи уникальны, значения доступны по ключам.
person = {"name": "Боб", "age": 25}
print(person["name"])
print(person.get("email", "Не указано"))
9. Обработка исключений
Используйте try и except, чтобы корректно перехватывать и обрабатывать ошибки.
try:
x = 1 / 0
except ZeroDivisionError:
print("Нельзя делить на ноль")
10. Файловый ввод/вывод
Читайте и записывайте файлы с помощью open().
with open("data.txt", "w") as f:
f.write("Привет, мир")
with open("data.txt", "r") as f:
print(f.read())
11. Работа со строками
У строк Python есть мощные методы: strip(), replace() и split().
text = " Привет, мир "
print(text.strip())
print(text.upper())
print(text.replace("Привет", "Здравствуй"))
print(text.split())
12. Классы и объекты
Определяйте переиспользуемые шаблоны с помощью классов. Используйте __init__ для инициализации объектов.
class Person:
def __init__(self, name):
self.name = name
def greet(self):
return "Привет, я " + self.name
p = Person("Алиса")
print(p.greet())
🐞 Как отлаживать Python-код онлайн
Онлайн-отладчик Python помогает находить логические ошибки без установки Python или IDE. Отладка выполняется в серверном режиме на Python 3.10–3.13.
- Выберите серверную версию Python в меню среды выполнения.
- Нажмите рядом с номером строки, чтобы установить одну или несколько точек останова.
- Выберите Debug, чтобы запустить программу и остановиться в первой подходящей точке.
- Проверьте текущую строку и переменные, затем используйте Continue, Step Over, Step Into или Step Out.
- Выберите Stop, чтобы завершить сеанс отладки.
Начните с небольшого воспроизводимого примера и поставьте точку останова перед местом, где значение становится неожиданным. Серверный режим также поддерживает файлы workspace и установленные библиотеки.