```python # Let's create the requested INI file layout based on the rules and the provided image. # Image Breakdown: # Etage1: C101, C102, C103, C104, C105, C106, C107, C109, C110, C111, C112, C113, C115, C116, C117, C118, C119, C120, C122 # Etage2: C201, C202, C203, C204, C205, C206, C207, C208, C209 # RDC: Agents, Ateliers, C000, C001, C002, CDI-College, CDI-Lycee salles_list = [ "Agents", "Ateliers", "C000", "C001", "C002", "CDI-College", "CDI-Lycee", "C101", "C102", "C103", "C104", "C105", "C106", "C107", "C109", "C110", "C111", "C112", "C113", "C115", "C116", "C117", "C118", "C119", "C120", "C122", "C201", "C202", "C203", "C204", "C205", "C206", "C207", "C208", "C209" ] # Normalization: Replace spaces with underscore and remove accents (no spaces or accents seen, but replace hyphens/keep names) # Let's clean the name normalization per rules (replace space with underscore) salles_normalized = [s.replace(" ", "_") for s in salles_list] # Sort alphabetically and numerically salles_sorted = sorted(salles_normalized) # Rules for Roles and MaxPostes: # Default: Roles=Eleve, MaxPostes=30 # Exceptions: # - CDI, CDR, Tice, SDP, SDS, Refectorie, Loge, OP, DFPT -> Roles=Prof,Eleve # - CDI = 20, CDR = 10, Tice = 10, SDS = 10, DFPT = 10, Refectorie = 5, Loge = 2, OP = 5 lines = [] lines.append("[Default]") lines.append(f"Salles={','.join(salles_sorted)}") lines.append("") for salle in salles_sorted: # check for exceptions is_exception_role = False max_postes = 30 salle_upper = salle.upper() if "CDI" in salle_upper or "CDR" in salle_upper or "TICE" in salle_upper or "SDP" in salle_upper or "SDS" in salle_upper or "REFECTORIE" in salle_upper or "LOGE" in salle_upper or "OP" in salle_upper or "DFPT" in salle_upper: is_exception_role = True if "CDI" in salle_upper: max_postes = 20 elif "CDR" in salle_upper: max_postes = 10 elif "TICE" in salle_upper: max_postes = 10 elif "SDS" in salle_upper: max_postes = 10 elif "DFPT" in salle_upper: max_postes = 10 elif "REFECTORIE" in salle_upper: max_postes = 5 elif "LOGE" in salle_upper: max_postes = 2 elif "OP" in salle_upper: max_postes = 5 roles = "Prof,Eleve" if is_exception_role else "Eleve" lines.append(f"[{salle}]") lines.append(f"Roles={roles}") lines.append(f"MaxPostes={max_postes}") lines.append("") ini_content = "\n".join(lines) print(ini_content) with open("salles.ini", "w") as f: f.write(ini_content) ``` ```text [Default] Salles=Agents,Ateliers,C000,C001,C002,C101,C102,C103,C104,C105,C106,C107,C109,C110,C111,C112,C113,C115,C116,C117,C118,C119,C120,C122,C201,C202,C203,C204,C205,C206,C207,C208,C209,CDI-College,CDI-Lycee [Agents] Roles=Eleve MaxPostes=30 [Ateliers] Roles=Eleve MaxPostes=30 [C000] Roles=Eleve MaxPostes=30 [C001] Roles=Eleve MaxPostes=30 [C002] Roles=Eleve MaxPostes=30 [C101] Roles=Eleve MaxPostes=30 [C102] Roles=Eleve MaxPostes=30 [C103] Roles=Eleve MaxPostes=30 [C104] Roles=Eleve MaxPostes=30 [C105] Roles=Eleve MaxPostes=30 [C106] Roles=Eleve MaxPostes=30 [C107] Roles=Eleve MaxPostes=30 [C109] Roles=Eleve MaxPostes=30 [C110] Roles=Eleve MaxPostes=30 [C111] Roles=Eleve MaxPostes=30 [C112] Roles=Eleve MaxPostes=30 [C113] Roles=Eleve MaxPostes=30 [C115] Roles=Eleve MaxPostes=30 [C116] Roles=Eleve MaxPostes=30 [C117] Roles=Eleve MaxPostes=30 [C118] Roles=Eleve MaxPostes=30 [C119] Roles=Eleve MaxPostes=30 [C120] Roles=Eleve MaxPostes=30 [C122] Roles=Eleve MaxPostes=30 [C201] Roles=Eleve MaxPostes=30 [C202] Roles=Eleve MaxPostes=30 [C203] Roles=Eleve MaxPostes=30 [C204] Roles=Eleve MaxPostes=30 [C205] Roles=Eleve MaxPostes=30 [C206] Roles=Eleve MaxPostes=30 [C207] Roles=Eleve MaxPostes=30 [C208] Roles=Eleve MaxPostes=30 [C209] Roles=Eleve MaxPostes=30 [CDI-College] Roles=Prof,Eleve MaxPostes=20 [CDI-Lycee] Roles=Prof,Eleve MaxPostes=20 ``` [Default] Salles=Agents,Ateliers,C000,C001,C002,C101,C102,C103,C104,C105,C106,C107,C109,C110,C111,C112,C113,C115,C116,C117,C118,C119,C120,C122,C201,C202,C203,C204,C205,C206,C207,C208,C209,CDI-College,CDI-Lycee [Agents] Roles=Eleve MaxPostes=30 [Ateliers] Roles=Eleve MaxPostes=30 [C000] Roles=Eleve MaxPostes=30 [C001] Roles=Eleve MaxPostes=30 [C002] Roles=Eleve MaxPostes=30 [C101] Roles=Eleve MaxPostes=30 [C102] Roles=Eleve MaxPostes=30 [C103] Roles=Eleve MaxPostes=30 [C104] Roles=Eleve MaxPostes=30 [C105] Roles=Eleve MaxPostes=30 [C106] Roles=Eleve MaxPostes=30 [C107] Roles=Eleve MaxPostes=30 [C109] Roles=Eleve MaxPostes=30 [C110] Roles=Eleve MaxPostes=30 [C111] Roles=Eleve MaxPostes=30 [C112] Roles=Eleve MaxPostes=30 [C113] Roles=Eleve MaxPostes=30 [C115] Roles=Eleve MaxPostes=30 [C116] Roles=Eleve MaxPostes=30 [C117] Roles=Eleve MaxPostes=30 [C118] Roles=Eleve MaxPostes=30 [C119] Roles=Eleve MaxPostes=30 [C120] Roles=Eleve MaxPostes=30 [C122] Roles=Eleve MaxPostes=30 [C201] Roles=Eleve MaxPostes=30 [C202] Roles=Eleve MaxPostes=30 [C203] Roles=Eleve MaxPostes=30 [C204] Roles=Eleve MaxPostes=30 [C205] Roles=Eleve MaxPostes=30 [C206] Roles=Eleve MaxPostes=30 [C207] Roles=Eleve MaxPostes=30 [C208] Roles=Eleve MaxPostes=30 [C209] Roles=Eleve MaxPostes=30 [CDI-College] Roles=Prof,Eleve MaxPostes=20 [CDI-Lycee] Roles=Prof,Eleve MaxPostes=20