Hollosi Information eXchange /HIX/
HIX CODER 37
Copyright (C) HIX
1998-02-28
Új cikk beküldése (a cikk tartalma az író felelőssége)
Megrendelés Lemondás
1 Re: Karakterfelismeres (mind)  93 sor     (cikkei)
2 Re: ask (mind)  9 sor     (cikkei)
3 Re: Bemutatkozas, elkereses tipp, instr.clk (mind)  23 sor     (cikkei)

+ - Re: Karakterfelismeres (mind) VÁLASZ  Feladó: (cikkei)

On 25 Feb 98 at 14:14,  > wrote:

Bocs, hogy csak most valaszolok, elegge el vagyok itt most asva.

> A megoldas a kovetkezo:
> v&((v-1)^0xff)

Aranyos :) Bar ez kicsit mas jellegu, nem atmenetet keres, hanem 1-es 
pixelt, es mint kesobb irtad, "alulrol".

> Megjegyzem ezzel a megoldassal mehetsz gyorsabban is mint 8 pixel,
> csak a 0xff-et kell nagyobbra venni, na meg a regiszter meretet. :-)

Persze, mint kesobb irod, ha olyan sorrendben lennenek a pixelek. 
(Errol eleg hosszan meseltem en is korabban.) Szoval meg egyszer: Ez 
a bitsorrend little endian gepen nagyon rossz, de ha nem tartjuk 
magunkat ahhoz, ahogy masok is megszoktak, abbol esetleg kesobb 
bonyodalmak es nehezen keresheto bug-ok lesznek. Annyit valoszinu nem 
er meg a dolog, hogy csak a feher-fekete atmenet kereses miatt 
atforgassa az ember a kepet.

[ugyanez neg-gel]
> Na szoval valahogy igy nezne ki: (AL-ben a vizsgalt byte)
>  MOV BL,AL
>  NEG BL
>  AND BL,AL
[...]
> hosszuak, ugyhogy ez az egesz itt 6 orajel alatt lefut elmeletileg
> 386-on, pentiumon pedig ugy saccolom, hogy olyan 3 orajel lehet.
> Ez mar eleg jo nem? :-)

:)

Most hirtelen en sem tudom, hogy a neg az parba allithato-e a 
pentiumon, de ha igen, akkor erdemesebb igy csinalni:

mov bl,al
neg al
and al,bl

Ez 2 orajel lenne csak, mert a mov es a neg parhuzamosan 1 orajel 
alatt megvan.

> Ezzel kapcsolatban jut eszembe, van egy hasonlo feladat, es a megoldas
> is hasonlo:
> hogyan lehet eldonteni gyorsan egy szamrol, hogy 2 hatvanya-e vagy sem.
> Megoldast most nem irok, kivancsian varom hogy ismeritek-e.

Igen, ilyen mar kellett nekem is :)
(X-1) & X == 0

--------------------

No, a ket napos feladatra nem jott valasz, ughogy elarulom:

Szoval a feladat az volt, hogy csak azokat az atmeneteket kellene 
megtalalni, amiket eddig meg nem jartunk be, es a bejarast egy 
parhuzamos bitmapben tartjuk nyilvan.

eleje:
mov ah,dl ; dl-ben volt az elozo byte, a legalso pixelje erdekes 
mov al,bitmap[esi]
mov dl,al
shr ax,1 ; minden pixel alatt ott lesz a tole balra allo
not al
and al,dl ; ha 0 pixel van 1 elott, akkor ott 1-es bit lesz
xor al,konturmap[esi] ; es ha meg nincs bejarva, ugy is marad
jnz atmenetvan
inc esi
jmp eleje

Ez a lenyege a dolognak. Ha mar atmenet van, akkor meg kulon ki kell 
talalni, hogy melyik azok kozul a legbaloldali (mert elvileg egy 
byte-on belul tobb is lehet), de az mar szinte mindegy, hogy milyen 
lassan tortenik, mert ebbol csak laponta nehany ezer lesz, mig bejart 
atmenetbol (ahol a konturmap nem 0) tobb szazezer.

A fenti ciklus jol mukodik a byte-ok kozott is, ettol kicsit 
hosszabb, mint a lenyege. Viszont a valosagben ennel kicsit meg 
hosszabbat erdemes csinalni, mert erdemes figyelni azt is, hogy hatha 
csupa 0 byte-ba akadunk, mert akkor azt (es a rakovetkezo csupa 
0-akat) kulon sokkal gyorsabban at lehet lepni. Olyanbol nagyon sok 
lesz (ket betusor koztt peldaul), ugyhogy erdemes ra figyelni.

Egyebkent bocs, fiuk, lehet, hogy kicsit felrevezeto volt a kerdes,
mert mint latszik, nem arra megy ki az algoritmus, hogy az ELSO 
atmenetet talalja meg gyorsan, hanem, hogy a be NEM jart atmeneteket 
talalja meg gyorsan. Kicsit probaltam a kerdesben erre utalni, de 
lehet, hogy nem sikerult elegge.

István
--  Istvan Marosi  --  http://www.sch.bme.hu/~marosi  --
--  Recosoft Ltd.  --  mailto:  --
+ - Re: ask (mind) VÁLASZ  Feladó: (cikkei)

>Win95-ben hogyan tudko egy prg-t tarsitani egy masikkal??
>Tehat ha elinditom az egyiket automatikusan induljon el egy altalam
>kivalasztott masik???

Irj egy bat file-t es azt inditsd el :-)

Udv

Kesjar Attila
+ - Re: Bemutatkozas, elkereses tipp, instr.clk (mind) VÁLASZ  Feladó: (cikkei)

Hi!

>On  6 Feb 98 at 9:26,  wrote:

> Szoval varok otleteket, hogy nehany logikai muvelettel (and, or, xor,
>shift)  hogyan lehet eldonteni azt, hogy van-e feher-fekete atmenet (ahol
>a bal oldali feher pixelt egy fekete pixel koveti jobbrol) az adott
 wrote:

Sajnos nem olvastam a teljes levelet, mostanaban kezdtem nezegetni a
listat.

En annak idejen mas jellegu problemaval foglalkoztam, de asszem eleg
jo megoldas volt egy 256 byte-os tabla. Egy index registerhez
hozzaadod a kiolvasott erteket es a tablabol indexelve kiszeded a 
megfelelo valaszt.
Bar ez nem oldja meg a byte also bitje es a kovetkezo byte felso
bitjenek vizsgalatat, de azt is +2 AND utasitassal elerheted.

00: 0 8 7 7 6 6 6 6 5  ...  <- itt ertendo, melyik biten van valtas
                            ; 0 nincs

byte, kov

AGYKONTROLL ALLAT AUTO AZSIA BUDAPEST CODER DOSZ FELVIDEK FILM FILOZOFIA FORUM GURU HANG HIPHOP HIRDETES HIRMONDO HIXDVD HUDOM HUNGARY JATEK KEP KONYHA KONYV KORNYESZ KUKKER KULTURA LINUX MAGELLAN MAHAL MOBIL MOKA MOZAIK NARANCS NARANCS1 NY NYELV OTTHON OTTHONKA PARA RANDI REJTVENY SCM SPORT SZABAD SZALON TANC TIPP TUDOMANY UK UTAZAS UTLEVEL VITA WEBMESTER WINDOWS