eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingPrzekrój przedziałówRe: Przekrój przedziałów
  • Path: news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!not
    -for-mail
    From: Michoo <m...@v...pl>
    Newsgroups: pl.comp.programming
    Subject: Re: Przekrój przedziałów
    Date: Fri, 29 May 2009 15:58:23 +0200
    Organization: http://onet.pl
    Lines: 36
    Message-ID: <gvopk3$99c$1@news.onet.pl>
    References: <gvntia$574$1@inews.gazeta.pl>
    NNTP-Posting-Host: c2-211.icpnet.pl
    Mime-Version: 1.0
    Content-Type: text/plain; charset=ISO-8859-2; format=flowed
    Content-Transfer-Encoding: 8bit
    X-Trace: news.onet.pl 1243605443 9516 62.21.2.211 (29 May 2009 13:57:23 GMT)
    X-Complaints-To: n...@o...pl
    NNTP-Posting-Date: Fri, 29 May 2009 13:57:23 +0000 (UTC)
    User-Agent: Thunderbird 2.0.0.19 (X11/20090105)
    In-Reply-To: <gvntia$574$1@inews.gazeta.pl>
    Xref: news-archive.icm.edu.pl pl.comp.programming:182172
    [ ukryj nagłówki ]

    Wojciech "Spook" Sura pisze:
    > Witam!
    >
    > W jaki sposób najszybciej (włączając w to assemblera) znaleźć przekrój dwóch
    > przedziałów?
    >
    > Formalnie: Niech [A, B] i [C, D] będą dwoma domkniętymi przedziałami takimi,
    > że A, B, C, D : integer. Szukany jest największy przedział [E, F] taki, że
    > [E, F] zawiera się zarówno w [A, B] jak i w [C, D].
    >
    > Zapis przedziałów może być dowolny, ale możemy przyjąć, że jest to:
    >
    > type TRange = record
    > Left, Right : integer;
    > end;
    >
    > Mój pomysł jest taki:
    >
    > function Intersection(RangeA, RangeB : TRange; ResultIntersection : TRange)
    > : boolean;
    >
    > begin
    > ResultIntersection.left:=max(RangeA.left, RangeB.left);
    > ResultIntersection.right:=min(RangeA.right, RangeB.right);
    > result:=(ResultIntersection.left<=ResultIntersection
    .right);
    > end;
    >
    > Czy da się szybciej?
    Asembler raczej nie da Ci tu specjalnej wydajności. Jedno co może
    _odrobinę_ pomóc to pozbycie się wywołania min/max na rzecz if-else. I
    ewentualnie pozbycie się wywołania samego Intersection (delphi obsługuje
    funkcje inline albo makra?).

    --
    Pozdrawiam
    Michoo

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj

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: