2017-02-09 2 views
5

Я хотел бы разделить список в QORE так:Как разбить длинный список на куски в QORE

list a = (1,2,3,4,5,6); 
list pieces = split_list_into_pieces(a, 2); 
printf("%y\n", pieces); 

Желаемая выход:

[[1,2], [3,4], [5,6]] 

Т.е. Я хочу взять (предположительно длинный) список и разбить его на куски заданной (макс.) Длины.

я могу сделать это нравится:

list sub split_list_into_pieces(list a, int length) 
{ 
    int i = 0; 
    list ret =(); 
    list temp =(); 
    foreach any x in (a) 
    { 
     temp += x; 
     i++; 
     if (i == length) 
     { 
      push ret, temp; 
      temp =(); 
      i = 0; 
     } 
    } 
    if (temp) 
    { 
     push ret, temp; 
    } 
    return ret; 
} 

Но это не очень элегантно, это?

Любое лучшее решение?

+3

заслуживает ли этот вопрос языкового тег? – doctorlove

+0

К сожалению, у Qore еще нет тегов. – omusil

+1

@doctorlove Я добавил тэг – Jirka

ответ

7

вы можете сделать это следующим образом:

list sub list_chunk(list a, int length) { 
    list result =(); 
    while (a) 
     push (result, extract (a, 0, length)); 
    return result; 
} 
+1

вам нужно добавить 'sub' к вашему примеру код –

+0

@DavidNichols: Исправлено, спасибо. –

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