Re[2]: Ещё задачи на заваливание
От: BrainSlug Израиль  
Дата: 03.11.18 16:54
Оценка:
TSP>Я бы импортировал всё в Postgress. При запросе создавал бы индекс по "произвольному полю", потом делал бы запрос и вывел бы его в файл.
TSP>Или так нельзя?
ответил бы аналогично (особенно в свете "произвольности" поля)
но меня другое удивляет. на какую позицию такой вопрос, и где такое периодически встречается JSON в 140GB? как говорится умный это тот, который не допускает ситуации, из которых находчивый найдет выход.
.
Re[7]: Ещё задачи на заваливание
От: BrainSlug Израиль  
Дата: 03.11.18 17:00
Оценка:
Тё>Если ты их в первый раз видишь- значит ты не программист.
JSON в 140гб, серьезно? он же к вам не с неба упал, верно. если у тебя такое встречается как здрасте, то есть сомнения не в нем, а в тебе. можешь описать реальный кейс, когда такое бывает?
.
Re[8]: Ещё задачи на заваливание
От: CoderMonkey  
Дата: 03.11.18 17:15
Оценка:
Здравствуйте, BrainSlug, Вы писали:

BS>JSON в 140гб, серьезно? он же к вам не с неба упал, верно. если у тебя такое встречается как здрасте, то есть сомнения не в нем, а в тебе. можешь описать реальный кейс, когда такое бывает?


Мне такой вариант встречался в реальности. Есть много серверов и на них много приложений, которые пишут логи. Нужно эти логи распарсить, отсортировать.
Но это, конечно, не очень типичный сценарий.
Re[7]: Ещё задачи на заваливание
От: BrainSlug Израиль  
Дата: 03.11.18 17:22
Оценка: +1
M>"IT depends". Давай для конкретики примем приближенное к реальности условие (по другому поводу, но было нечто близкое), например, что это текстовые логи, которые в таком объеме генерирует чей-то довольно популярный сервак в интернете за месяц. Хранятся в пожатом gzip виде и занимают чуть меньше 1Тб на диске (800-900Гб). Заказчик хочет кой-какую статистику из них извлечь, некоторые стандартные средства обработки логов ему не подходят по каким-то причинам. Полноценный анализатор городить не требуется, нужно извлечь может даже буквально пару-тройку данных.
пара-тройка данных и гигансткие логи за месяц это противоречащие условия, которые допускаю могут постфактум произойти и которые можно ad-hoc так перелопатить на один раз. а потом что? ради пары-тройки данных каждый раз гигантские логи анализировать?
.
Re[9]: Ещё задачи на заваливание
От: BrainSlug Израиль  
Дата: 03.11.18 17:26
Оценка:
CM>Мне такой вариант встречался в реальности. Есть много серверов и на них много приложений, которые пишут логи. Нужно эти логи распарсить, отсортировать.
CM>Но это, конечно, не очень типичный сценарий.
да он и мне встречался(хотя шла речь о сотнях мб-гб, а не о сотнях гб). но это очень странный пример для отбора. есть задачи которые встречаются каждый день, а есть которые дай бог раз в год. и то, никто нового сотрудника сразу на такую задачу скорее всего не отправит. (хотя не знаю на какую позицию там Артемка подбирал)
.
Re[2]: Ещё задачи на заваливание
От: BrainSlug Израиль  
Дата: 03.11.18 17:31
Оценка:
RF>Что такое JSON и loop?
мне кажется, нет я более чем уверен, ты троллишь всех.
.
Re[8]: Ещё задачи на заваливание
От: Тёмчик Австралия жж
Дата: 03.11.18 21:57
Оценка:
Здравствуйте, BrainSlug, Вы писали:


Тё>>Если ты их в первый раз видишь- значит ты не программист.

BS>JSON в 140гб, серьезно? он же к вам не с неба упал, верно. если у тебя такое встречается как здрасте, то есть сомнения не в нем, а в тебе. можешь описать реальный кейс, когда такое бывает?
Лог ордеров и сделок за день. Но не JSON конечно.
Re[3]: Ещё задачи на заваливание
От: Bjorn Skalpe Земля  
Дата: 03.11.18 22:09
Оценка: -1
CM>Очень много оперативки выжрется. Лучше просто отсортировать и далее искать.

Если мозга нет, то да...
Re: Ещё задачи на заваливание
От: vsb Казахстан  
Дата: 03.11.18 22:15
Оценка:
Здравствуйте, Тёмчик, Вы писали:

Тё>5) Дан файл из записей JSON размером 140GB, но у вас в системе всего 8GB памяти. Нужно вывести записи в другой файл, отсортированные по произвольному полю JSON. Как это сделать? (код не нужен).


Как эту решать? Можно всякие сортировки на диске (слиянием или как их там), но это долго. Я бы лично предложил посмотреть внимательно на структуру этого JSON-а. Скорее всего там записей не так много, поэтому можно сначала прочитать его, выписать размер каждой записи, её индекс и значение поля, всё это в массив, который предположительно поместится в памяти. Потом этот массив отсортировать и в один приём записать отсортированные записи в конечный файл.
Re: Ещё задачи на заваливание
От: Bjorn Skalpe Земля  
Дата: 03.11.18 22:17
Оценка: +1 :))
Тё>4) Дан файл с integer values от 0 до 1000000, без дупликатов, но значения в произвольном порядке. Как их вывести в другой файл в порядке возрастания?

Задача шутка?


// Example program
#include <stdio.h>

int main()
{
  for (int i=0;i<=1000000;i++)
     printf ("%d\n", s);
 
  return 0;
}
Отредактировано 03.11.2018 22:17 Bjorn Skalpe . Предыдущая версия .
Re[2]: Ещё задачи на заваливание
От: Bjorn Skalpe Земля  
Дата: 03.11.18 22:25
Оценка:
S>Сразу видно что задача оторвана от практики и решается неким хитрым способом, который в реальных провектах никогда не понадобится.

О да, хитрее не придумаешь... Особенно решение O(n)


#include <stdio.h>

int main()
{
  int a [] = {1,2,3,4,5,6,4,7,8,9,10};
  long long s = 0;
  for (size_t i=0;i<10;i++)
       s+=(a[i]-i);
  printf ("%d\n", s);
  return 0;
}
Re[2]: Ещё задачи на заваливание
От: CoderMonkey  
Дата: 03.11.18 23:04
Оценка:
Здравствуйте, Bjorn Skalpe, Вы писали:

BS>Задача шутка?



Дубликатов по условию нет, но, вероятно, могут быть пропуски.
Re[4]: Ещё задачи на заваливание
От: CoderMonkey  
Дата: 03.11.18 23:05
Оценка:
Здравствуйте, Bjorn Skalpe, Вы писали:

CM>>Очень много оперативки выжрется. Лучше просто отсортировать и далее искать.

BS>Если мозга нет, то да...

Ты вообще когда-нибудь интересовался, сколько оперативки потребляют хэш-словари, умник хренов? Поинтересуйся.
Re[3]: Ещё задачи на заваливание
От: Shmj Ниоткуда  
Дата: 03.11.18 23:47
Оценка:
Здравствуйте, Bjorn Skalpe, Вы писали:

S>>Сразу видно что задача оторвана от практики и решается неким хитрым способом, который в реальных провектах никогда не понадобится.


BS>О да, хитрее не придумаешь... Особенно решение O(n)


В условии не сказано что числа упорядочены или нет пропусков. Вот если придумаете способ найти дубликат без составления хеш таблицы или полной при условии пропусков (т.е. что, к примеру, числа 2 может вообще не быть) — тогда интересно. Не уверен что это возможно.

int[] a = new int[] {1, 3, 4, 4, 6, 7, 8, 9, 10, 11};
Re[2]: Ещё задачи на заваливание
От: aik Австралия  
Дата: 04.11.18 02:10
Оценка:
Здравствуйте, Bjorn Skalpe, Вы писали:

Тё>>4) Дан файл с integer values от 0 до 1000000, без дупликатов, но значения в произвольном порядке. Как их вывести в другой файл в порядке возрастания?

BS>Задача шутка?

"значения в произвольном порядке" и "в порядке возрастания" надо было подчеркнуть, да. Фтопку контору без подчеркиваний!

BS>
BS>// Example program
BS>#include <stdio.h>
BS>int main()
BS>{
BS>  for (int i=0;i<=1000000;i++)
BS>     printf ("%d\n", s);
BS>  return 0;
BS>}
BS>


Ответ — шутка? Оно ж не скомпилится даже.
Re[3]: Ещё задачи на заваливание
От: Somescout  
Дата: 04.11.18 03:50
Оценка:
Здравствуйте, Bjorn Skalpe, Вы писали:

S>>Сразу видно что задача оторвана от практики и решается неким хитрым способом, который в реальных провектах никогда не понадобится.


BS>О да, хитрее не придумаешь... Особенно решение O(n)



BS>
BS>#include <stdio.h>

BS>int main()
BS>{
BS>  int a [] = {1,2,3,4,5,6,4,7,8,9,10};
BS>  long long s = 0;
BS>  for (size_t i=0;i<10;i++)
BS>       s+=(a[i]-i);
BS>  printf ("%d\n", s);
BS>  return 0;
BS>}
BS>


#include <stdio.h>

int main()
{
  int a [] = {0,1,2,3,4,4,5,6,7,8,9};
  long long s = 0;
  for (size_t i=0;i<10;i++)
       s+=(a[i]-i);
  printf ("%d\n", s);
  return 0;
}


Результат: -5

То есть решение работает только для отсортированных, натуральных чисел без пропусков с одним дубликатом в произвольном месте.
Из 4 требований алгоритма в условиях задачи есть только одно.

А уж требование сортированного массива особенно смешно:
CM>>Очень много оперативки выжрется. Лучше просто отсортировать и далее искать.
BS>Если мозга нет, то да...
ARI ARI ARI... Arrivederci!
Re[5]: Ещё задачи на заваливание
От: Bjorn Skalpe Земля  
Дата: 04.11.18 04:05
Оценка: :)
CM>Ты вообще когда-нибудь интересовался, сколько оперативки потребляют хэш-словари, умник хренов? Поинтересуйся.

Они для этой задачи не нужны
Re[4]: Ещё задачи на заваливание
От: Bjorn Skalpe Земля  
Дата: 04.11.18 04:13
Оценка: :)
Здравствуйте, Shmj, Вы писали:

S>Здравствуйте, Bjorn Skalpe, Вы писали:


S>>>Сразу видно что задача оторвана от практики и решается неким хитрым способом, который в реальных провектах никогда не понадобится.


BS>>О да, хитрее не придумаешь... Особенно решение O(n)


S>В условии не сказано что числа упорядочены или нет пропусков. Вот если придумаете способ найти дубликат без составления хеш таблицы или полной при условии пропусков (т.е. что, к примеру, числа 2 может вообще не быть) — тогда интересно. Не уверен что это возможно.


Причем тут упорядоченность? А пропусков нет, потому что дано от 1 до 2^32-1 чисел в файле и только одно повторяется, спрашивается какое, а не 10 файлов разной размерности.

Да ты что, алгебру не учили в школе? Даже не попробовал запускать? А ты попробуй поменять местами...

Например так:


#include <stdio.h>

int main()
{
  int a[] = {8, 6, 3, 1, 4, 5, 7, 2, 4, 9};
  long long s = 0;
  for (size_t i=0;i<10;i++)
       s+=(a[i]-i);
  printf ("%d\n", s);
  return 0;
}


По поводу ваших данных, где тут сказано, в условиях задачи, что должны быть пропуски, где цифра 2, 5, куда они пропали?

S>
S>int[] a = new int[] {1, 3, 4, 4, 6, 7, 8, 9, 10, 11};
S>


Как этот массив, который вы даете отвечает условию задачи?
Отредактировано 04.11.2018 4:23 Bjorn Skalpe . Предыдущая версия . Еще …
Отредактировано 04.11.2018 4:17 Bjorn Skalpe . Предыдущая версия .
Re[3]: Ещё задачи на заваливание
От: Bjorn Skalpe Земля  
Дата: 04.11.18 04:19
Оценка: +1 -1 :)
CM>Дубликатов по условию нет, но, вероятно, могут быть пропуски.

Где сказано в условиях задачи пропуски? У вас один один файл с числами от 1 до 1000000, а не 10 файлов разного размера.
Отредактировано 04.11.2018 4:20 Bjorn Skalpe . Предыдущая версия .
Re[3]: Ещё задачи на заваливание
От: Bjorn Skalpe Земля  
Дата: 04.11.18 04:21
Оценка: :)
Здравствуйте, aik, Вы писали:

aik>Здравствуйте, Bjorn Skalpe, Вы писали:


Тё>>>4) Дан файл с integer values от 0 до 1000000, без дупликатов, но значения в произвольном порядке. Как их вывести в другой файл в порядке возрастания?

BS>>Задача шутка?

aik>"значения в произвольном порядке" и "в порядке возрастания" надо было подчеркнуть, да. Фтопку контору без подчеркиваний!


BS>>
BS>>// Example program
BS>>#include <stdio.h>
BS>>int main()
BS>>{
BS>>  for (int i=0;i<=1000000;i++)
BS>>     printf ("%d\n", s);
BS>>  return 0;
BS>>}
BS>>


aik>Ответ — шутка? Оно ж не скомпилится даже.


опечатка i
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.