eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingJak zrobić grupowanie w kolejności › Re: Jak zrobić grupowanie w kolejności
  • Data: 2019-11-18 15:47:21
    Temat: Re: Jak zrobić grupowanie w kolejności
    Od: g...@g...com szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    W dniu poniedziałek, 18 listopada 2019 14:09:47 UTC+1 użytkownik Borneq napisał:
    > Mam liczby 1,5,7,10,100,5,6,
    > jak zrobić grupy o co najmniej sumie 10, nie zmieniając kolejności tak jak:
    > (1,5,7),(10),(100),(5,6),
    > zamiast liczb mogą być długości stringów,
    > mogę najprościej:
    > vector<wstring> vec;
    > vector<wstring> veclongs;
    >
    > int n = 0;
    > for (int i = 0; i < vec.size(); i++)
    > {
    > if (i == 0 || vec[i].length() > 10)
    > {
    > veclongs.push_back(vec[i]);
    > n++;
    > }
    > else veclongs.back() = veclongs.back() + vec[i];
    > }
    > return veclongs;
    >
    > Jedna wada to i==0 bo inaczej nie da rady veclongs.back()
    > co gdy pierwszy będzie mały np 5 a pozostałe wystarczajace?
    > np: 5,10,10,10, - bez grupowania
    > a trzeba (5,10),10,10
    > Jak to zrobić, niby prosto bo bez zmiany kolejności


    W Haskellu na szybko:

    groups :: [a] -> ([a] -> Bool) -> [[a]]
    groups list c = f list []
    where f (h:t) g | (c (g++[h])) = [g++[h]]++(f t [])
    f (h:t) g = f t (g++[h])
    f [] g = []

    groups [1,5,7,10,100,5,6] (\x -> (sum x) >= 10)
    [[1,5,7],[10],[100],[5,6]]

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: