eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programming › Jak zrobić grupowanie w kolejności
Ilość wypowiedzi w tym wątku: 16

  • 1. Data: 2019-11-18 14:09:45
    Temat: Jak zrobić grupowanie w kolejności
    Od: Borneq <b...@a...hidden.p>

    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


  • 2. Data: 2019-11-18 15:22:43
    Temat: Re: Jak zrobić grupowanie w kolejności
    Od: "M.M." <m...@g...com>

    On Monday, November 18, 2019 at 2:09:47 PM UTC+1, Borneq wrote:
    > Mam liczby 1,5,7,10,100,5,6,
    > jak zrobić grupy o co najmniej sumie 10

    Potrzebujesz dowolną grupę, jakąś konkretną, wszystkie grupy?

    Pozdrawiam


  • 3. Data: 2019-11-18 15:28:23
    Temat: Re: Jak zrobić grupowanie w kolejności
    Od: Borneq <b...@a...hidden.p>

    W dniu 18.11.2019 o 15:22, M.M. pisze:
    > On Monday, November 18, 2019 at 2:09:47 PM UTC+1, Borneq wrote:
    >> Mam liczby 1,5,7,10,100,5,6,
    >> jak zrobić grupy o co najmniej sumie 10
    >
    > Potrzebujesz dowolną grupę, jakąś konkretną, wszystkie grupy?
    >
    > Pozdrawiam
    >
    Wszystkie, chcę łączyć stringi, aby miały conajmniej jakąś długość.


  • 4. Data: 2019-11-18 15:47:21
    Temat: Re: Jak zrobić grupowanie w kolejności
    Od: g...@g...com

    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]]


  • 5. Data: 2019-11-18 15:57:45
    Temat: Re: Jak zrobić grupowanie w kolejności
    Od: g...@g...com

    W dniu poniedziałek, 18 listopada 2019 15:47:23 UTC+1 użytkownik g...@g...com
    napisał:
    > 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]]

    Ewentualnie jakbyś chciał, żeby ostatnia niepełna grupa też trafiała do listy, to
    wtedy zamiast ostatniego warunku byś musiał napisać:

    f [] [] = []
    f [] g = [g]


  • 6. Data: 2019-11-18 16:12:48
    Temat: Re: Jak zrobić grupowanie w kolejności
    Od: "M.M." <m...@g...com>

    On Monday, November 18, 2019 at 3:28:24 PM UTC+1, Borneq wrote:
    > W dniu 18.11.2019 o 15:22, M.M. pisze:
    > > On Monday, November 18, 2019 at 2:09:47 PM UTC+1, Borneq wrote:
    > >> Mam liczby 1,5,7,10,100,5,6,
    > >> jak zrobić grupy o co najmniej sumie 10
    > >
    > > Potrzebujesz dowolną grupę, jakąś konkretną, wszystkie grupy?
    > >
    > > Pozdrawiam
    > >
    > Wszystkie, chcę łączyć stringi, aby miały conajmniej jakąś długość.

    I tak że jeśli jakiś wyraz był na pozycji np. drugiej, a inny wyraz
    na pozycji trzeciej, to po złączeniu nie zamienią się kolejnością, tylko
    nadal będzie złączenie drugi+trzeci?

    Pozdrawiam


  • 7. Data: 2019-11-18 19:47:48
    Temat: Re: Jak zrobić grupowanie w kolejności
    Od: Borneq <b...@a...hidden.p>

    W dniu 18.11.2019 o 16:12, M.M. pisze:
    > I tak że jeśli jakiś wyraz był na pozycji np. drugiej, a inny wyraz
    > na pozycji trzeciej, to po złączeniu nie zamienią się kolejnością, tylko
    > nadal będzie złączenie drugi+trzeci?

    Tak, chodziło mi o najprostszy przypadek, napisałem szybko powyższą
    pętlę, tylko się okazuje że nie uwzględnia przypadków gdy pierwszy
    krótki a drugi długi.


  • 8. Data: 2019-11-18 19:51:18
    Temat: Re: Jak zrobić grupowanie w kolejności
    Od: Borneq <b...@a...hidden.p>

    W dniu 18.11.2019 o 15:47, g...@g...com pisze:
    > 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,
    > groups [1,5,7,10,100,5,6] (\x -> (sum x) >= 10)
    > [[1,5,7],[10],[100],[5,6]]
    >

    Ten przykład niezbyt dobry, bo 5 <10 i mój sposób też zadziała,
    ale weźmy:
    1,10,7,3,10,100,5,6,


  • 9. Data: 2019-11-18 20:08:38
    Temat: Re: Jak zrobić grupowanie w kolejności
    Od: g...@g...com

    W dniu poniedziałek, 18 listopada 2019 19:51:20 UTC+1 użytkownik Borneq napisał:

    >
    > >> Mam liczby 1,5,7,10,100,5,6,
    > > groups [1,5,7,10,100,5,6] (\x -> (sum x) >= 10)
    > > [[1,5,7],[10],[100],[5,6]]
    > >
    >
    > Ten przykład niezbyt dobry, bo 5 <10 i mój sposób też zadziała,
    > ale weźmy:
    > 1,10,7,3,10,100,5,6,

    To mi daje coś takiego:

    [[1,10],[7,3],[10],[100],[5,6]]

    Tutaj sobie możesz potestować:

    https://rextester.com/HGC85517


  • 10. Data: 2019-11-18 23:40:51
    Temat: Re: Jak zrobić grupowanie w kolejności
    Od: g...@g...com

    W dniu poniedziałek, 18 listopada 2019 20:08:40 UTC+1 użytkownik g...@g...com
    napisał:
    > W dniu poniedziałek, 18 listopada 2019 19:51:20 UTC+1 użytkownik Borneq napisał:
    >
    > >
    > > >> Mam liczby 1,5,7,10,100,5,6,
    > > > groups [1,5,7,10,100,5,6] (\x -> (sum x) >= 10)
    > > > [[1,5,7],[10],[100],[5,6]]
    > > >
    > >
    > > Ten przykład niezbyt dobry, bo 5 <10 i mój sposób też zadziała,
    > > ale weźmy:
    > > 1,10,7,3,10,100,5,6,
    >
    > To mi daje coś takiego:
    >
    > [[1,10],[7,3],[10],[100],[5,6]]
    >
    > Tutaj sobie możesz potestować:
    >
    > https://rextester.com/HGC85517

    Trochę poprawiłem nazwy i formatowanie, może teraz będzie nieco czytelniejsze:
    https://rextester.com/CRWPJS53169

strony : [ 1 ] . 2


Szukaj w grupach

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: