JustCaptain kod-buduschego
fe80956f3715cc5bb12053880d3a19c417fa9f37
Перейти к файлу
Код
kod-buduschego Python 2025-20263.5. Функция enumeratepracticeschatgpttask_8.py
anc update c70a58f 8 октября 2026 г.
task_8.py
"""
8. Уровень «подумать»

Дан список:

Выведи индекс и число только для идеальных квадратов, которые делятся на 2.

Ожидаемый вывод:

0 4
2 16
5 36

import time
from math import sqrt

nums: list[int] = [9, 4, 16, 25, 30, 36, 49]
for id, num in enumerate(nums):
    test_num: int | float = num

    while test_num % 2 == 0:
        test_num = test_num / 2
        if test_num == 1.0:
            print(id, num)

# x = {2: {16:4}}

for id, num in enumerate(nums):
    if int(sqrt(num)) % 2 == 0:
        print(id, num)


data: dict[int, dict[int, int]] = {2: {}}
for number in range(150):
    data[2].update({number**2: number})

print(data)
"""


def generate(num: int) -> dict[int, dict[int, int]]:
    data: dict[int, dict[int, int]] = {2: {}}
    for n in range(num + 1):
        data[2].update({n**2: n})
    return data


def solution(nums: list[int]) -> list[tuple[int, int]]:
    result: list[tuple[int, int]] = []
    max_num: int = max(nums)
    table: dict[int, dict[int, int]] = generate(num=max_num)
    print(table)
    for id, num in enumerate(nums):
        sqrt: int | None = table[2].get(num)
        if sqrt is not None and sqrt % 2 == 0:
            result.append((id, num))
    return result


print(solution(nums=[74, 42, 5, 31, 4, 17, 49, 30, 36, 144, 155, 125, 16]))