Я хочу вам сказать что существуют предметные области (шахматы) где не существуют прямой формулы расчета решения. Есть просто некая итеративность которую нужно последовательно исполнять до достижения цели. Например задачу 8 ферзей решал математик Гаусс. Он искал формульное решение но не нашел. Его просто не существует.
Поэтому я вас прошу - будьте более грамотны в формировании ваших желаний. И воздержитесь от радикальных заявлений что это брут или не брут. Может так оказаться что вращательный алгоритм будет единственным и примлемым для вашей задачи.
Формулы скорее всего нет. Есть итеративный алгоритм. Все символы вращаются по кругу.
На 1 шаг. Потом из хоровода исключается 1-й символ. Вращаются все остальные. И так далее
пока хоровод не станет пустой.
Есть готовые имплементации этого алгортима на C++ STD. И на других языках разработки
в библиотеках коллекций.
Эту версию просто надо проверить. Я ловил такие глюки в 2010 когда держал на одной рабочей станции Windows-2003 Server и Suse Linux Ent. Решением был отказ от хибернации на обоих ОС либо просто как говорил Арнольд Шварцнеггер - не забывать первые два правила.
Stalker_RED, да да тоже самое доказывали по поводу BrainFuck. Но я писал в топике про оптимизацию использования памяти. Програмист - это не просто кодер на API. Это еще и хозяйственник. И если он видит разницу между потоковыми файловыми операциями и прочими и если у него есть возможность выбора - он выберет right way.
Если программисту пофиг - вы знаете. Когда пофиг - это зависающий Windows10 и Android в котором вечно не хватает оперативы сколько ее на ставь. И когда ругань пользователя направленна на это явление - она по своей природе направлена именно против таких программистов которым пофиг на каком инструменте делать split или sort текстового файла.
Это просто подтверждает мой тезис о том что bash вообще ничего не умеет делать кроме как запускать процессы и принимать простейшие решения по коду ошибки.
Vi Vola, предположительно - делаешь штук 10 попыток с таймаутом растущим по экспоненте. Потом выходишь из программы. Нет смысла долбить диск который откючен (unmounted) или на нем закончилось свободное место.
Vi Vola, ну у тебя внутри while - что? Наверное файловые операции read. Read устанавливает код ошибки в errno. Проверяешь его. Что там... если он равен EBADF то файловый дескриптор сдох. И переоткрываешь его через open еще раз. Вообще об чем вопрос. Ты хочешь написать отказоустойчивое приложение которое 100 лет uptime простоит? Да железо столько не живет. Ты подержи своё приложение хотя-бы месяц работающим и понаблюдай за ошибками. И потом будешь знать куда соломки подстелить.
Добавлю просто еще 1 поинт против использования "С++". Это мощный язык но его шаблонный процессор часто приводит к неконтролируемому росту бинарника. Грубо говоря если сегодня взять сет утилит Линукса написанных на "C" и просто переписать их на "C++" с использованием ВСЕХ правил и ПРАКТИК современного С++ (в т.ч. Qt/Boost/STL и с использованием процессора шаблонов там где есть возможность) то полученный объем дистрибутива будет раза в 2 раза превышать дистрибутив Linux. Понравится ли пользователям тот факт что дистр вместо 1 DVD стал в дава раза толще и перформанс и использование кеша просело в 2 раза? Сомневаюсь. Вспомните сколько ругали Windows за тяжесть и увесистость? Гнев пользователей обрушится на новый С++ный Линукс также. Также тяжелее в 2 раза станут репозитарии бинарников. Вот такая плата за эксперимент.
По данному факту резкого распухания дистрибутива я готов спорить на коньяк хотя и слабо себе представляю кто может или кто в состоянии реализовать этот план хотя-бы на 5% чтобы получить выборку данных.
Я-бы взял ширину FULL_HD монитора. А высота - была-бы вариативной в зависимости от размера файла. Тебе-то зачем красивые пропорции? Тебе-ж не в фотошопе это смотреть. А для транспорта или контрабанды информации :)
Я не знаю какой engine ты используешь. Но для Oracle например для стандартных HEAP-organized tables, дисковое пространство в блоке не выделяется для пустых полей. Оно схлопывается. Поэтому экономия места тебя не должна беспокоить. Ну почитай документацию InnoDb/MyISAM что там с пустым местом.
Я имел дело с подобными связями 1:1 крупной системе для телефонного биллинга и общее впечатление было от нее - ужасное. Лучше такие связи не использовать. Так тебе проще писать запросы. Или создавай приходы столько сколько надо таблиц а левую часть их соедини в приход.