Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Работа для программиста > Фриланс
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.10.2010, 09:13   #1
kola672
Пользователь
 
Регистрация: 24.12.2008
Сообщений: 50
По умолчанию Cформировать из 30 таблиц 1 500 000 000 таблиц, за 2 часа.

Добрый день. Задача, которую надо выполнить, по сравнению с ранее выложенной мной, усложняется. Кто возьмётся написать программу, которая за короткое время (от 30 минут до 2 часов), из 30 таблиц сможет сформировать 1 500 000 000 таблиц?

Пример формирования из 30 таблиц 1 500 000 000 таблиц:

Есть 30 таблиц c данными, в Еxcel. (Формировать 1 500 000 000 таблиц, конечно не обязательно в Excel ). Сформированные 1 500 000 000 таблиц, мне видеть не надо (видимую часть программы приведу отдельно, тому, кто возьмётся за работу. Она на выходе не больше 9 гига).

Каждая таблица состоит из 1 000 строк с данными (количество строк уменьшилось).
Строки состоят из 8 колонок.

Надо сделать так, чтобы из этих 30 таблиц получилось 1 500 000 000таблиц.
Создавать эти 1 500 000 000 таблиц надо по следующим критериям.
1. Блок из стрёх строк:
Берём строки 1,2,3, из 1-ой таблицы из 30. (Основной список 1)
Переставляем строки местами 1,3,2; и переносим в таблицу (Лист) 1.3.2.
Переходим к следующим строкам 4,5,6,
Переставляем их местами 4,6,5, и переносим в таблицу (Лист) 1.3.2.
Переходим к следующим строкам 7,8,9,
Переставляем их местами 7,9,8, и переносим в таблицу (Лист) 1.3.2.
Это всё делается в одном дне. И переносится в одну таблицу.
И так далее, за все дни
Следующая комбинация : 1,3,2; - Оборот.
Все такие же действия как выше написанные, но перевернуть данные за день, с низу вверх. Сделать это надо со всеми днями.

Следующие комбинации блока из трёх строк: 2,1,3;
Следующая комбинация : 2,1,3; - Оборот.
Следующая комбинация : 2,3,1;
Следующая комбинация : 2,3,1; - Оборот.
Следующая комбинация: 3,1,2;
Следующая комбинация: 3,1,2; - Оборот.
Следующая комбинация : 3,2,1;
Следующая комбинация : 3,2,1; - Оборот.
Все варианты комбинаций блока из трёх строк, каждая комбинация отдельная таблица (Лист).

Когда перебраны все комбинации блока из трёх строк (1,2,3,), переходим к блоку из четырёх строк (1,2,3,4,), перебираем все комбинации, составляем таблицы.

2. Блок из четырёх строк:
Берём строки 1,2,3,4, из 1-ой таблицы из 30.(Основной список 1)
Переставляем строки местами 1,2,4,3, и переносим в таблицу (Лист) 1,2,4,3,
Следующая комбинация: 1,2,4,3 – Оборот. В таблицу (Лист) 1,2,4,3, - оборот.
Следующая комбинация: 1,3,2,4,
Следующая комбинация: 1,3,2,4, - Оборот.
Следующая комбинация: 1,3,4,2,
Следующая комбинация: 1,3,4,2, - Оборот.
Следующая комбинация: 1,4,2,3,
Следующая комбинация: 1,4,2,3, - Оборот.
Следующая комбинация: 1,4,3,2,
Следующая комбинация: 1,4,3,2, - Оборот.
Следующая комбинация: 2,1,4,3,
Следующая комбинация: 2,1,4,3, - Оборот.
Следующая комбинация: 2,4,1,3,
Следующая комбинация: 2,4,1,3, - Оборот.
И так далее. Перебрать все комбинации блока из четырёх строк (1,2,3,4,).

3.Блок из пяти строк:
Берём строки 1,2,3,4,5, из 1-ой таблицы из 30. (Основной список 1).
Переставляем строки местами 1,2,3,5,4, и переносим в таблицу (Лист) 1.2.3.5.4.
Следующая комбинация: 1,2,3,5,4, - Оборот.
И так далее. Всё, тоже самое, сделать, что и с предыдущими блоками и строками.

Такие действия производить до тех пор, пока не будет получено нужное количество таблиц (1 500 000 000 таблиц).
kola672 вне форума Ответить с цитированием
Старый 25.10.2010, 12:52   #2
Chedman
 
Регистрация: 16.09.2010
Сообщений: 3
Радость

Для чего эти 1 500 000 000 таблиц нужны? Что с ними делать, как их использовать?
Что содержат 30 таблиц? Может надо генерировать тот или иной вариант таблицы, по мере необходимости, когда в нем возникнет насущная потребность, используя некий код имеющий значения, например, в диапазоне от 1 до 1 500 000 000.
Chedman вне форума Ответить с цитированием
Старый 25.10.2010, 12:59   #3
Andrei_ra
Новичок
Джуниор
 
Регистрация: 25.10.2010
Сообщений: 0
По умолчанию

Что-бы они весили 9гб, каждая таблица должна 6 байт весить (округленно). А если считать что в действительности каждая таблица может 20-40кб минимум весить. То 1,5 млр. таблиц будут 450 гбайт занимать. Простое копирование такого объема на обычном компе часа 2 займет
Andrei_ra вне форума Ответить с цитированием
Старый 25.10.2010, 13:47   #4
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

При тех фантастических результатах.которые достиг AlexTuka при создании программы,
время для этой-порядка 200 суток.Хоть я немного в теме,
но не понял откуда такое количество таблиц при описаном алгоритме
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 25.10.2010, 13:56   #5
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Если файлы сохранять в текстовом формате, то один файл на диске будет занимать около 60 килобайтов.
(вариант с формированием XLS не рассматривается, поскольку скорость создания файлов значительно увеличивается. Кроме того, Excel открывает текстовые файлы с расширением XLS как обычные книги)

Итого, 60 kB * 1500000000 файлов = 90 терабайтов

Скорость записи на HDD (правда, я очень сомневаюсь, что где-то можно найти такой огромный HDD) на моём компе составляет 100 MB/сек

Итого, на запись уйдёт примерно 900 000 сек = 250 часов

Николай, вы вообще понимаете, что хотите получить?
Ещё не поздно отказаться от этой бредовой затеи...
EducatedFool вне форума Ответить с цитированием
Старый 25.10.2010, 14:18   #6
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Я еще в прошлый раз возникал - зачем все это писать на диск? Гораздо эффективнее будет генерить эти таблицы в момент использования..
Black Fregat вне форума Ответить с цитированием
Старый 26.10.2010, 03:27   #7
kola672
Пользователь
 
Регистрация: 24.12.2008
Сообщений: 50
По умолчанию

Полностью эта программа состоит из 25 частей. Эта часть № 8. Также пишутся ещё несколько частей. Приведённые выше таблицы, не те таблицы, которые были описаны мной ранее, но на их базе. Эти таблицы во много раз больше.
Конечно, данные поступают в таблицы не все сразу, а частями, но для того, чтобы сделать правильные выводы, надо 4 раза обработать все данные, полностью.
kola672 вне форума Ответить с цитированием
Старый 26.10.2010, 03:57   #8
MadReason
Ищу работу
Форумчанин
 
Аватар для MadReason
 
Регистрация: 16.02.2007
Сообщений: 269
По умолчанию

может все таки имеет смысл загнать исходное в скуль базу, а потом подзапросами вытаскивать что необходимо, даже конвертнуть в любой формат можно будет...

не плохо так полтора биллиона) с таблички бы по рублю)
Пишу на Delphi все что угодно, недорого, красиво, с комментариями
###icq 107335###
MadReason вне форума Ответить с цитированием
Старый 26.10.2010, 22:22   #9
kola672
Пользователь
 
Регистрация: 24.12.2008
Сообщений: 50
По умолчанию

Так зарабатывать на себе не позволит не одна организация. Самое большое при завершение программы, 2% перевеса.
kola672 вне форума Ответить с цитированием
Старый 01.11.2010, 21:19   #10
kavaii
Новичок
Джуниор
 
Регистрация: 01.11.2010
Сообщений: 0
По умолчанию

решение можно только программное? аппаратное виде платы для компа ИМХО проще и быстрее
kavaii вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сформировать из 30 таблиц 15 000 таблиц, за 15 минут. kola672 Фриланс 31 19.10.2010 01:22
ноутбук за 20 000 - 25 000 руб. russian-stalker Компьютерное железо 5 15.05.2010 21:53
Выборка и консолидация. Вопрос на 1 000 000 23i Microsoft Office Excel 11 11.05.2010 02:11
Конкурс программистов - призовой фонд 1 000 000 рублей Lnat Свободное общение 0 26.07.2008 12:15