Muhammad, а в чём преимущество отделения переводов от пары-тройки общих полей (это 5-8 колонок максимум: время модификации, флаги состояния публикаций и т.д.)?
Muhammad, я как бы понимаю, что правильнее разносить: материалID | языкID | contentID | titleID
и для каждого ID - держать свою таблицу.
Вначале ищем по ID, возвращаемся снова, отсеиваем и т.д. прыгаем, пока не отсеем всё ненужное. Это как раз и будет 3ДНФ.
Но затраты на выборку через связи по ID - будут куда значительнее (ИМХО).
Хотелось бы для себя прояснить этот вопрос...
Stalker_RED, да, ты всё верно понял и код тот...
Просто решил на словах это максимально детально объяснить, чтобы был понятен основной принцип достижения результата.
longclaps, это может произойти только в случае, если мы будем оставлять сверху или слева такие слова, длина которых короче, чем слово над текущим или слева от текущего, соответственно.
Иначе - непонятно: как там может оказаться сегментированное свободное пространство. )
Ну здесь суть периметрального заполнения от края к центру, как я в своём ответе уже писал.
Главное - направления написания соблюдать, чтобы удобно было читать и всё.
longclaps, длинные слова - я не думаю, что будет особая разница при корректности размещения... (иногда - в этом то и смысл сложности отгадывания)
А вот про то, что я сказал - хотелось бы увидеть наглядно: как там и что ловится...
(пока - не могу сам представить и смоделировать...)
чтоб при потере случайных 75% из 1000 цепь не порвалась
Т.е., минимум, нужно всю информацию (всю цепь) кодировать как 3 QR-блока с уровнем коррекции Q(~25% потерь) или H (~30% потерь) и распределять на этих 1000 так, чтобы ЛЮБЫЕ взятые 250 человек (из 1000) - хранили ~3/4 части (это будет ~25% потерь как раз) одного QR-блока.
Т.е. нужно превратить 3 одинаковых QR-блока в одну непрерывную цепочку и затем равно распределить среди всех 1000 человек.
Надо уже детально посчитать по избытку. Но, задача - явно решаема.
Виталий, чем длиннее тело функции (содержит много операций), тем больше нужно выделять памяти для работы всей программы, т.к. для хранения подпрограммы (функции) нужно резервировать память.
В целом, больше 3х операций в теле функции и вызов такой функции более одного раза - лучше будет использовать функцию.
Вообще, лучше следить за памятью и освобождать по мере необходимости принудительно освобождая ненужные области с кодом.
Хранить - можно в LocalStorage (у каждого браузера - он свой!).
Передавать между браузерами - нельзя ничего (только между вкладками в рамках одного браузера).
Задача-то какая в целом?