2013-11-09 4 views
0

У меня есть запрос, который возвращает количество объектов, сгруппированных этими объектами в таблице, хотя то, что я хочу сделать после этого, - это сначала отсортировать значения от наивысшего до самого низкого и разбить их на 10 групп ,Clojure - разбиение на разделы по заданному значению

Что я до сих пор разрешаю сортировать подсчитанные значения от max до min или, если я прокомментирую сортировку или разбиваю значения на заданное число. Я хотел бы знать, где я здесь не так, потому что я не вижу его. Я потянув количество объектов из запроса на начальном этапе, сортировки, а затем пытается разделить их в массивы, которые я индексируют на более поздней стадии:

tosort(map(keyword :objectscounted)data) 
sorted(sort > tosort) 
part(into [] (partition-all 10 sorted)) 

Где я тоже застрял есть при использовании раздела - мне нужно 10 групп значений, а не 10 значений в каждой группе, любая помощь здесь оценена! Заранее спасибо

ответ

1

Если я правильно понял вашу проблему, все, что вам нужно разделить динамически в соответствии с sorted список вашего элемента подсчитывать:

user> (def v (range 50)) 
#'user/v 
user> (clojure.pprint/pprint (partition-all (/ (count v) 10) v)) 
((0 1 2 3 4) 
(5 6 7 8 9) 
(10 11 12 13 14) 
(15 16 17 18 19) 
(20 21 22 23 24) 
(25 26 27 28 29) 
(30 31 32 33 34) 
(35 36 37 38 39) 
(40 41 42 43 44) 
(45 46 47 48 49)) 

Конечно, если общие элементы не делится на 10, результат будет имеют более 10 групп, если у вас нет другой стратегии распределения элементов среди групп.

Смежные вопросы