#include <stdio.h>
#include <ctype.h>

// Vergleich zweier Strings ohne Beachtung der Groß-/Kleinschreibung
int string_equals_ignore_case(const char *a, const char *b) {
    while (*a && *b) {  //läuft so lange bis sie nicht das Ende erreicht haben
        if (tolower((unsigned char)*a) != tolower((unsigned char)*b)) {  // jedes Zeichen wird in Kleinbuchstaben umgewandelt um beide strings besser zu vergleichen
            return 0;
        }
        a++;
        b++;
    }
    return *a == *b;
}

// Prüft, ob die Eingabe eine erlaubte Grundfarbe ist
int is_valid_color(const char *color) {
    return string_equals_ignore_case(color, "Rot") ||
           string_equals_ignore_case(color, "Gruen") ||
           string_equals_ignore_case(color, "Violett");
}

// Gibt die Mischfarbe zurück
const char* mix_colors(const char *color1, const char *color2) {
    if (string_equals_ignore_case(color1, "Rot") && string_equals_ignore_case(color2, "Rot")) {
        return "Rot";
    }
    if ((string_equals_ignore_case(color1, "Rot") && string_equals_ignore_case(color2, "Gruen")) ||
        (string_equals_ignore_case(color1, "Gruen") && string_equals_ignore_case(color2, "Rot"))) {
        return "Gelb";
    }
    if ((string_equals_ignore_case(color1, "Rot") && string_equals_ignore_case(color2, "Violett")) ||
        (string_equals_ignore_case(color1, "Violett") && string_equals_ignore_case(color2, "Rot"))) {
        return "Purpur";
    }
    if (string_equals_ignore_case(color1, "Gruen") && string_equals_ignore_case(color2, "Gruen")) {
        return "Gruen";
    }
    if ((string_equals_ignore_case(color1, "Gruen") && string_equals_ignore_case(color2, "Violett")) ||
        (string_equals_ignore_case(color1, "Violett") && string_equals_ignore_case(color2, "Gruen"))) {
        return "Blau";
    }
    if (string_equals_ignore_case(color1, "Violett") && string_equals_ignore_case(color2, "Violett")) {
        return "Violett";
    }
}

int main() {
    char user_colors[2][20]; // Platz für 2 Farben
    int attempts = 0;

    while (attempts < 2) { // läuft so lange bis man zwei gültige Farben eingegeben hat
        printf("Bitte gib eine Grundfarbe (Rot, Gruen oder Violett) ein: ");
        scanf("%19s", user_colors[attempts]);
        while (getchar() != '\n'); // Eingabepuffer leeren

        if (is_valid_color(user_colors[attempts])) { // überprüft ob die eingegeben Farbe gültig ist
            printf("Du hast %s gewaehlt.\n", user_colors[attempts]);
            attempts++;
        } else {
            printf("Ungueltige Eingabe. Bitte versuche es erneut.\n");
        }
    }

    // Berechnen der Mischfarbe und Ausgabe der Farbe
    printf("Die Mischfarbe ist dann: %s\n", mix_colors(user_colors[0], user_colors[1]));

    return 0;
}