Пайтон
під час підготовки до зно з марічка натрапила на цікаву . у і просять перетворити ціле додатне число n у число 1 за мінімальну кількість операцій або визначити що йог взагалі не можна перетворити у 1 . за одну операцію число можна поділити на 4 якщо число ділиться націло на 4 або відняти від числа 7 якщо результат вийде більшим ніж 0
Например, в маске *r*f* пять символов, ей удовлетворяют нужные имена файлов (mister_fox, from_foxford), но не удовлетворяют ненужные (brave_oxygen – нет f, magic_fox – нет r).
Масок из меньшего количества символов, удовлетворяющих условию нет:
Начальные символы mister_fox и from_foxford разные, так что маски должны начинаться с звездочекАналогично, и заканчиваться они должны на звездочку. Таким образом, два символа маски известныЕсли в маске всего 3 символа, то неизвестный символ – символ, который должен быть в нужных словах, но которого не должно быть в ненужных. В обоих нужных словах есть символы m, r, _, f, o, x, но каждый из этих символов есть хотя бы в одном ненужномЕсли в маске 4 символа, то неизвестная пара символов – символы, стоящие подряд, которые есть в нужных словах и которых нет в ненужных. В нужных словах совпадают только пары символов, входящие в _fox, но этот же фрагмент входит и в magic_foximport copy – импортируется модуль copy
x = {'one': 1, 'two_three': [2, 3]} – создается словарь с ключами one и two_three и значениями 1 и [2, 3]
y = copy.copy(x) – y указывает на поверхностную копию x. Поверхностная копия – копия, у которой такие же ключи и значения, что и в оригинале. В отличии от copy.deepcopy – глубокого копирования – значения ссылаются на те же объекты, что и оригинал
y['one'] = 'I' – ключу one нового объекта присваивается значение 'I'. В старом объекте ничего не меняется
y['two_three'][0] = 'II' – в значении по ключу two_three нового объекта берется первый элемент (нумерация начинается с нуля) и заменяется на 'II'. Поскольку в старом объекте по этому ключу находится тот же самый объект, то при печати и там список будет изменен
y['two_three'][1] = 'III' – аналогично со вторым элементом списка
print(x) – выводится содержимое x, то есть {'one': 1, 'two_three': ['II', 'III']}
print(y) – выводится содержимое y, то есть {'one': 'I', 'two_three': ['II', 'III']}
На экран будут выведены две строки, написанные выше