Hollosi Information eXchange /HIX/
HIX CODER 1328
Copyright (C) HIX
2001-10-21
Új cikk beküldése (a cikk tartalma az író felelőssége)
Megrendelés Lemondás
1 Re: NxN matrix algoritmikus bejarasa (mind)  56 sor     (cikkei)
2 Tarcsazas VC-vel (mind)  13 sor     (cikkei)

+ - Re: NxN matrix algoritmikus bejarasa (mind) VÁLASZ  Feladó: (cikkei)

On 19 Oct 01, at 15:13,   wrote:

> Hi Coders!

Szevasz,

> Mikent lehet bejarni algoritmikusan egy
> NxN (N>=2) matrixot (gyki. 8x8 ill. 16x16).
>
> A lenyeg, hogy minden kockara
> csak egyszer lephetunk.
 ....
> Lehetoleg jo trukkosok

Csinalhatsz mondjuk olyat, hogy veszel egy N-nel nagyobb 2
hatvanyt, ez legyen 2^X. Eztan novelsz egy szamot egyesevel 0-tol
(2^(2*X)-1)-ig. Ez tehat egy 2*X hosszu bitsorozat lesz, es a szam
minden ilyen erteket felvesz. Minden lepesben a szambol eloallitod
a ket indexet ugy, hogy akarmilyen modon kiveszel X darab bitet
az egyik szamhoz, a maradek X darab bitet a masik szamhoz. A
szamot a bitekbol akarmilyen sorrendben osszeallithatod, xor-
olhatod egy masik X hosszu bitsorozattal, stb. Vegulis igy lesz ket
X bites szamod, amik teljesen osszevissza sorrendben kovetik
egymast ahogy egyesevel noveled a szulojuket. Azokat az index
parokat persze kihagyod, amikben legalabb az egyik kialakult
szam erteke nagyobb, mint N.

Pl. egy egyszerubbik fajta kutyulas: (N<=32 eseten 5+5 bit
elegendo a ket indexhez, szoval a szamolas 1023-ig megy)

int bit(int b, int x)
{
	if (x & (1<<b)) return 1;		// az x szam b bitje 1-es
	else return 0;
}

int otbit(int b4, int b3, int b2, int b1, int b0)
{
	return b0+2*(b1+2*(b2+2*(b3+2*b4)));
}

for (int i=0; i<1024; i++) {
	int x =  otbit(bit(0,i), bit(2,i), bit(4,i), bit(6,i), bit(8,i));
	int y =  otbit(bit(1,i), bit(3,i), bit(5,i), bit(7,i), bit(9,i));
	x ^= 23;	// invertalunk nehany bitet: 10111
	y ^= 17;	// mas biteket invertalunk:  10001
	if (x>=N || y >=N)
		continue;
	printf("tomb[%d,%d] = %d\n", x, y, tomb[x][y]);
}

> p.s.: a ZigZag Marosi Istvan jovoltabol megvan :)

Szerintem ez attol sokkal rondabb :))

István
+ - Tarcsazas VC-vel (mind) VÁLASZ  Feladó: (cikkei)

Sziasztok!

  A kovetkezo problemam volna:
Visual C++ (6.0) alatt - peldaul - egy gomb megnyomasara szeretnek egy elore
beallitott telefonos csatlakozast elinditani.
  Ezt a WinExec (...) nevu fugvennyel probaltam, s a csatlakozasra hivatkozo
shortcut-ot adtam at neki, de igy - mint utolag kiderult - nem helyes.

  Melyik programmal/milyen kapcsolokkal kell megadnom, hogy tenylegesen
elinduljon a tarcsazas?

Valaszaitokat elore is koszonom:
  Szabo Gabor

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