Заполнение матрицы по спирали в Python

Задача:

Выведите таблицу размером n×n, заполненную числами от 1 до n2 по спирали, выходящей из левого верхнего угла и закрученной по часовой стрелке.

Решение:

Первая строка матрицы заполняется отдельно. Далее запускается цикл, состоящий из четырех блоков с циклами for (вниз, влево, вверх, вправо). Для хранения последней заполненной ячейки используются переменные j и i (номер строки и столбца). Направление — уменьшение или увеличение на 1 значения i или j. Количество шагов в нужном направлении контролируется при помощи переменной n (изначально в нее заносится размер матрицы). После завершения четырех блоков (полный виток), от n просто отнимается 2 и весь цикл запускается сначала, что позволяет перейти и заполнить нужный внутренний виток. Условие выхода из цикла — счетчик заполненных ячеек (переменная count) становится равным количеству ячеек в матрице.

Составление таблицы, представленной ниже, помогло составить универсальный алгоритм движения по виткам матрицы произвольного размера (в основе только переменная n)

Визуализация движения по виткам матрицы

Код на Python:

n = int(input())  # размер матрицы
a = [[0] * n for i in range(n)]  # создание матрицы нужного размера, заполнена 0
count = 0  # количество заполненных ячеек  
for i in range(n):   # заполнение 1 строки
    count += 1
    a[0][i] = count
j = 0   # указываем последнюю заполненную ячейку
i = n-1
n -= 1  # устанавливаем размер 1 блока 1 витка
while len(a)**2 != count:  #условие выхода из цикла
    for k in range(n):  #движение вниз
        j += 1
        count += 1
        a[j][i] = count  # заполнение матрицы
    for k in range(n):  #движение влево
        i -= 1
        count += 1
        a[j][i] = count   
    for k in range(n-1):  #движение вверх
        j -= 1
        count += 1
        a[j][i] = count
    for k in range(n-1): #движение вправо
        i += 1
        count += 1
        a[j][i] = count
    n -= 2    # обеспечиваем переход на внутренний виток
for i in range(len(a)):  #вывод полученной матрицы
    for j in range(len(a[i])):
        print(a[i][j], end=' ')
    print()

Модификация и вывод двумерной матрицы в Python

Напишите программу, на вход которой подаётся прямоугольная матрица в виде последовательности строк, заканчивающихся строкой, содержащей только строку «end» (без кавычек)

Программа должна вывести матрицу того же размера, у которой каждый элемент в позиции i, j равен сумме элементов первой матрицы на позициях (i-1, j), (i+1, j), (i, j-1), (i, j+1). У крайних символов соседний элемент находится с противоположной стороны матрицы.

В случае одной строки/столбца элемент сам себе является соседом по соответствующему направлению.

Ответ:

Сначала создается пустая матрица а. Далее в бесконечном цикле считываются строки чисел в переменную str, разделяются и в виде массива row добавляются в матрицу. Если строка равна значению ‘end‘, ввод завершается, запускается цикл for. При помощи вложенного цикла выводится на печать новая матрица, все вычисления происходят непосредственно в блоке print.

Чтобы не было выхода за пределы матрицы (в последней строке) используется конструкция i-len(a)+1, которая позволяет «зациклить» столбцы матрицы — последний элемент столбца при расчете суммирует предыдущий и первый (по условию).

Код Python:

a = []
while True: 
    str = input()
    if str == 'end':
        break
    row = str.split()    
    for i in range(len(row)): # преобразование элементов в число
        row[i] = int(row[i])
    a.append(row)
for i in range(len(a)):    # старт вывода новой матрицы
    for j in range(len(a[i])):
        print(a[i-1][j] + a[i-len(a)+1][j] + a[i][j-1] + a[i][j-len(a[i])+1], end=' ')
    print()

Вывод позиции числа в строке. Python

Напишите программу, которая считывает список чисел lst из первой строки и число x из второй строки, которая выводит все позиции, на которых встречается число x в переданном списке lst.

Позиции нумеруются с нуля, если число x не встречается в списке, вывести строку «Отсутствует» (без кавычек, с большой буквы).

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

Ответ:

В цикле перебираем все элементы строки sp, сравнивая с числом ch. При совпадении сразу вывод на печать. Переменная log для фиксации совпадения, если значение остается False — выводится ‘Отсутствует’.

Код в python:

sp = [int(i) for i in input().split()]  
ch = int(input())
log = False   #наличие числа в строке 
for i in range(len(sp)):  
    if sp[i] == ch:
        print(i, end=' ')
        log = True
if log == False:
    print ('Отсутствует')

Вывод последовательности чисел

Напишите программу, которая выводит часть последовательности 1 2 2 3 3 3 4 4 4 4 5 5 5 5 5 … (число повторяется столько раз, чему равно). На вход программе передаётся неотрицательное целое число n — столько элементов последовательности должна отобразить программа. На выходе ожидается последовательность чисел, записанных через пробел в одну строку.

dlina = int(input())
tek_ch = 1   #хранение текущего числа 
i = 1
kol = 0   #номер позиции в последовательности одного числа
while i < dlina + 1:
    if tek_ch == kol + 1:   #условие перехода к след. числу
        print(tek_ch, end=' ')
        i += 1
        kol = 0
        tek_ch +=1
        continue
    else:   
        print(tek_ch, end=' ')
        kol += 1
    i += 1

Считывание чисел с консоли в Python

Напишите программу, которая считывает с консоли числа (по одному в строке) до тех пор, пока сумма введённых чисел не будет равна 0 и сразу после этого выводит сумму квадратов всех считанных чисел.

Гарантируется, что в какой-то момент сумма введённых чисел окажется равной 0, после этого считывание продолжать не нужно.

ch =  int(input())
sum_kv = 0  #переменная для хранения суммы
sum_kv += ch * ch
sum = 0
while True:   # используем бесконечный цикл
  sum += ch
  if sum == 0:  
        print(sum_kv)
        break   #печать результата и выход из цикла
  else:
        ch =  int(input())
        sum_kv += ch * ch

Скрипач Эмир в парке Галицкого

Классическая музыка в краснодарском парке

В Windows 10 появится встроенный «убийца» Zoom

Компания Microsoft приняла решение интегрировать в Windows 10 собственную утилиту для видеоконференций. Новый функционал уже доступен в бета-версии ОС. Многие бета-тестеры уже окрестили новое приложение «убийцей Zoom».

Напомним, Zoom – популярная программа для проведения полноценных видеоконференций. Первоначально предназначалась для корпоративного сектора, но после начала пандемии им активно начали пользоваться рядовые пользователи для работы и учебы в удаленном режиме.

Новая программа, получившая название Meet Now, позволяет инициировать новую конференцию без регистрации. Достаточно создать новую ссылку при помощи специальной иконки в области уведомлений и передать ее всем участникам. Единственное ограничение – на всех ПК должен быть предварительно инсталлирован Skype (также принадлежит Microsoft).

Авторизоваться в Skype не обязательно, достаточно наличия программы. Также можно использовать веб-версию мессенджера, но только через обозреватель Edge. Во время конференции всем участникам доступен весь функционал Skype.

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

Стоит отметить, что есть и другие интернет-сервисы, позволяющие быстро создать новую конференцию без использования мессенджеров. В июне 2020 года начал работу сервис «Яндекс.телемост», использующий аналогичный алгоритм создания новой конференции (при помощи ссылки, которую необходимо просто разослать участникам).

В апреле 2020 года аналогичный проект запустила компания Mail.ru Group («Видеозвонки Mail.ru»). Также в апреле аналогичный функционал стал доступен пользователям Skype.

В России также существует компания TrueConf, которая занимается разработкой систем для видеоконференций. В марте 2020 года компания присоединилась к борьбе с коронавирусом, предоставив возможность школьным учреждениям СНГ и России бесплатно использовать комплекс TrueConf Server.

Инновации с человеческим лицом

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

В июле 2019 американский стартап Quilt запустил приложение, которое выполняет функцию фасилитационной платформы для женщин-профессионалов. Оно облегчает процесс поиска единомышленников и организации событий в домах пользовательниц. Небольшие группы женщин могут собираться вместе для того, чтобы делиться опытом в различных сферах жизни и бизнеса, начиная от привлечения инвестиций и заканчивая преодолением зависимости от социальных медиа.

Пользователи Quilt могут с помощью приложения покупать билеты на события (стоимостью $12-30), а человек, который организует встречу, получит часть этих денег. Также есть возможность приобрести абонемент стоимостью $39 в месяц — и посещать все события, которые вам интересны. Женщины, которые познакомились на подобных встречах, потом могут продолжать общаться с помощью приложения.

Еще одна платформа — Sidekick — позволяет туристам, которые посещают Южную Корею, общаться с местными жителями и получать помощь и рекомендации в режиме реального времени. Пользователь может выбрать канал, через который будет происходить общение (LINE, WhatsApp, Messenger или WeChat) — и получить доступ к советам относительно шоппинга, ресторанов, правил этикета и культурных особенностей.

Местные жители, которые предоставляют эти советы, доступны с 7 утра до 5 вечера и говорят на корейском, английском или японском языке (можно выбрать, на каком именно вы с ними будете общаться). Пользование приложением можно покупать на один, три или пять дней, цены начинаются от $20.

В июле этого года на северном побережье Нового Южного Уэльса в Австралии состоялись испытания программы беспилотных микроавтобусов. Такая автоматизированная машина, получившая название Busbot, в течение 22 недель будет обслуживать пожилых людей, нуждающихся в транспортировке. Пользователи вызывают сервис со своего мобильного телефона через приложение для iOS или Android, вводят пункт назначения — и получают указания, как добраться до места, где их заберет микроавтобус.

Поездка организуется таким образом, чтобы избежать лишних остановок. Беспилотный автомобиль выполняет до 30 путешествий в день, а сервис Busbot является бесплатным в течение периода испытания. Инициатива в создании этого проекта принадлежит правительству, а партнерами выступили американский стартап Via, автобусный оператор Busways, транспорт Нового Южного Уэльса и производитель автономных автомобилей Easymile.

Chrome на Андроид получит функцию ограничения использования сайтов

Ранее сообщалось, что функция Digital Wellbeing появится в Хром в Андроид 10 Q. И теперь стало известно, как будет выглядеть эта интеграция. В недавнем обновлении Хром Канари был добавлен флаг, который позволяет обмениваться статистикой использования с Digital Wellbeing, а также позволяет устанавливать ограничения для отдельных веб-сайтов.

Соответствующий флаг chrome://flags/#use-stats можно найти в браузере для Андроид 10 Q. После его запуска и перезагрузки программы необходимо перейти на панель мониторинга DW, и в Канари вы увидите кнопку с заголовком «Показать веб-сайты, которые вы посещаете». После нажатия вы увидите всплывающее окно, объясняющее данную функцию.

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

Instagram планирует вводить монетизацию для IGTV

Instagram – это одна из социальных платформ, которая не имеет монетизации. То есть, сама социальная сеть никак не поощряет пользователей к созданию контента. Совсем другое дело, когда за свои старания человек получает вознаграждение. И чем лучше он старается – тем больше может получить. В настоящее время единственными видами доходов на платформе являются реклама или продажи. Для первого варианта необходимо быть довольно популярным блогером и лидером мнений, а для второго – иметь руки «из правильного места» и голову на плечах. В будущем, однако, заработок в Instagram может стать более легким.

На конференции Instagram, которая проходила в Австралии, было упоминание о монетизации роликов IGTV. Это значит, что в ленте появятся рекламные объявления, однако подробности, к сожалению, пока что отсутствуют.