| 
	| 
	
	| 
		
	| 
			
			 
			
				13.07.2015, 14:37
			
			
			
		 |  
	| 
		
			
			| Новичок на форуме       |  | 
					Регистрация: 13.07.2015 
						Сообщений: 1
					 
		
 |  |  
	| 
				Алгоритм для слияния элементов массива с datetime
			 Туплю, не могу придумать алгоритм, который бы из такой структуры данных 
	
 
	| Код: |  
	| 19.07.2015 6:00
19.07.2015 7:00
19.07.2015 8:00
19.07.2015 14:00
19.07.2015 15:00
19.07.2015 16:00
19.07.2015 20:00
19.07.2015 21:00 |  
	
 
сделал такую
 
	
 
	| Код: |  
	| 19.07.2015 6:00 - 8:00
19.07.2015 14:00 - 16:00
19.07.2015 20:00 - 21:00 |  
	
 
Интересно найти алгоритмически красивое решение |  |  
	| 
		
	| 
			
			 
			
				13.07.2015, 14:41
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 23.10.2010 
						Сообщений: 2,718
					 
		
 |  |  
	| Сначала в long преобразуйте, там виднее будет как квантовать по часам. |  |  
	| 
		
	| 
			
			 
			
				13.07.2015, 15:07
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 14.01.2015 
						Сообщений: 12,989
					 
		
 |  |  
	| А по какому принципу определяются именно эти интервалы?
 6:00 - 8:00
 14:00 - 16:00
 20:00 - 21:00
 |  |  
	| 
		
	| 
			
			 
			
				13.07.2015, 15:11
			
			
			
		 |  
	| 
		
			|  | CacheVar       |  | 
					Регистрация: 19.08.2010 
						Сообщений: 14,298
					 
		
 |  |  
	| 
	
 
	| Сообщение от laimas |  
	| А по какому принципу определяются именно эти интервалы? 
 6:00 - 8:00
 14:00 - 16:00
 20:00 - 21:00
 |  
	
 2, 2, 1   |  |  
	| 
		
	| 
			
			 
			
				13.07.2015, 15:14
			
			
			
		 |  
	| 
		
			|  | CacheVar       |  | 
					Регистрация: 19.08.2010 
						Сообщений: 14,298
					 
		
 |  |  
	| 
	
 
	| Сообщение от romapost   |  
	| Туплю, не могу придумать алгоритм, который бы из такой структуры данных 
 
 
сделал такую
	
 
	| Код: |  
	| 19.07.2015 6:00
19.07.2015 7:00
19.07.2015 8:00
19.07.2015 14:00
19.07.2015 15:00
19.07.2015 16:00
19.07.2015 20:00
19.07.2015 21:00 |  
	
 
 
Интересно найти алгоритмически красивое решение
	
 
	| Код: |  
	| 19.07.2015 6:00 - 8:00
19.07.2015 14:00 - 16:00
19.07.2015 20:00 - 21:00 |  
	
 |  
	
 Цикл с 0 с шагом 3... Концовку брать "через 1", если оного нет - брать у следующего.   |  |  
	| 
		
	| 
			
			 
			
				13.07.2015, 15:18
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 27.05.2010 
						Сообщений: 33,150
					 
		
 |  |  
	|   
for (var a = [6, 7, 8, 14, 15, 16, 20, 21], c = [], temp, i = 0; i < a.length; i++)
    if (!temp && (temp = a[i]), void 0 !== a[i + 1] && 1 < a[i + 1] - a[i] || i == a.length - 1) c.push(temp + " - " + a[i]), temp = !1;
alert(c);
 |  |  
	| 
		
	| 
			
			 
			
				13.07.2015, 15:24
			
			
			
		 |  
	| 
		
			|  | CacheVar       |  | 
					Регистрация: 19.08.2010 
						Сообщений: 14,298
					 
		
 |  |  
	| Мои 5коп...    
var a = [6, 7, 8, 14, 15, 16, 20, 21];
var b=[];
for (var i = 0; i < a.length; i+=3) {
	b[b.length]=a[i]+' - '+((a[i+2])? a[i+2]: a[i+1]);
};
alert(b);
 |  |  
	| 
		
	| 
			
			 
			
				13.07.2015, 15:28
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 27.05.2010 
						Сообщений: 33,150
					 
		
 |  |  
	| ksa,если добавить 9 уже будет неправильно
 |  |  
	| 
		
	| 
			
			 
			
				13.07.2015, 15:29
			
			
			
		 |  
	| 
		
			|  | CacheVar       |  | 
					Регистрация: 19.08.2010 
						Сообщений: 14,298
					 
		
 |  |  
	| 
	
 
	| Сообщение от рони |  
	| если добавить 9 уже будет неправильно |  
	
 Это громко сказано... Потому как общего примера нет, как и "правильного" алгоритма.    
Вопрос был "как это перевести в то", мой пример делает это.   
Может это твой пример будет не правильным.    |  |  
	| 
		
	| 
			
			 
			
				13.07.2015, 15:33
			
			
			
		 |  
	| 
		
			|  | CacheVar       |  | 
					Регистрация: 19.08.2010 
						Сообщений: 14,298
					 
		
 |  |  
	| рони, для "9-ти"...    
var a = [6, 7, 8, 14, 15, 16, 20, 21];
var b=[];
for (var i = 0; i < a.length-1; i+=3) {
	b[b.length]=a[i]+' - '+((a[i+2])? a[i+2]: a[i+1]);
};
alert(b);
 |  |  |  |