//Cristian Ronzoni 3Ain
#include <iostream>
#include <vector>
#include <string>
using namespace std;

// Funzione per eseguire la One-Hot Encoding
vector<vector<int>> oneHotEncoding(const vector<string>& categorie, const vector<string>& etichette) {
    vector<vector<int>> matriceOneHot;
    
    // Per ogni etichetta, troviamo la sua posizione e creiamo un vettore one-hot
    for (const string& etichetta : etichette) {
        vector<int> oneHot(categorie.size(), 0);  // Inizializza un vettore di zeri
        for (int i = 0; i < categorie.size(); ++i) {
            if (categorie[i] == etichetta) {
                oneHot[i] = 1;  // Imposta la posizione corrispondente a "1"
                break;
            }
        }
        matriceOneHot.push_back(oneHot);  // Aggiunge il vettore one-hot alla matrice
    }
    
    return matriceOneHot;
}

// Funzione per stampare una matrice
void stampaMatrice(const vector<vector<int>>& matrice) {
    for (const auto& riga : matrice) {
        for (int valore : riga) {
            cout << valore << " ";
        }
        cout << endl;
    }
}

int main() {
    // Definiamo le categorie possibili
    vector<string> categorie = {"Lunedì", "Martedì", "Mercoledì", "Giovedì", "Venerdì", "Sabato", "Domenica"};
    
    // Definiamo alcune etichette da codificare
    vector<string> etichette = {"Lunedì", "Mercoledì", "Domenica", "Venerdì", "Martedì"};
    
    // Otteniamo la matrice one-hot encoding
    vector<vector<int>> matriceOneHot = oneHotEncoding(categorie, etichette);
    
    // Stampiamo la matrice risultante
    cout << "Matrice One-Hot Encoding:" << endl;
    stampaMatrice(matriceOneHot);
    
    return 0;
}

