2017-02-09 56 views
5

Chciałbym podzielić listę na Qore tak:Jak podzielić długą listę na kawałki w Qore

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

pożądany wynik:

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

Tj Chcę wziąć (podobno długą) listę i podzielić ją na fragmenty o zadanej (maksymalnej) długości.

mogę zrobić to lubią:

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; 
} 

Ale to nie jest bardzo elegancki, prawda?

Jakieś lepsze rozwiązanie?

+3

Czy to kwestia zasługują tag języka? – doctorlove

+0

Niestety Qore nie ma jeszcze tagu. – omusil

+1

@doctorlove Dodałem tag – Jirka

Odpowiedz

7

można zrobić to w ten sposób:

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

musisz dodać 'sub' do twojego kodu przykładowego –

+0

@DavidNichols: Naprawiono, dziękuję. –