eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingJak zrobić grupowanie w kolejności › Re: Jak zrobić grupowanie w kolejności
  • X-Received: by 2002:aed:2572:: with SMTP id w47mr27885789qtc.36.1574088442130; Mon,
    18 Nov 2019 06:47:22 -0800 (PST)
    X-Received: by 2002:aed:2572:: with SMTP id w47mr27885789qtc.36.1574088442130; Mon,
    18 Nov 2019 06:47:22 -0800 (PST)
    Path: news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!3.eu.feeder.erj
    e.net!feeder.erje.net!weretis.net!feeder7.news.weretis.net!proxad.net!feeder1-2
    .proxad.net!209.85.160.216.MISMATCH!j16no520202qtl.0!news-out.google.com!p4ni10
    62qtu.1!nntp.google.com!j16no520199qtl.0!postnews.google.com!glegroupsg2000goo.
    googlegroups.com!not-for-mail
    Newsgroups: pl.comp.programming
    Date: Mon, 18 Nov 2019 06:47:21 -0800 (PST)
    In-Reply-To: <5dd2981a$0$17364$65785112@news.neostrada.pl>
    Complaints-To: g...@g...com
    Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=213.192.68.153;
    posting-account=f7iIKQoAAAAkDKpUafc-4IXhmRAzdB5r
    NNTP-Posting-Host: 213.192.68.153
    References: <5dd2981a$0$17364$65785112@news.neostrada.pl>
    User-Agent: G2/1.0
    MIME-Version: 1.0
    Message-ID: <9...@g...com>
    Subject: Re: Jak zrobić grupowanie w kolejności
    From: g...@g...com
    Injection-Date: Mon, 18 Nov 2019 14:47:22 +0000
    Content-Type: text/plain; charset="UTF-8"
    Content-Transfer-Encoding: quoted-printable
    Xref: news-archive.icm.edu.pl pl.comp.programming:214440
    [ ukryj 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: