<prompt> Tekeleza programu ya Chatu ambayo huiga mchezo wa tiki-tac-toe dhidi ya mpinzani wa AI. AI inapaswa kutumia algorithm ya minimax kufanya hatua bora. Mtumiaji anapaswa kucheza dhidi ya AI kupitia mstari wa amri. PLINFORMAT  <response>: kuagiza bila mpangiliodef print_boardbodi: kwa safu kwenye ubao: chapa .jiunge safu chapa - 9def check_winnerbodi, mchezaji: kwa mimi katika safu3: ikiwa zoteseli mchezaji wa seli kwenye ubaoi au zoteubaoji mchezaji wa j katika safu3: kurudi Kweli ikiwa ubao00 ubao11 ubao22 mchezaji au ubao02 ubao11 ubao 20 mchezaji: kurudi Kweli kurudi Uongodef get_empty_cellsubao: seli_tupu kwa mimi katika safu3: kwa j katika safu3: ikiwa ubaoij : tupu_seli.ongeza i, j rudisha seli_tupudef minimaxbodi, kina, kuongeza_kichezaji: ikiwa check_winnerubao, X: kurudi -1 ikiwa check_winnerubao, O: kurudi 1 ikiwa sio get_empty_cellsubao: kurudi 0 ikiwa kuongeza_kichezaji: max_eval kuelea-inf kwa seli katika get_empty_cellsubao: x, y seli ubaoxy O eval minimaxubao, kina 1, Uongo ubaoxy max_eval maxmax_eval, eval kurudi max_eval kwingine: min_eval kuelea inf kwa seli katika get_empty_cellsubao: x, y seli ubao xy X eval minimaxubao, kina 1, Kweli ubaoxy min_eval minmin_eval, eval rudisha min_evaldef best_movebodi: max_eval kuelea-inf hoja Hakuna kwa seli katika get_empty_cellsubao: x, y seli ubaoxy O eval minimaxubao, 0, Uongo ubaoxy ikiwa eval max_eval: max_eval eval hoja x, y kurudi hojadef kuu : ubao kwa _ katika masafa3 kwa _ masafa3 print_boardubao wakati Kweli: jaribu: safu, col mapint, inputIngiza hoja yako safu na safu wima zikitenganishwa na nafasi: .split ikiwa ubaosafu - 1col - 1 : ubaosafu - 1col - 1 X mapumziko kwingine: printHoja batili. Jaribu tena. isipokuwa ValueError: printIngizo batili. Jaribu tena. isipokuwa IndexError: printViwianishi batili. Jaribu tena. wakati sio check_winnerubao, X na get_empty_cellsubao: ai_move best_movebodi ubaoai_move0ai_move1 O print_boardubao ikiwa check_winnerubao, O: chapa AI inashinda! mapumziko wakati Kweli: jaribu: safu, col mapint, inputIngiza hoja yako safu na safu wima zikitenganishwa na nafasi: .split ikiwa ubaosafu - 1col - 1 : ubaosafu - 1col - 1 X mapumziko kwingine: printHoja batili. Jaribu tena. isipokuwa ValueError: printIngizo batili. Jaribu tena. isipokuwa IndexError: printViwianishi batili. Jaribu tena. ikiwa check_winnerubao, X: print_boardubao chapa Unashinda! mapumziko ikiwa si get_empty_cellsboard na sio check_winnerboard, X na sio check_winnerubao, O: print_boardubao chapa Ni kuchora!kama __name__ __main__: kuu 