Witam, jak najefektywniej sprawdzić czy tablica czterech int
-ów ma takie same wartości, dwie pary takich samych, czy żadne z wcześniej wymienionych przypadków (patrzę czy obiekt jest kwadratem, prostokątem czy innym czworokątem)? Robiłem to trochę na piechotę, dużą ilością if
-ów, i domyślam się, że są lepsze sposoby.
0
0
Najłatwiej zrobić sobie mapę długość ⟶ ilość wystąpień. A najefektywniej? Nie jestem pewien, może trzymać posortowane i sprawdzać czy adjacent_find z odwróconym predykatem nie znajdzie dokładnie jednej part, pośrodku tablicy? Wymagałoby to benchmarku.
1
Taki pseudo-algorytm (do sprawdzenia):
string sprawdz(int arr[]) {
int a = 0;
int sum = 0;
for(int i = 0; i < 4; i++) {
int x = arr[i];
a ^= x;
sum += x;
}
if (a == 0) {
if (sum == arr[0]*4) {
return "Kwadrat";
} else if (arr[0] == arr[2]) {
return "Prostokąt";
}
}
return "Nie-wiadomo-co";
}