Kezdőoldal » Számítástechnika » Programozás » Hogy kell triád-számláló...

Hogy kell triád-számláló függvényt írni?

Figyelt kérdés

Ha jól értem, akkor a triád az az, hogy három számból bármelyiket megkaphatjuk a másik kettő kizáró-vagyolásával (xorzás), lásd:

[link]


Itt az én kódom pari/gp-ben:

striad(n)={

s=0;

for(i=0,n,

for(j=i+1,n,

if(xor(xor(i,j),j)==i,

print(concat("{", concat(i, concat(";", concat(j, concat(";", concat(xor(i,j),"}")))))));s+=1);

);

);

return(s);

}


De az a baj, hogy egy triádot többször is számol (két triád egynek számít, ha ugyanazok az elemei). Valaki esetleg meg tudná nekem írni a függvényt úgy, hogy jó legyen? Köszi! :)



2018. márc. 16. 17:02
 1/3 anonim ***** válasza:

private static Triad(int numbersOfTriad)

{

Console.WriteLine("Kinyírunk mert triádok vagyunk!");

TriadKill.Kill--;

}

if (kill == 0)

{

Console.WriteLine("A triádok nyertek..");

}

2018. márc. 16. 19:10
Hasznos számodra ez a válasz?
 2/3 anonim ***** válasza:

Egyetlen fontos szempontot kell a programban kikötni:


Ha a két ciklusváltozó XOR értéke kisebb bármelyik ciklusváltozónál (mivel j>i minden esetben, ezért ha kisebb j-nél), akkor ne rögzítse a hármast. A duplikátumok abból származnak, hogy amikor a j változód egy olyan számértéket vesz fel, ami ugyanazon i mellett egyszer kijött XOR értékként, akkor a XOR értékük által kijön az előzőleg j-ben tárolt érték. pl (i,j) = (1,2) esetén a XOR értékük 3, majd (1,3) esetén 2, így kétszer rögzíted ugyanazt a számhármast. Ha kikötöd, hogy i XOR j angyobb kell hogy legyen mindkettőnél, ezt megelőzöd.


Egyébként a xor(x or(i,j),j)==i ellenőrzés teljesen felesleges, az (i XOR j) XOR j mindig i lesz. A XOR asszociativitása miatt (i XOR j) XOR j = i XOR (j XOR j) = i XOR 0 = i;

2018. márc. 16. 19:56
Hasznos számodra ez a válasz?
 3/3 A kérdező kommentje:

Köszönöm #1-esnek a jó humorát, de leginkább #2-es válaszának vettem hasznát, sikerült megoldanom, köszi!


striad(n)={

s=0;

for(i=0,n,

for(j=i+1,n,

if(j<xor(i,j),

print(concat("{",concat(i,concat(";",concat(j,concat(";",concat(xor(i,j),"}")))))));s+=1);

);

);

return(s);

}


Itt a jó függvény!

Egyébként nem értem, hogy a kérdés leírásában az if-ben lévő xor műveletbe miért rakott szóközt, de megértettük szerintem egymást. #2-esnek ment a zöld kéz. :)

2018. márc. 16. 22:00

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!