Python

Февраль 2025

  1. Задача
# Найти все пары чисел из списка, сумма которых равна заданному числу. 
# В исходном списке повторов нет. 
 
# numbers = [2, 5, 7, 1, 9, 1253436263, 3, 4, 21, 8, 6]  
# k = 7 
# -> [(2, 5), (1, 6), (3, 4)] 
  
# numbers = [5, 1, 4, 7, 6] 
# k = 8 
# -> [(7, 1)] 
 
#set чтобы хранить просмотренные числа  
#1- пройдем по списку и для каждого числа num проверяем есть ли в увиденных второе число k-num 
#2- если есть добавим в ответ 
#3- добавляем текущее число в просмотренные чтобы не проверять снова  
 
def find_pairs(numbers): 
    seen = set() 
    result = [] 
     
    for num in numbers: 
        pair = k-num  
         
        if pair in seen: 
            result.append(pair,num) 
         
        else: 
            seen.add(num) 
    return result 
 
 
 
 
numbers = [2, 5, 7, 1, 9, 1253436263, 3, 4, 21, 8, 6]  
k=7 
  1. Задача
# Есть двумерный массив целых чисел, в каждой ячейке записан номер цвета. 
# На вход подаются координаты точки и её новый цвет. Надо перекрасить смежную с данной точкой область также в новый цвет. 
 
# 0 1 1 3 
# 4 3 3 2 
# 0 3 2 3 
# 4 3 1 2 
 
# (1,1) -> 4 
 
# 0 1 1 3 
# 4 4 4 2 
# 0 4 2 3 
# 4 4 1 2 
 
#O(n*m) 
#O(1)  
 
# 3 3 
# 3 3 
# (0,0) -> 4 
 
from collections import deque  
def flood_fill(grid, x, y, new_color): 
    rows, cols = len(grid), len(grid[0]) 
    original_color = grid[x][y] 
     
    if original_color == new_color: 
        return  
     
    
    queue = deque([(x, y)]) 
    grid[x][y] = new_color 
     
    directions =. [(-1,0),(1,0),(0,-1),(0,1)] 
     
    while queue: 
        i,j = queue.popleft() #элемент из очереди 
         
         #перекраска 
         
        for di, dj in directions: 
            ni,nj = i + di, j + dj 
            if 0 <=ni < rows and 0 <= nj < cols and grid[ni][nj] == original_color: 
                grid[ni][nj] = new_color 
                 
                queue.append((ni,nj)) 
                 
         
            grid = [ 
                    [0, 1, 1, 3], 
                    [4, 3, 3, 2], 
                    [0, 3, 2, 3], 
                    [4, 3, 1, 2] 
                ] 
             
            flood_fill(grid,1, 1, 4) 
 
            for row in grid: 
                print(row)