похоже код в конце не рабочий, попробовал (ради любопытства) в одном из Swift Online Compiler - куча ошибок выдает. Это же Swift?
import Foundation
let vbs = Array("(()(()())...())")
let n = vbs.count / 2
var array = Array(repeating: Array(repeating: 0, count: n + 1), count: n + 1)
if n > 0 {
array[1][1] = 1
}
for i in 2...n {
array[i][1] = array[i - 1][i - 1]
for j in 2...i {
array[i][j] = array[i][1] + array[i][j - 1] - (j > 1 && i > 1 ? array[i - 1][j - 2] : 0)
}
}
var inserts = Array(repeating: 0, count: n)
var k = 0
var j = max(n - 1, 0)
for i in 0..<(2 * n) {
if vbs[i] == "(" {
k += 1
} else {
k -= 1
if j < n {
inserts[j] = k
}
j = max(j - 1, 0)
}
}
var m = 0
for i in (1...n).reversed() {
let ii = inserts[i - 1]
if ii > 0 && (ii - 1) < array[i - 1].count {
m += array[i][ii] - array[i - 1][ii - 1]
}
}
print(array[n][n] - (m + 1))
что значит "кусочков"? посмотрите внимательно на Erlang/Elixir, там полностью все модули всего проекта (сервиса) могут быть обновлены без разрыва соединения текущих клиентов и без остановки работы и полностью прозрачно для пользователя. Если упрощенно то все текущие подключения остаются на старом коде (по-умолчанию, если специально не запрограммированна альтернативная логика), а новые включаются на обновленную версию... это касается и всяких серверов с web-socket'ами и интеркоммуникации процессов, и сессий и т.д. Где-то была очень крутая и подробная презентация в YT, но её сейчас не найду - поэтому дам такой линк 'Elixir Distributed Node Clustering with Raft Consensus in ExVenture' (https://www.youtube.com/watch?v=rxFlKhWzthw). А вообще можно нагуглить на тему 'hot code reload' и 'libcluster' и т.д. Конечно универсальных 'пуль' не бывает, но у Erlang/Elixir ,как мне кажется, максимально были налажены процессы безшовного обновления кода даже в кластерах, причем из коробки и начиная с самых ранних версий ( это было обязательное требование дизайна системы с начала разработки языка).
запустил финальный скрипт (Ubuntu 20.04 Python 3.11.1) просто ради интереса - не работает оно, если бы я предварительно вызовы "os." не закомментировал, то удалило бы мне далеко не пустые дирректории вот в том месте где logger.info('Empty dir %s was removed')
может тест неплохо было бы приложить? а то непонятно что он выдает на выходе
похоже код в конце не рабочий, попробовал (ради любопытства) в одном из Swift Online Compiler - куча ошибок выдает. Это же Swift?
что значит "кусочков"? посмотрите внимательно на Erlang/Elixir, там полностью все модули всего проекта (сервиса) могут быть обновлены без разрыва соединения текущих клиентов и без остановки работы и полностью прозрачно для пользователя. Если упрощенно то все текущие подключения остаются на старом коде (по-умолчанию, если специально не запрограммированна альтернативная логика), а новые включаются на обновленную версию... это касается и всяких серверов с web-socket'ами и интеркоммуникации процессов, и сессий и т.д.
Где-то была очень крутая и подробная презентация в YT, но её сейчас не найду - поэтому дам такой линк 'Elixir Distributed Node Clustering with Raft Consensus in ExVenture' (https://www.youtube.com/watch?v=rxFlKhWzthw). А вообще можно нагуглить на тему 'hot code reload' и 'libcluster' и т.д.
Конечно универсальных 'пуль' не бывает, но у Erlang/Elixir ,как мне кажется, максимально были налажены процессы безшовного обновления кода даже в кластерах, причем из коробки и начиная с самых ранних версий ( это было обязательное требование дизайна системы с начала разработки языка).
есть и давно, называется Erlang - hot code reload гарантирован без останова и отключения текущих клиентов
запустил финальный скрипт (Ubuntu 20.04 Python 3.11.1) просто ради интереса - не работает оно, если бы я предварительно вызовы "os." не закомментировал, то удалило бы мне далеко не пустые дирректории вот в том месте где logger.info('Empty dir %s was removed')