[Ответить в тред] Ответить в тред

02/12/16 - Конкурс визуальных новелл доски /ruvn/
15/11/16 - **НОВЫЙ ФУНКЦИОНАЛ** - Стикеры
09/10/16 - Открыта доска /int/ - International, давайте расскажем о ней!

Check this out!

Новые доски: /2d/ - Аниме/Беседка • /wwe/ - WorldWide Wrestling Universe • /ch/ - Чатики и конфочки • /int/ - International • /ruvn/ - Российские визуальные новеллы • /math/ - Математика • Создай свою

[Назад][Обновить тред][Вниз][Каталог] [ Автообновление ] 45 | 9 | 14
Назад Вниз Каталог Обновить

Аноним 25/04/17 Втр 21:09:41  151750904  
.png (10Кб, 1052x1052)
Сап, программач. Вопрос.

Есть некий массив (назовём его "arr") с таймштампами (https://ru.wikipedia.org/wiki/Timestamp ) событий. Условно говоря, что-то такое:
[ [1,100], [100,200], [200,350], [350,400], [500,550], [500,550], [550,650] ]

Допустим, моё текущее юниксовое время т.е. мой текущий таймштамп (назовём его "now") - 150. Если определить, в каком событии сейчас находится now при переборе массива циклом довольно просто ( if (arr[0] < now and now > arr[1]) {...} ), то как определить следующее событие? Просто указать, что " if (now < arr[0]) {...} " не получится, ибо охватятся сразу все события, время начала которых больше, чем now.

В распоряжении - пикрелейтед. Наверняка есть какое-нибудь очень простое решение, но я просто не могу к нему прийти. Спасай, анон!
Аноним 25/04/17 Втр 21:10:46  151750965
>>151750904 (OP)
Алсо, чтобы было понятнее:
[
начало события,
конец события
]
Аноним 25/04/17 Втр 21:12:14  151751069
>>151750904 (OP)
Ну так индекс вот этого текущего
[
начало события,
конец события
]
+ 1
Аноним 25/04/17 Втр 21:12:53  151751112
>>151750904 (OP)
echo "В pr, быдло";
Аноним 25/04/17 Втр 21:14:04  151751180
Ты совсем конченый?
Если у тебя твой "стампы" не пересекаются и массив отсортирован, то следующее событие будет внезапно иметь индекс i+1, если arr[0]>now && arr[1]<now.
Если не отсортирован, то отсортируй, блять.
Если таймстампы перескаются, то сначала поставь задачу нормально и разберись чего ты хочешь.

Вообще, программирование - явно не твоё. Ну если первую неделю занимаешься (первые 20-50 часов), то ещё более-менее, если больше, то просто бросай.
Аноним 25/04/17 Втр 21:15:44  151751279
14852672900642.jpg (76Кб, 1152x629)
>>151751180
>твои
И да, очевидно, скобки съела разметка
>если arr [ i ][0]>now && arr [ i ][1]<now, то твоё ебучее следующее - это arr[i+1]
Аноним 25/04/17 Втр 21:16:44  151751352
>>151751180
вот этот всё верно сказал
Аноним 25/04/17 Втр 21:19:08  151751534
>>151751180
Видишь же, что пересекаются. Массив отсортирован по началу события.

> Вообще, программирование - явно не твоё
Я знаю

>>151751279
Так блядь, определить следующее событие из текущего и я могу. Как определить именно следующее без всяких привязок к другим элементам массива?
Аноним 25/04/17 Втр 21:23:38  151751824
То есть если мой now = 450, то как определить, что следующее событие это [500,550]? При этом определить только его, не захватив остальные [550,650] и следующие за ним, если они будут.

Только обнаружил, что событие [500,550] в массиве повторяется два раза. На самом деле она там должен быть одно.
Аноним 25/04/17 Втр 21:25:28  151751938
>>151751534
>>151751824

> пересекаются
Если ты утверждаешь, что в один момент времени может происходить сколь угодно много различных событий, тогда определись сначала, какой смысл ты вкладываешь в это понятие:
> следующее
Аноним 25/04/17 Втр 21:25:49  151751967
14856917506100.jpg (60Кб, 1024x682)
>>151751534
>Видишь же, что пересекаются
>поставь задачу нормально и разберись чего ты хочешь
Что такое, ёб твою мать, следующее событие, если таймстампы пересекаются? Я могу тебе предложить на минуточку штуки четыре разных определений того, что это, а если посидеть и подумать, то я тебе с десяток накидаю.
Вот реши, что хочешь решить - решение придёт само. Понял, блять? Это дзен программирования, сука.
Аноним 25/04/17 Втр 21:27:36  151752090
>>151751967
>Это дзен программирования
Поддвачну

>>151751938 -кун
Аноним 25/04/17 Втр 21:28:29  151752139
>>151751824
Какой же ты мудак.
Ёб твою мать.
int mat_shluha = -1;
for(int i = 0; i < n; i++){
if(arr[0] < now && arr[1] > now){
mat_shluha = i;
break;
}
}
arr[mat_shluha]//Твоё ебаное то, что ты ищешь, мудак ты ёбаный
Объясни, зачем ты вообще в программирование лезешь?
Аноним 25/04/17 Втр 21:29:16  151752202
>>151751938
> сначала, какой смысл ты вкладываешь в это понятие
Очевидно, первое же событие, начало которого следует после now. Разве это настолько непонятно?
Аноним 25/04/17 Втр 21:30:08  151752242
Быстрофикс

int mat_shluha = -1;
for(int i = 0; i < n; i++){
if(arr[0] < now && arr[1] > now){
mat_shluha = i + 1;
break;
}
}
if(i!=-1 && i < n){
arr[mat_shluha]
}

>>151752202
Если события перескаются, то да, ебал твою семью, не понятно. Если не пересекаются, то всё тривиально.
Аноним 25/04/17 Втр 21:31:50  151752366
>>151752202
Вот тебе пример, дебилоид:
[[100,200], [150,170], [200,300]]
момент времени = 160. Какое будет следующим?
Аноним 25/04/17 Втр 21:32:03  151752384
>>151751824
Как только выполнилось условие вхождения твоего now в один из интервалов, позицию интервала сохраняешь в отдельную переменную(внешнюю относительно тела цыкла), делаешь break из цикла.
Аноним 25/04/17 Втр 21:35:23  151752610
>>151750904 (OP)
У тебя какая-то структура данных хуевая, с такой сложно работать. Нужен хэш с объектами вида { id: 23, start: 120, end: 398 }, которые бы представляли твои интервалы и массив со списком id.

Алсо, пользоваться циклами в 2017 — эпическое говноедство.
Аноним 25/04/17 Втр 21:36:03  151752656
>>151752242
"[200,300]", потому что 200 > 160, соответственно это является следующим событием.

>>151751824
Цикл не должен прерываться. Про запоминание момента с переменную и сам думал, но для такой вроде бы простой задачи посчитал ненужным.
Аноним 25/04/17 Втр 21:36:56  151752714
>>151752610
>хэш с объектами вида { id: 23, start: 120, end: 398 }
id в этом словаре должны быть ключами, разумеется
Аноним 25/04/17 Втр 21:37:44  151752772
>>151752610
А какая разница, если данные всё-равно обрабатываются скриптом? Могу и так сделать, но зачем?

> пользоваться циклами в 2017 — эпическое говноедство.
Почему?
Аноним 25/04/17 Втр 21:38:39  151752848
>>151752656
> запоминание момента в переменную
медленонфикс
Аноним 25/04/17 Втр 21:39:00  151752862
>>151752772
Дали тебе функционально программирование. На, пользуйся. Не хочу функциональное, хочу говно жрать!
Аноним 25/04/17 Втр 21:39:13  151752878
>>151752772
>Могу и так сделать, но зачем?
С такими структурами проще работать, как правило.

>Почему?
map, filter, reduce. Для всего остального — Ramda.
Аноним 25/04/17 Втр 21:39:28  151752896
>>151752656
for(int i = 0; i < n; i++){
if(arr[ i ][0] < now && arr[ i ][1] > now){
arr[i+1] //- следующий. Хватит мозни ебать, мне кажется, это просто толстый тролль.
}
}
Аноним 25/04/17 Втр 21:44:06  151753179
>>151752878
> map, filter, reduce
Гляну, спасибо.

>>151752896
Так блядь, а если текущего события, в котором может находиться now нет? Повторю, определить таким образом следующие событие и совсем дебил типа меня может.
Аноним 25/04/17 Втр 21:47:36  151753447
Изи вей:
1. Сортируешь массив от меньшего к большему
2. Бежишь по массиву, пока у текущего элемента начало будет меньше или равно now
3. Как только находишь элемент, у которого начало больше now, останавливаешься
4. ???????
5. ПРОФИТ!!1

Нормал вей:
Там выше фильтермапредьюсить предлагали, вот оно
Аноним 25/04/17 Втр 21:49:01  151753556
>>151753179
Ну так, если не найдено, бери первый, у которого начало после нау.
Аноним 25/04/17 Втр 21:49:07  151753565
int main void :
{
print "op hui"
return 0
}
Аноним 25/04/17 Втр 21:52:10  151753816
>>151753447
Ладно, попробую переписать на что-то более лучшее, чем цикл. Там глядишь и разберусь.

/тред
Аноним 25/04/17 Втр 21:52:56  151753868
>>151753816
Ты хоть циклом сделай, полуебок
Сколько ты уже погроммированием занимаешься?
Аноним 25/04/17 Втр 21:53:26  151753900
87h1K.png (466Кб, 479x891)
```
const index = arr.map((e, i) => {return {index: i, start: e[0], end: e[1]}})
.filter(i => i.start > now)
.sort((ls, rs) => ls.start > rs.start)[0].id;
```

Переводим в более удобный вид.
Фильтруем и оставляем только те, которые начинаются после твоего now.
Сортируем от меньшего к большему по началу.
Берём самый первый.
Аноним 25/04/17 Втр 21:55:29  151754053
ciH9c.png (310Кб, 269x539)
>>151753900
Если не нужен индекс в исходном массиве, то ещё лучше.

const time_range = arr.filter(e => e[0] > now).sort((ls, rs) => ls[0] > rs[0])
Аноним 25/04/17 Втр 21:56:20  151754112
>>151753868
Да у меня есть решение, на самом деле. Но оно страшное и я его даже выкладывать не хочу.

>>151753900
>>151754053
Сложно, но всё равно спасибо. Попробую, посмотрю что получится.
Аноним 25/04/17 Втр 21:56:21  151754115
>>151754053
> sort
СЛООЖНАААА
Аноним 25/04/17 Втр 21:58:32  151754266
На хаскеле кто-нибудь напишет?
Аноним 25/04/17 Втр 21:58:42  151754277
>>151750904 (OP)
А ещё какие то пидоры меня уверяли что в программировании математика НИНУЖНА!!!
Аноним 25/04/17 Втр 21:59:42  151754354
Q7iZueB.png (457Кб, 564x748)
>>151754277
При чём тут математика?
Аноним 25/04/17 Втр 22:00:32  151754420
1490810181022.jpg (64Кб, 720x960)
>>151754354
А что это по твоему нахуй?
Аноним 25/04/17 Втр 22:01:16  151754471
>>151754420
Логика?
Аноним 25/04/17 Втр 22:01:42  151754503
CkoU4Si.png (203Кб, 547x335)
>>151754420
Логика. Надеюсь, ты не полезешь в то, что всё программирование — высокоуровневая математика
Аноним 25/04/17 Втр 22:01:53  151754516
14900346740680.jpg (336Кб, 1151x1280)
>>151754471
Это высшая математика ващет.
Аноним 25/04/17 Втр 22:02:39  151754573
>>151754471
математика в школе её как раз и развивает, абстрактное мышление, а потом поехали - функторы, монады, каррирование.

мимоучительвшколе
Аноним 25/04/17 Втр 22:13:32  151755277
>>151754573
> функторы, монады, каррирование
>мимоучительвшколе
Хуясе ты модный. Мне в школе рассказывали только как папки создавать в консольке шиндошса, наверное, поэтому я такой даун вырос. Хаскель детишкам преподаешь?
Аноним 25/04/17 Втр 22:25:59  151756121
>>151755277
Мне осталось отработать месяц до конца года, а потом распределение подходит концу, и нахуй школу. Пойду аутсорсить в контору. В школе платят 125$, но только 3 рабочих дня.
> Хаскель
Современные дети только Версусбатлы и смотрят. Те, что постарше, в массе своей просто туповаты. Тех, кто хочет знаний в моём случае программировать несколько человек на всю старшую школу.
ну еще у меня школа даунов возможно
Аноним 25/04/17 Втр 22:35:26  151756833
>>151750904 (OP)
> как определить следующее событие
> Просто указать, что " if (now < arr[0]) {...} " не получится, ибо охватятся сразу все события, время начала которых больше, чем now.
Ну так и есть: все события, время начала которых больше, чем now - следующие события.

[Назад][Обновить тред][Вверх][Каталог] [Реквест разбана] [Подписаться на тред] [ ] 45 | 9 | 14
Назад Вверх Каталог Обновить

Топ тредов
Избранное