

Java - nejlepší algoritmus pro porovnání tří prvků.
Dobrý den,
Má 3 comboboxy, v každém z nich mám na výběr 4 barvy.
Jenže chci, aby každý měl svoji vlastní barvu - každá za 4 barev by byla vybrána pouze jednou.
Takže při každé změně potřebuji srovnat všechny 3 comboboxy.
Pomocí metody getSelectedIndex() porovnám, jestli se shoduje 1. s 2., 1. s 3. a 2. s 3.
Tento způsob je logický a srozumitelný, ale připadne mi zbytečně složitý.
Napadl mě tenhle algoritmus.
int color_value[] = new int[3];
color_value[0] = combo1.getSelectedIndex();
color_value[1] = combo2.getSelectedIndex();
color_value[2] = combo3.getSelectedIndex();
java.util.Arrays.sort(color_value);
if (color_value[0] != color_value[1] && color_value[1] != color_value[2]) {
...
}
Vytvořím pole, do něj naházím všechny 3 hodnoty, pole seřadím a teď mi stačí pouze srovnat 1. s 2. a 2. s 3.
Ale potřebuji vědět, jestli neexistuje nějaký lepší a hlavně jednodušší algoritmus.
Předem díky.
Hod to do Setu a kontroluj jestli size je 3...
Cože? Nechápu jak to myslíš?
ale s ifama je to lepsi, tohle je uz kapku overthinking (pro 3 comba), pro deset uz bych to tak asi udelal...
Stačí porovnat 1. s 2. a 2. s 3. ( neboť rovnost je tranzitivní relace
).
1 = A
2 = B
3 = A
1. a 2.: A != B => OK
2. a 3.: B != A => OK
ale:
1. a 3.: A == A => !OK
To jsem psal ale o rovnosti. Nerovnost ovšem není tranzitivní, jak jsi správně předvedl.
Na tazatelův problém dva testy stačí, v případě potřeby si konečný výsledek dvou porovnání zneguje.
Aha, tuto větu jsem jaksi zasklil, to je pravda.
Díky za snahu, ale neřešte to, lepší algoritmus než ty tři podmínky asi neexistuje.