eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programming › Wspolne i rozne elementy tablicy.
Ilość wypowiedzi w tym wątku: 18

  • 11. Data: 2010-05-16 12:11:36
    Temat: Re: Wspolne i rozne elementy tablicy.
    Od: Mariusz Marszałkowski <m...@g...com>

    On 16 Maj, 12:39, "j...@f...adres.to"
    <w...@c...barg.cy> wrote:
    > Mariusz Marszałkowski wrote:
    > > On 15 Maj, 18:19, Michoo<m...@v...pl>  wrote:
    > >> Jacek pisze:
    >
    > >>> Macie jakis pomysl na prosty algorytm, ktory pokaze ilosc grup i zsumuje
    > >>> wartosci w poszczegolnych grupach?
    >
    > >> Sortujesz w dowolnym monotonicznym porządku. Zapisujesz pierwszy element
    > > To chyba najlepszy sposób.
    >
    > Aby uzyskać wynik taki, jak w twoim algorytmie, wystarczy tylko raz
    > przeglądnąć tablicę.
    Fakt, można wydajniej (ale kosztem większej pamięci) z użyciem
    hash-table.
    Pozdrawiam


  • 12. Data: 2010-05-16 12:25:47
    Temat: Re: Wspolne i rozne elementy tablicy.
    Od: Jacek <a...@o...pl>

    Dnia Sun, 16 May 2010 12:32:43 +0200, j...@f...adres.to napisał(a):

    > Jacek wrote:
    >> Witajcie.
    >> Szukam rozwiazania takiego problemu.
    >> Mamy tablice jednowymiarowa, 4-elementowa.
    >> Wyszukujemy elementy tej samej wartosci i te, ktore sie roznia.
    >> Przyklad:
    >> 1=2=3=4 - w wyniku mamy 1 grupe
    >> 1=2=3<>4 - w wyniku mamy 2 grupy
    >> 1=2& 3=4 - tez 2 gr.
    >> 1=3=4<>2 - rowniez 2
    >> ..i pozostale kombinacje
    >>
    >> Ostatnim przypadkiem bedzie 1<>2<>3<>4, czyli mamy 4 grupy.
    >> Ogolnie beda kombinacje: 1grupa, 2 grupy i 4 grupy.
    >> Macie jakis pomysl na prosty algorytm, ktory pokaze ilosc grup i zsumuje
    >> wartosci w poszczegolnych grupach?
    >> Moze jakis prosty przyklad?
    >>
    >> Pozdrawiam.
    >
    > Jeśli rzeczywiście chcesz jako wynik dostać liczbę podzbiorów o takich
    > samych elementach oraz dla każdego podzbioru sumę jego elementów, to
    > jest to banalnie proste do zaprogramowania nawet w czymś takim jak awk.
    >
    > Przykładowy kod w awk :
    >
    > { wynik[$0]+=$0 }
    > END { for (i in wynik) liczba_grup++
    > print "grup jest " liczba_grup
    > for (i in wynik) print "suma elementów o wartości " i " wynosi " wynik[i]
    > }
    >
    > Na przykład dla danych wejściowych:
    > 0
    > 0
    > 1
    > 1
    > 2
    > 2
    > 2
    >
    > jako wynik działania powyższego kodu otrzymasz:
    > grup jest 3
    > suma elementów o wartości 0 wynosi 0
    > suma elementow o wartości 1 wynosi 2
    > suma elementow o wartości 2 wynosi 6
    >
    >
    > j..

    Dzieki.
    Jak widac zle napisalem watek.
    Moze wiec tak:
    Mamy tablice 4 elementowa.
    Mamy takie kombinacje wyjsciowe:

    -jezeli wszystkie elementy maja rowne wartosci - liczymy sume tych
    elemetow,
    -jezeli 2 rowne i 2 rozne - w wyniku mamy 3 wartosci (suma dwoch rownych i
    wartosci dwoch roznych elementow),
    -3 rowne i 1 rozny - w wyniku mamy sume trzech rownych i wartosc czwartego
    elementu,
    -2 rowne i 2 rowne - dwie sumy,
    -4 rozne - cztery wartosci.

    Oczywiscie (dla np. drugiej kombinacji) moze byc tak:
    a(1)=a(2) i a(3)=a(4) ale tez a(1)=a(3) i a(2)=a(4) jak i a(1)=a(4) i
    a(2)=a(3)- to to samo logicznie, bo operujemy na dwoch 'grupach', ale sumy
    powinny byc liczone, gdy a(1)=a(2) i a(3)=a(4), to mamy a(1)+a(2) i
    a(3)+a(4) itd.
    Mam nadzieje, ze jasniej...
    Pozdrawiam.


  • 13. Data: 2010-05-16 12:55:58
    Temat: Re: Wspolne i rozne elementy tablicy.
    Od: Mariusz Marszałkowski <m...@g...com>

    On 16 Maj, 14:25, Jacek <a...@o...pl> wrote:
    > Dnia Sun, 16 May 2010 12:32:43 +0200, j...@f...adres.to napisał(a):
    >
    >
    >
    > > Jacek wrote:
    > >> Witajcie.
    > >> Szukam rozwiazania takiego problemu.
    > >> Mamy tablice jednowymiarowa, 4-elementowa.
    > >> Wyszukujemy elementy tej samej wartosci i te, ktore sie roznia.
    > >> Przyklad:
    > >> 1=2=3=4 - w wyniku mamy 1 grupe
    > >> 1=2=3<>4 - w wyniku mamy 2 grupy
    > >> 1=2&  3=4 - tez 2 gr.
    > >> 1=3=4<>2 - rowniez 2
    > >> ..i pozostale kombinacje
    >
    > >> Ostatnim przypadkiem bedzie 1<>2<>3<>4, czyli mamy 4 grupy.
    > >> Ogolnie beda kombinacje: 1grupa, 2 grupy i 4 grupy.
    > >> Macie jakis pomysl na prosty algorytm, ktory pokaze ilosc grup i zsumuje
    > >> wartosci w poszczegolnych grupach?
    > >> Moze jakis prosty przyklad?
    >
    > >> Pozdrawiam.
    >
    > > Jeśli rzeczywiście chcesz jako wynik dostać liczbę podzbiorów o takich
    > > samych elementach oraz dla każdego podzbioru sumę jego elementów, to
    > > jest to banalnie proste do zaprogramowania nawet w czymś takim jak awk.
    >
    > > Przykładowy kod w awk :
    >
    > > { wynik[$0]+=$0 }
    > > END { for (i in wynik) liczba_grup++
    > >   print "grup jest " liczba_grup
    > > for (i in wynik) print "suma elementów o wartości " i " wynosi " wynik[i]
    > > }
    >
    > > Na przykład dla danych wejściowych:
    > > 0
    > > 0
    > > 1
    > > 1
    > > 2
    > > 2
    > > 2
    >
    > > jako wynik działania powyższego kodu otrzymasz:
    > > grup jest 3
    > > suma elementów o wartości 0 wynosi 0
    > > suma elementow o wartości 1 wynosi 2
    > > suma elementow o wartości 2 wynosi 6
    >
    > > j..
    >
    > Dzieki.
    > Jak widac zle napisalem watek.
    > Moze wiec tak:
    > Mamy tablice 4 elementowa.
    > Mamy takie kombinacje wyjsciowe:
    >
    > -jezeli wszystkie elementy maja rowne wartosci - liczymy sume tych
    > elemetow,
    > -jezeli 2 rowne i 2 rozne - w wyniku mamy 3 wartosci (suma dwoch rownych i
    > wartosci dwoch roznych elementow),
    > -3 rowne i 1 rozny - w wyniku mamy sume trzech rownych i wartosc czwartego
    > elementu,
    > -2 rowne i 2 rowne - dwie sumy,
    > -4 rozne - cztery wartosci.
    >
    > Oczywiscie (dla np. drugiej kombinacji) moze byc tak:
    > a(1)=a(2) i a(3)=a(4) ale tez a(1)=a(3) i a(2)=a(4) jak i a(1)=a(4) i
    > a(2)=a(3)- to to samo logicznie, bo operujemy na dwoch 'grupach', ale sumy
    > powinny byc liczone, gdy a(1)=a(2) i a(3)=a(4), to mamy a(1)+a(2) i
    > a(3)+a(4) itd.
    > Mam nadzieje, ze jasniej...

    Teraz to zupełnie nic nie rozumiem :)

    Masz tablice N-elementową. Zakładając że każdy z elementów może
    trafić do zbioru co najwyżej jeden raz, możesz utworzyć z tej
    tablicy 2^N różnych zbiorów ( ze zbiorem pustym ).
    Np. dla a[0], a[1], a[2], masz:
    1) a[0],
    2) a[1],
    3) a[2],
    4) a[0],a[1],
    5) a[0],a[2],
    6) a[1],a[2],
    7) a[0],a[1],a[2],
    8) zbiór pusty

    Trzy elementy, czyli 2^3 = 8 zbiorów. Bez powtórzeń więcej
    się nie da, jest dokładnie 2^N.

    Teraz pytanie, co decyduje o tym które zbiory Cię interesują, a
    które nie?

    Pozdrawiam


  • 14. Data: 2010-05-16 13:12:41
    Temat: Re: Wspolne i rozne elementy tablicy.
    Od: Jacek <a...@o...pl>

    Czesc Mariusz.

    Chodzi o to, ze wystawiam fakture na podstawie 4 wartosci.
    Jezeli te wartosci sa rowne, to wystawiam 1 f. - suma wartosci.
    Jezeli wszystkie 4 wartosci sa rozne, to wystawiam 4 f.
    Nastepnie sa zaleznosci, jak opisalem w poscie wyzej, czyli:
    - 2 wartosci z 4-rech sa rowne i pozostale dwie sa rowne, wiec wystawie 2
    f.
    - 2 wartosci sa takie same, pozostale 2 rozne, wiec wystawie jedna na dwie
    rowne i dwie na te nierowne,
    - 3 wartosci sa takie same i jedna inna, wiec 1 f. na te 3 rowne i 1 f. na
    pozostala wartosc,
    Ogolnie chodzi o wybranie z tego zbioru elemtow rownych i roznych i
    umieszczenie ich w grupach.
    Mam nadzieje, ze przyklad obrazowy pomoze;)

    Chyba jednak wszytko to bede musial zalawic Case i If...


  • 15. Data: 2010-05-16 13:38:09
    Temat: Re: Wspolne i rozne elementy tablicy.
    Od: Mariusz Marszałkowski <m...@g...com>

    On 16 Maj, 15:12, Jacek <a...@o...pl> wrote:
    > Czesc Mariusz.
    >
    > Chodzi o to, ze wystawiam fakture na podstawie 4 wartosci.
    > Jezeli te wartosci sa rowne, to wystawiam 1 f. - suma wartosci.
    Czyli propozycja z sortowaniem i hash-table były dobre.
    Masz np. 7,4,7,7
    sortujesz:4,7,7,7
    pierwsza grupa to jedna czwórka
    druga grupa to 3 siódemki.

    Masz np. 2,3,2,3
    sortujesz:2,2,3,3
    pierwsza grupa to dwie dwójki, druga to dwie trójki.

    1) Sortujesz liczby.
    2) Zapamiętujesz w zmiennej x początkową liczbę
    3) Wrzucasz na pierwszą fakturę kolejne liczby, tak długo
    dopóki są równe x.
    4) Jeśli napotkałeś inną liczbę niż x, bierzesz następną
    fakturę, w x zapamiętujesz tą inną liczbę i znów
    wrzucasz tak długo do póki kolejne liczby są równe x.

    Pozdrawiam


  • 16. Data: 2010-05-16 13:38:13
    Temat: Re: Wspolne i rozne elementy tablicy.
    Od: "Marcin 'Qrczak' Kowalczyk" <q...@k...org.pl>

    On May 16, 3:12 pm, Jacek <a...@o...pl> wrote:
    [...]
    > Ogolnie chodzi o wybranie z tego zbioru elemtow rownych i roznych i
    > umieszczenie ich w grupach.
    > Mam nadzieje, ze przyklad obrazowy pomoze;)
    >
    > Chyba jednak wszytko to bede musial zalawic Case i If...

    Po co kombinować z case i if rozpatrując poszczególne przypadki
    osobno, skoro problem jest trywialny w ogólnym przypadku?

    Na przykład w Perlu:
    my @values = (10, 20, 30, 20); # Przykład.
    my %groups = ();
    foreach my $value (@values) {$groups{$value}++}
    foreach my $value (keys %groups) {print "$groups{$value} x $value\n"}

    Wynik:
    1 x 30
    1 x 10
    2 x 20


  • 17. Data: 2010-05-17 14:23:09
    Temat: Re: Wspolne i rozne elementy tablicy.
    Od: Jacek <a...@o...pl>

    Dnia Sun, 16 May 2010 06:38:13 -0700 (PDT), Marcin 'Qrczak' Kowalczyk
    napisał(a):

    > On May 16, 3:12 pm, Jacek <a...@o...pl> wrote:
    > [...]
    >> Ogolnie chodzi o wybranie z tego zbioru elemtow rownych i roznych i
    >> umieszczenie ich w grupach.
    >> Mam nadzieje, ze przyklad obrazowy pomoze;)
    >>
    >> Chyba jednak wszytko to bede musial zalawic Case i If...
    >
    > Po co kombinować z case i if rozpatrując poszczególne przypadki
    > osobno, skoro problem jest trywialny w ogólnym przypadku?
    >
    > Na przykład w Perlu:
    > my @values = (10, 20, 30, 20); # Przykład.
    > my %groups = ();
    > foreach my $value (@values) {$groups{$value}++}
    > foreach my $value (keys %groups) {print "$groups{$value} x $value\n"}
    >
    > Wynik:
    > 1 x 30
    > 1 x 10
    > 2 x 20

    No dziekuje bardzo. Wyglada na to, ze rozwiazuje moj problem.
    Ale wystapil kolejny... nie znam Perla.
    Daloby sie to przerobic do VB?


  • 18. Data: 2010-05-17 14:29:46
    Temat: Re: Wspolne i rozne elementy tablicy.
    Od: "Stachu 'Dozzie' K." <d...@g...eat.some.screws.spammer.invalid>

    On 2010-05-17, Jacek <a...@o...pl> wrote:
    > Dnia Sun, 16 May 2010 06:38:13 -0700 (PDT), Marcin 'Qrczak' Kowalczyk
    > napisał(a):
    >
    >> On May 16, 3:12 pm, Jacek <a...@o...pl> wrote:
    >> [...]
    >>> Ogolnie chodzi o wybranie z tego zbioru elemtow rownych i roznych i
    >>> umieszczenie ich w grupach.
    >>> Mam nadzieje, ze przyklad obrazowy pomoze;)
    >>>
    >>> Chyba jednak wszytko to bede musial zalawic Case i If...
    >>
    >> Po co kombinować z case i if rozpatrując poszczególne przypadki
    >> osobno, skoro problem jest trywialny w ogólnym przypadku?
    >>
    >> Na przykład w Perlu:
    >> my @values = (10, 20, 30, 20); # Przykład.
    >> my %groups = ();
    >> foreach my $value (@values) {$groups{$value}++}
    >> foreach my $value (keys %groups) {print "$groups{$value} x $value\n"}
    >>
    >> Wynik:
    >> 1 x 30
    >> 1 x 10
    >> 2 x 20
    >
    > No dziekuje bardzo. Wyglada na to, ze rozwiazuje moj problem.
    > Ale wystapil kolejny... nie znam Perla.
    > Daloby sie to przerobic do VB?

    Szukasz słowa kluczowego: tablica haszująca (hash map).

    --
    Secunia non olet.
    Stanislaw Klekot

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: