Ситуация с русскими из Гугл, которые задали гробы, напомнила старую мудрость: Если хочешь, чтобы тебя надурили заграницей или оказали говняные услуги - ищи земляков )))
вторую задачу можно решить за сложность 0(n^2) сложность. Можно заметить что любая инверсия в квадрате 2х2 изменяет количество 0/1 на 0 или 2 (это инвариант). Это значит что если хотя бы в 1 квадрате 2на2 есть нечетное число 0/1, то матрицу нельзя целиком перевести во все 0 или единицы. Проверка возможности заключается в проверке количество 0 в каждом из квадратов 2х2 сложность этого 0(n^2) . Алгоритм правильных инверсий тоже несложно придумать (если во всех квадратах 2х2 количество 0/1 четно) Начнем с левого верхнего квадрата перевернем его например во все 1 (это всегда можно сделать при выполнении условия выше). Далее перейдем влево к следующему квадрату он либо уже правильный, либо нужно сделать одну инвестицию столбца и т.д. Далее спускаемся на одну строку ,здесь возможно потребуется инвертация строки. Далее все квадраты в этой же строке должны быть правильными, иначе не будет выполнено условие обозначенное вначале, далее повторяем спуски на нацдно строку пока не дойдем до конца. Всего будет 2n итераций в которых мы сделаем n изменений символов, т.е. сложность также 0(n^2)
пусть есть матрица (пишу по строкам) 001 100 001, матрица 2 на 2 в левом верхнем углу : (00)(10). Однако если преобразовать вторую строку, а потом третий столбец - получаем матрицу нулей.
Алгоритм там тривиальный, после того как мы понимаем, что если матрицы 2×2 вида (1,0)х(0,0) без ограничения общности не сущствуют, то тогда строки(столбцы) матрицы либо повторяются (например по отношению к первой), либо являются обратными к ней. Таким образом, первым циклом надо обратить все строки, который обратны первой, а уже второй цикл проходит по столбцам с 0 или 1 и приводит все к 1/0 матрице.
со второй задачей вроде все достаточно просто, если на курс математики опираться. достаточно найти определитель исходной матрицы. если он не будет равен 0, то получить нужную матрицу можно. потому что в этом случае мы сможем найти единичную матрицу умножением исходной на обратную. поправьте меня, если я ошибаюсь.
0 0 0 0 определитель 0, получить матрицу можно 1 0 0 1 определитель 1, получить матрицу так же можно а математически задача действительно простая - инвертирование i строки это сумма с матрицей, у которой i строка состоит из 1, в остальных местах 0 если рассматривать матрицу над полем из 2 элементов F2. Tо есть, нужно понять, лежит ли данная матрица в F2- линейной оболочке таких матриц, где строка или столбец состоят из единиц
все верно, я тупанул, такое же решение расписал, но проверял вручную существование единичной матрицы. Достаточно проверить определитель матрицы и единственный вырожденный случай со всеми 0. Алгоритм за О(n^2) получается работает, что очень быстро.
2 задача про матрицу. Начинаем проверять матрицу n*n с а[0.0] Цикл k=0 до (n-1) Если а[0.k]=0, инвертируем столбец k во всей матрице. Если k>=2, проверяем элементы столбца k от а[1.k] до а[k-1.k] На первом же элементе равном 0, заканчиваем обход и выдаём сообщение о невозможности приведения матрицы. Если все элементы =1. То идём дальше. Если а[k.0] =0 инвертируем строку k во всей матрице. Если k>=2, проверяем элементы строка k от а[k.1] до а[k.k] На первом же элементе равном 0, заканчиваем обход и выдаём сообщение о невозможности приведения матрицы. На второй итерации проверяется и, если нужно, инвертируются столбец и строка k. И так далее, пока не дойдём до матрицы n*n. Идея в том, что если мы собрали матрицу k*k, то все строки и столбцы этой матрицы мы уже не можем инвертировать. После приведения элемента а[0.k+1] к 1, в столбце (k+1) мы сможем изменить только элемент а[k+1.k+1], инвертировав строку а[k+1.*] при необходимости приводить его значение к 1. Поэтому столбец проверяем на единицы до этого элемента. После приведения элемента а[k+1.0], мы уже ничего не сможем поменять в матрице (k+1)*(k+1). Поэтому проверяем всю строку. Вроде работает. В примере матрица инвертируется. Если поменять последний элемент в первой строке, вылетит по столбцу. Если последний элемент в первом столбце, то по строке. Пример кода в ответе к этому. Сильно не пинайте, я Python 3й день учу. :)
во второй задаче разве не работает такое решение? 1)замечаем, что порядок действий не влияет на результат - если инвертировать сначала строчку, потом столбец, это то же самое, что инверт крест без клетки перечесечения вне зависимости от порядка 2)разобьем все инверсии на два блока - сначала инвертируем сколько то строчек, потом сколько то столбцов 3)если после инвертирования нескольких столбцов получается матрица из нулей(или единиц), то до этого инвертирования матрица состояла из столбцов, таких, что внутри этого столбца одно и то же значение 4)в заданной матрице инвертируем нужные строки, чтобы первый столбец стал нулевым - это можно сделать единственным образом - если первый элемент строки 0, то строку не инвертируем, иначе инвертируем 5)после того, как сделали первый столбец нулевым, смотрим, верно ли, что оставшиеся столбцы заполнены одним и тем же числом, это да, то можно привести к нулевой, иначе нельзя если алгоритм верный, то сложность n^2
более явно приведу алгоритм 1)каждую строчку ксорим с ее первым элементом 1 0 1 1 -> 0 1 0 0 таким образом, первый столбец стал нулевым 2)дальше последовательно проверяем, что первая строка равна второй, потом что вторая строка равна третьей и тд, если все строки равны, то ответ True, иначе False
Было бы замечательно ссылку на тг канал где он нашел вакансию. Или ссылку на видео где он про нее говорит. Мы конечно и так найдем, но это займет время.
Тогда посложнее - Лутц с крысой на обложке. Двухтомник. Очень подробно и занудно. И Чистый_Python_Тонкости_программирования_для_профи - тоже с каким то грызуном в очках на обложке
я что-то не нашел ссылку на этот телеграм канал. Можете скинуть ее сюда плиз? Говорили также, что скинут похожие задачи на литкоде, но тоже не вижу ссылок
1 задача, рекурсией бы решил. Путь записывал бы как аргумент с типом list, есть по умолчанию у него значение ["/"], при переходе на другую ветку очищался бы путь со старой ветки не так сложно.
я примерно так же решила, вот немного плохого кода, но оно работает) def find_path(name = None, path = '', id_ = None): for i in _TREE: if i['name'] == name or (id_ is not None and i['id'] == id_): path = (f'/{i["name"]}') + path if i['p'] is None: return path return find_path(path=path, id_ = i['p']) return 'Not find!'
кто-нибудь может объяснить решение второй задачи или закинуть ссылку? Я не понял его алгоритма и как оно решает данную задачу. Как по мне логично решение Андрея, где проверять 1х1, потом 2х2, 3х3, и если какое-то из них нельзя получить все единички, то понятно что и матрицу большей размерности не получится получить со всеми 1. А его алгоритм с рекурсией и солюшн я вообще не понял. Или я тупой? )
@@AndyPronin кстати я решил его более математическим способом. Чистая линейная алгебра, странно что в гугле делают акцент на это. Получение матрицы из всех 1 == получение единичной матрицы. Это легко проверить инверсией последнего столбца и последней строки матрицы из 1. Рассматриваем n-1 матрицу. И так далее. В итоге получаем единичную матрицу. А здесь задача совсем простая. Из исходной матрицы нужно узнать можно ли получить единичную матрицу. Алгоритм следующий берем строку с 1 в первом столбце и ставим на самый верх, остальные делаем так, чтобы в первом столбце были 0 инверсией этой строки, если этот элемент равен 1. В итоге получаем матрицу [[1, ...], [0, ...], [0, ...], ...]. Дальше берем второй столбец и делаем так, чтобы позиция [1, 1] == 1, остальные 0. Если это удалось, то дальше делаем и так далее, пока не получим единичную матрицу. Если не удается такое провернуть на каком-то шаге, то значит невозможно получить единичную матрицу. А значит не получится и матрицу из всех 1.
@@comparison9436 Единичная матрица - матрица с единицами на главной диагонали. И не очень понятно, какая операция из линейной алгебры соответствует инвертированию строки.
@@AndyPronin он молод, для того, чтобы говорить с нэйтив спикером из гугла надо иметь хороший уровень языка (пожить в среде пару лет) обычный татарин из россии ну ему тяжко будет в любом случае, вспомни себя когда ты говоришь с таджиком - дак тут так же... хотя я способен говорить быстро - но это годы практики... и даже у меня не идеально, а,что уж говорить про инженера из гугла.
@@AndyPronin ты возьми и поговорим с ним на Английском с такой же скоростью как ты и говорил с ним на Русском, если он не сможет спокойно говорить - то причина ясна. Я тоже Андрюшенька не просто так в сбербанке работаю...
@@dieff_automation зачем нужен "идеальный" язык? если вас понимают, на ваш словарный запас никто обращать внимания не будет. нужно просто комфортно изъясняться. школьного курса английского с постоянной практикой вполне достаточно.
затрахался гуглить тг фанкинтервью, если есть люди владеющие ссылкой дайте пожалуйста, очень буду благодарен. самого парня не знаю, но манеры,жесты,мимика, лексика такая будто он иисус кодинга. короче мне крайне не импонируют подобные персонажи. но собственно это мои проблемы)
from random import randint class Matrix: def __init__(self, n): self.size = n self.ivalue = [[1]*n]*n self.value = self.ivalue def __str__(self): row_strings = list(map(lambda row: ",".join(str(val) for val in row), self.value)) return " ".join(row for row in row_strings) def inverse_row(self, i): assert i < self.size and i >= 0 self.value[i] = [0 if v == 1 else 1 for v in self.value[i]] return self.value def inverse_col(self, j): assert j < self.size and j >= 0 for i in range(self.size): new_row = list(self.value[i]) new_row[j] = 0 if new_row[j] == 1 else 1 self.value[i] = new_row return self.value def randomize(self, _from = 6, _to = 30): row_inverse_qty = randint(_from, _to) col_inverse_qty = randint(_from, _to) for i in range(_from, row_inverse_qty): self.inverse_row(randint(0, self.size - 1)) for i in range(_from, col_inverse_qty): self.inverse_col(randint(0, self.size - 1)) return self def full_inversion_algo(matrix: Matrix): """ O(n**2) complexity algo [inverse opertaions for row/col counted] where n is matrix.size. """ first_row = matrix.value[0] for i in range(1, matrix.size): if matrix.value[i] == first_row: continue else: matrix.inverse_row(i) if matrix.value[i] == first_row: continue else: raise Exception("Cannot be inverted") for i in range(matrix.size): if matrix.value[0][i] == 0: matrix.inverse_col(i) if __name__ == '__main__': m = Matrix(10).randomize() # test matrix generation print("~~~~~~~INITIAL MATRIX~~~~~~~", m, sep=" ") full_inversion_algo(m) print("~~~~~~~ALGO APPLIED MATRIX~~~~~~~", m, sep=" ")
Очень много жаргонных выражений и запинаний. О каких своих комуникативных супер способностя он пытается говорит? Может быть именно по этому ему в гугле и отказали, что его просто противно слушать... У меня не хватило терпения до смотреть это видео до конца... 🥴
Посмотрел как сериал, подписался. Андрей побольше таких интересных и открытых гостей как Руслан.
Постараюсь приглашать. Руслан ещё есть в пару видео
ПРОНИН любит делать гадости и мелкие пакости другим. Так и не повзрослел дятел стучащий по клаве.
Спасибо, Андрей! Очень интересно, смотрю, как сериал)
Рад, что нравится
Спасибо большое, помог найти уверенность в себе 😊
Вот ради этих видео я и подписан ))Спасибо за видео большое )
то ли еще будет. не переключайтесь
@@AndyPronin надеемся не придется долго ждать, видео про собес в организацию запрещенную на территорий РФ :p
@@luckytima2315 на следующей неделе постараюсь. Руслан задачки найдёт, кину их в комменты
31:14 видела пару месяцев назад похожую задачу из мат олимпиады, только там вместо нулей и единиц были белые-черные ячейки.
False - True в итоге)
Ситуация с русскими из Гугл, которые задали гробы, напомнила старую мудрость: Если хочешь, чтобы тебя надурили заграницей или оказали говняные услуги - ищи земляков )))
@@viktorsavich956 прикол в том , что у русских нет диаспоры. я из Канады!
вторую задачу можно решить за сложность 0(n^2) сложность. Можно заметить что любая инверсия в квадрате 2х2 изменяет количество 0/1 на 0 или 2 (это инвариант).
Это значит что если хотя бы в 1 квадрате 2на2 есть нечетное число 0/1, то матрицу нельзя целиком перевести во все 0 или единицы. Проверка возможности заключается в проверке количество 0 в каждом из квадратов 2х2 сложность этого 0(n^2) .
Алгоритм правильных инверсий тоже несложно придумать (если во всех квадратах 2х2 количество 0/1 четно)
Начнем с левого верхнего квадрата перевернем его например во все 1 (это всегда можно сделать при выполнении условия выше). Далее перейдем влево к следующему квадрату он либо уже правильный, либо нужно сделать одну инвестицию столбца и т.д. Далее спускаемся на одну строку ,здесь возможно потребуется инвертация строки. Далее все квадраты в этой же строке должны быть правильными, иначе не будет выполнено условие обозначенное вначале, далее повторяем спуски на нацдно строку пока не дойдем до конца. Всего будет 2n итераций в которых мы сделаем n изменений символов, т.е. сложность также 0(n^2)
пусть есть матрица (пишу по строкам) 001 100 001, матрица 2 на 2 в левом верхнем углу : (00)(10). Однако если преобразовать вторую строку, а потом третий столбец - получаем матрицу нулей.
@@ДаниилСмольников-ы8ю ошибаетесь, в центре будет стоять 1, матрица не будет состоять из нулей
@@AleXXL1986 Да, согласен
Алгоритм там тривиальный, после того как мы понимаем, что если матрицы 2×2 вида (1,0)х(0,0) без ограничения общности не сущствуют, то тогда строки(столбцы) матрицы либо повторяются (например по отношению к первой), либо являются обратными к ней. Таким образом, первым циклом надо обратить все строки, который обратны первой, а уже второй цикл проходит по столбцам с 0 или 1 и приводит все к 1/0 матрице.
Спасибо большое, полезное видео
рад, что понравилось
Комментарии, вопросы, пожелания.
все супер спасибо)
расширил кругозор
со второй задачей вроде все достаточно просто, если на курс математики опираться. достаточно найти определитель исходной матрицы. если он не будет равен 0, то получить нужную матрицу можно. потому что в этом случае мы сможем найти единичную матрицу умножением исходной на обратную. поправьте меня, если я ошибаюсь.
0 0
0 0
определитель 0, получить матрицу можно
1 0
0 1
определитель 1, получить матрицу так же можно
а математически задача действительно простая - инвертирование i строки это сумма с матрицей, у которой i строка состоит из 1, в остальных местах 0 если рассматривать матрицу над полем из 2 элементов F2. Tо есть, нужно понять, лежит ли данная матрица в F2- линейной оболочке таких матриц, где строка или столбец состоят из единиц
@@АлексейКутасов-п7и а каков алгоритм решения?
В основной ветке комментариев расписал свой вариант алгоритма
все верно, я тупанул, такое же решение расписал, но проверял вручную существование единичной матрицы. Достаточно проверить определитель матрицы и единственный вырожденный случай со всеми 0. Алгоритм за О(n^2) получается работает, что очень быстро.
Задача с папками:
from collections import defaultdict
def solution(dirs):
children = defaultdict(list)
for d in dirs:
children[d[1]].append((d[0], d[2]))
stack = [(None, '')]
while stack:
d, path = stack.pop()
for child, child_name in children[d]:
print(path + '/' + child_name)
stack.append((child, path + '/' + child_name))
dirs = [[0, None, 'a'], [1, 0, 'b'], [2, 1, 'c'], [4, 0, 'd']]
solution(dirs)
2 задача про матрицу.
Начинаем проверять матрицу n*n с а[0.0]
Цикл k=0 до (n-1)
Если а[0.k]=0, инвертируем столбец k во всей матрице.
Если k>=2, проверяем элементы столбца k от а[1.k] до а[k-1.k]
На первом же элементе равном 0, заканчиваем обход и выдаём сообщение о невозможности приведения матрицы.
Если все элементы =1. То идём дальше.
Если а[k.0] =0 инвертируем строку k во всей матрице.
Если k>=2, проверяем элементы строка k от а[k.1] до а[k.k]
На первом же элементе равном 0, заканчиваем обход и выдаём сообщение о невозможности приведения матрицы.
На второй итерации проверяется и, если нужно, инвертируются столбец и строка k.
И так далее, пока не дойдём до матрицы n*n.
Идея в том, что если мы собрали матрицу k*k, то все строки и столбцы этой матрицы мы уже не можем инвертировать.
После приведения элемента а[0.k+1] к 1, в столбце (k+1) мы сможем изменить только элемент а[k+1.k+1], инвертировав строку а[k+1.*] при необходимости приводить его значение к 1.
Поэтому столбец проверяем на единицы до этого элемента.
После приведения элемента а[k+1.0], мы уже ничего не сможем поменять в матрице (k+1)*(k+1).
Поэтому проверяем всю строку.
Вроде работает.
В примере матрица инвертируется.
Если поменять последний элемент в первой строке, вылетит по столбцу. Если последний элемент в первом столбце, то по строке.
Пример кода в ответе к этому.
Сильно не пинайте, я Python 3й день учу. :)
import numpy as np
# matrix 2×2 (yes)
#a = np.array([[1,0],[0,1]])
# matrix 2×2 (no)
#a = np.array([[1,1],[0,1]])
# matrix 3×3 (yes)
#a = np.array([[1,0,1],[0,1,0],[1,0,1]])
# matrix 3×3 (no)
#a = np.array([[1,1,1],[0,1,0],[1,0,1]])
# matrix 4×4 (yes)
a = np.array([[1,0,1,1], [0,1,0,0], [0,1,0,0], [0,1,0,0]])
# matrix 4×4 (no, column)
#a = np.array([[1,0,1,0], [0,1,0,0], [0,1,0,0], [0,1,0,0]])
# matrix 4×4 (no, line)
#a = np.array([[1,0,1,1], [0,1,0,0], [0,1,0,0], [1,1,0,0]])
n = a.shape[1] # check dimension matrix
matrix_yes = 'Successfully!'
print ('Parent matrix' )
print (a)
flag = False
k = 0
while k < n:
# change the column
if a[0,k] == 0:
a[:,k] = abs(a[:,k] - 1)
print ('change the column ',k + 1)
print (a)
# check the column
for i in range(n):
list_a = list(a[0:k+1,k])
count_zero = list_a[1:k].count(0)
if count_zero > 0:
flag = True
if flag :
print ('A column crash ',k + 1)
break
# change the line
if a[k,0] == 0:
a[k] = abs(a[k] - 1)
print ('change the line ',k + 1)
print (a)
# check the line
for i in range(n):
list_a = list(a[k,0:k+1])
count_zero = list_a[1:k+1].count(0)
if count_zero > 0:
flag = True
if flag :
print ('Crash by line ',k + 1)
break
if k == n-1:
print(matrix_yes)
k +=1
во второй задаче разве не работает такое решение?
1)замечаем, что порядок действий не влияет на результат - если инвертировать сначала строчку, потом столбец, это то же самое, что инверт крест без клетки перечесечения вне зависимости от порядка
2)разобьем все инверсии на два блока - сначала инвертируем сколько то строчек, потом сколько то столбцов
3)если после инвертирования нескольких столбцов получается матрица из нулей(или единиц), то до этого инвертирования матрица состояла из столбцов, таких, что внутри этого столбца одно и то же значение
4)в заданной матрице инвертируем нужные строки, чтобы первый столбец стал нулевым - это можно сделать единственным образом - если первый элемент строки 0, то строку не инвертируем, иначе инвертируем
5)после того, как сделали первый столбец нулевым, смотрим, верно ли, что оставшиеся столбцы заполнены одним и тем же числом, это да, то можно привести к нулевой, иначе нельзя
если алгоритм верный, то сложность n^2
более явно приведу алгоритм
1)каждую строчку ксорим с ее первым элементом 1 0 1 1 -> 0 1 0 0
таким образом, первый столбец стал нулевым
2)дальше последовательно проверяем, что первая строка равна второй, потом что вторая строка равна третьей и тд, если все строки равны, то ответ True, иначе False
Было бы замечательно ссылку на тг канал где он нашел вакансию. Или ссылку на видео где он про нее говорит. Мы конечно и так найдем, но это займет время.
Под первым видео серии есть. Не уверен, что её можно публиковать)
Какой телеграм канал?
Funk interview? Не найдено
FAANG(MAANG)
Facebook(Meta)
Apple
Amazon
Netflix
Google
🔥
Спасибо. Стараемся)
А на собеседовании можно использовать библиотеки? Например, numpy...
Врят ли
Всем привет, можете подсказать с чего начинать учить пайтон, если я вообще ничего не знаю. Заранее спасибо
Можно начать с курсов на степике бесплатных. И книжки типа Укус Питона.
@@AndyPronin спасибо, укус питона уже прочитал
Тогда посложнее - Лутц с крысой на обложке. Двухтомник. Очень подробно и занудно. И Чистый_Python_Тонкости_программирования_для_профи - тоже с каким то грызуном в очках на обложке
я что-то не нашел ссылку на этот телеграм канал. Можете скинуть ее сюда плиз? Говорили также, что скинут похожие задачи на литкоде, но тоже не вижу ссылок
ua-cam.com/video/xuwImYUbQhs/v-deo.html
там есть в описании. Леткод в следющем видео. Не перключайтесь.
@@AndyPronin спасибо!
1 задача, рекурсией бы решил. Путь записывал бы как аргумент с типом list, есть по умолчанию у него значение ["/"], при переходе на другую ветку очищался бы путь со старой ветки не так сложно.
Мне только что звонили из гугла, хотели узнать твои контакты. Но я тебя не выдал
я примерно так же решила, вот немного плохого кода, но оно работает)
def find_path(name = None, path = '', id_ = None):
for i in _TREE:
if i['name'] == name or (id_ is not None and i['id'] == id_):
path = (f'/{i["name"]}') + path
if i['p'] is None:
return path
return find_path(path=path, id_ = i['p'])
return 'Not find!'
👍
Вроде должно было быть продолжение или я что-то не так понял?
Открою, если примет оффер и уедет. Снято и ждет своего часа
@@AndyPronin а если не примет в прод не пойдёт?
@@vadimvadim1662 Возможно, переснимем или кусочки вырежем. Примерно в начале июля будет ясно
@@AndyPronin так много времени дали на подумать?
@@vadimvadim1662 есть и технические сложности с релокацией
Со скольки лет можно проходить собеседование и вообще работать в вашей компании на хоть какой нибудь должности ?
Думаю, с 18. При наличии нужного опыта. На парктике видел студентов старших курсов, кторые успешно в IT работают
А какое собеседование для кандидатов на стажировку?
Спрошу, запишемся. Спасибо
Вторая задача XORом же решается, не?
что именно решается?)
кто-нибудь может объяснить решение второй задачи или закинуть ссылку? Я не понял его алгоритма и как оно решает данную задачу. Как по мне логично решение Андрея, где проверять 1х1, потом 2х2, 3х3, и если какое-то из них нельзя получить все единички, то понятно что и матрицу большей размерности не получится получить со всеми 1. А его алгоритм с рекурсией и солюшн я вообще не понял. Или я тупой? )
Кажется, подождём решений в комментарий
@@AndyPronin кстати я решил его более математическим способом. Чистая линейная алгебра, странно что в гугле делают акцент на это. Получение матрицы из всех 1 == получение единичной матрицы. Это легко проверить инверсией последнего столбца и последней строки матрицы из 1. Рассматриваем n-1 матрицу. И так далее. В итоге получаем единичную матрицу. А здесь задача совсем простая. Из исходной матрицы нужно узнать можно ли получить единичную матрицу. Алгоритм следующий берем строку с 1 в первом столбце и ставим на самый верх, остальные делаем так, чтобы в первом столбце были 0 инверсией этой строки, если этот элемент равен 1. В итоге получаем матрицу [[1, ...], [0, ...], [0, ...], ...]. Дальше берем второй столбец и делаем так, чтобы позиция [1, 1] == 1, остальные 0. Если это удалось, то дальше делаем и так далее, пока не получим единичную матрицу. Если не удается такое провернуть на каком-то шаге, то значит невозможно получить единичную матрицу. А значит не получится и матрицу из всех 1.
@@comparison9436 Единичная матрица - матрица с единицами на главной диагонали. И не очень понятно, какая операция из линейной алгебры соответствует инвертированию строки.
@@finemechanic инверсия строки имелось ввиду инверсия списка с 0 и 1. То есть 0 в 1, и наоборот для всех элементов списка.
@@comparison9436 Ну да. В линейной алгебре есть такая операция? Или как тогда нам может помочь линейная алгебра?
Заруинить собес сейчас гораздо проще: достаточно находится в РФ
Это снимали январе. Да. сейчас офферы отозвали. Увы
Он это все на Английском должен был рассказывать, так же как на русском у тебя.
B1, говорит нужен. Так что, сильно проще.
@@AndyPronin он молод, для того, чтобы говорить с нэйтив спикером из гугла надо иметь хороший уровень языка (пожить в среде пару лет) обычный татарин из россии ну ему тяжко будет в любом случае, вспомни себя когда ты говоришь с таджиком - дак тут так же... хотя я способен говорить быстро - но это годы практики... и даже у меня не идеально, а,что уж говорить про инженера из гугла.
Думаешь, его реджекнули из за английского?
@@AndyPronin ты возьми и поговорим с ним на Английском с такой же скоростью как ты и говорил с ним на Русском, если он не сможет спокойно говорить - то причина ясна. Я тоже Андрюшенька не просто так в сбербанке работаю...
@@dieff_automation зачем нужен "идеальный" язык? если вас понимают, на ваш словарный запас никто обращать внимания не будет. нужно просто комфортно изъясняться. школьного курса английского с постоянной практикой вполне достаточно.
а ты смотришь аниме?
Сын смотрит ванпанчмэн
затрахался гуглить тг фанкинтервью, если есть люди владеющие ссылкой дайте пожалуйста, очень буду благодарен. самого парня не знаю, но манеры,жесты,мимика, лексика такая будто он иисус кодинга. короче мне крайне не импонируют подобные персонажи. но собственно это мои проблемы)
@@AndyPronin нашёл. благодарю
@@viktortemirov6809 скинешь ссылку?
@Андрей += Пронин скинешь ссылку?
ну не манга же
а как?)
@@AndyPronin тогда и goggle(g) надо поменять на alfabet(a) раз уж решили называть по "головной" компании.
@@АндрейВоронин-и4т ну. Не звучит)
from random import randint
class Matrix:
def __init__(self, n):
self.size = n
self.ivalue = [[1]*n]*n
self.value = self.ivalue
def __str__(self):
row_strings = list(map(lambda row: ",".join(str(val) for val in row), self.value))
return "
".join(row for row in row_strings)
def inverse_row(self, i):
assert i < self.size and i >= 0
self.value[i] = [0 if v == 1 else 1 for v in self.value[i]]
return self.value
def inverse_col(self, j):
assert j < self.size and j >= 0
for i in range(self.size):
new_row = list(self.value[i])
new_row[j] = 0 if new_row[j] == 1 else 1
self.value[i] = new_row
return self.value
def randomize(self, _from = 6, _to = 30):
row_inverse_qty = randint(_from, _to)
col_inverse_qty = randint(_from, _to)
for i in range(_from, row_inverse_qty):
self.inverse_row(randint(0, self.size - 1))
for i in range(_from, col_inverse_qty):
self.inverse_col(randint(0, self.size - 1))
return self
def full_inversion_algo(matrix: Matrix):
"""
O(n**2) complexity algo [inverse opertaions for row/col counted] where n is matrix.size.
"""
first_row = matrix.value[0]
for i in range(1, matrix.size):
if matrix.value[i] == first_row:
continue
else:
matrix.inverse_row(i)
if matrix.value[i] == first_row:
continue
else:
raise Exception("Cannot be inverted")
for i in range(matrix.size):
if matrix.value[0][i] == 0:
matrix.inverse_col(i)
if __name__ == '__main__':
m = Matrix(10).randomize() # test matrix generation
print("~~~~~~~INITIAL MATRIX~~~~~~~", m, sep="
")
full_inversion_algo(m)
print("~~~~~~~ALGO APPLIED MATRIX~~~~~~~", m, sep="
")
Очень много жаргонных выражений и запинаний. О каких своих комуникативных супер способностя он пытается говорит? Может быть именно по этому ему в гугле и отказали, что его просто противно слушать... У меня не хватило терпения до смотреть это видео до конца... 🥴
Да, мб реджект по софтам
русский у него не родной язык.
Спасибо за видео!
рад, что понравилось. Не переключайтесь