Azzera filtri
Azzera filtri

How to handle cells?

1 visualizzazione (ultimi 30 giorni)
Dirk te Brake
Dirk te Brake il 19 Set 2023
Commentato: Dirk te Brake il 20 Set 2023
I'm making a Rock paper scissors game but have problems using cell variabels. I have a 9x2 cell variable i want to find on which row both colums have a 1, how do i do this? In this case I would like to know the position of row 2 so i can display the right outcome form the result array.
r = 'r'; s = 's'; p = 'p'; d = "Its a Draw!"; u1 = "User1 wins!"; u2 = "User2 wins!";
results = [r, r, d;
r, s, u1;
r, p, u2;
s, s, d;
s, p, u1;
s, r, u2;
p, p, d;
p, r, u1;
p, s, u2];
Res1 = strfind(results(:,1),'r');
Res2 = strfind(results(:,2),'s');
Res = [Res1, Res2];
disp(Res)
{[ 1]} {0×0 double} {[ 1]} {[ 1]} {[ 1]} {0×0 double} {0×0 double} {[ 1]} {0×0 double} {0×0 double} {0×0 double} {0×0 double} {0×0 double} {0×0 double} {0×0 double} {0×0 double} {0×0 double} {[ 1]}

Risposta accettata

Matt J
Matt J il 20 Set 2023
Modificato: Matt J il 20 Set 2023
I would use logical arrays instead of cells.
r = 'r'; s = 's'; p = 'p'; d = "Its a Draw!"; u1 = "User1 wins!"; u2 = "User2 wins!";
results = [r, r, d;
r, s, u1;
r, p, u2;
s, s, d;
s, p, u1;
s, r, u2;
p, p, d;
p, r, u1;
p, s, u2];
Lookup = results(:,1:2)==["r","s"]
Lookup = 9×2 logical array
1 0 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 1
row=find(all(Lookup,2))
row = 2
outcome=results(row,3)
outcome = "User1 wins!"
  1 Commento
Dirk te Brake
Dirk te Brake il 20 Set 2023
I was looking for exactly that, thank you!

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Just for fun in Help Center e File Exchange

Tag

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by