- Esecutori
-
Impara
Impara Python Esempi eseguibili, NumPy, pandas e altro Impara l'IAReti neurali, ML e LLM da zero Impara C e C++ Puntatori, memoria, STL e C++ moderno Impara C#Fondamenti, OOP, LINQ, async ed esercizi .NET Algoritmi Python Ricerca, ordinamento, ricorsione e visualizzazioni O(n) Algoritmi C e C++ Confronta le implementazioni in C e C++
- SfideNuovo
Minimax è il modo in cui i programmi di gioco scelgono le mosse: supponi che entrambi i giocatori giochino in modo perfetto, assegna un punteggio a ogni partita finita e riporta i punteggi verso l'alto nell'albero di gioco. Il giocatore di turno sceglie il figlio con il punteggio più alto per sé.
La scacchiera è una stringa di 9 caratteri letta riga per riga (indici 0-8), con "X", "O" o "." per una casella vuota. X muove sempre per primo, quindi tocca a X quando entrambi hanno lo stesso numero di segni, altrimenti tocca a O.
Assegna il punteggio a una partita finita dal punto di vista del giocatore di turno: +1 per una vittoria, 0 per un pareggio, -1 per una sconfitta. Restituisci la casella vuota la cui mossa ha il miglior punteggio minimax; se più caselle sono ugualmente buone, restituisci l'indice minore.
Implementa best_move(board).
Input
board: Una posizione valida in cui nessuno ha ancora vinto e almeno una casella è vuota.
Output
Restituisci l'indice (0-8) della mossa migliore.
Vincoli
board ha esattamente 9 caratteri, ciascuno X, O o .
La posizione può verificarsi in una partita reale, nessuno ha vinto e almeno una casella è vuota
Esempi
Esempio 1
Input:
board = "XX.OO...."
Output atteso:
2
Spiegazione
X e O hanno due segni ciascuno, quindi muove X. Giocare in 2 completa la riga in alto e vince subito (+1).
Esempio 2
Input:
board = "X..OO...X"
Output atteso:
5
Spiegazione
Muove X. O minaccia di completare la riga centrale in 5. Ogni altra mossa fa vincere O (-1), mentre bloccare in 5 porta a un pareggio (0), quindi la risposta è 5.
Riferimenti
-
Esempio 1 Non eseguitoInput:
board = "XX.OO...."Output atteso:2Il tuo output -
Esempio 2 Non eseguitoInput:
board = "X..OO...X"Output atteso:5Il tuo output
4 test nascosti vengono eseguiti anche al momento dell'invio.
Compilatore e debugger C++ online
Compila e fai il debug di C++ con breakpoint, variabili e controlli GDB passo passo in modalità Server.
🚀 2,393,909 esecuzioni totali (1,535 questo mese)
Esercitati in C++ con le sfide di codice
Risolvi problemi pratici direttamente in questo editor: esegui i test di esempio, invia la soluzione e ricevi una revisione AI del codice.
Impara e pratica C/C++
Segui un percorso con lezioni eseguibili, poi mettiti alla prova con le sfide di programmazione.
💻 Informazioni su questo esecutore C++ online
Il CodeUtility C++ Executor ti consente di scrivere ed eseguire codice C++ direttamente nel browser - senza installazioni o configurazioni del compilatore. È basato su una sandbox sicura che supporta gli standard C++ da C++11, C++14, C++17, fino alla versione più recente.
Questo strumento utilizza un vero compilatore C++ in esecuzione nel cloud per compilare ed eseguire il tuo codice, garantendo un comportamento accurato e coerente tra le versioni. Puoi sperimentare liberamente concetti base di C++ come variabili, funzioni, cicli, condizionali e programmazione orientata agli oggetti.
Che tu ti stia preparando per colloqui, imparando funzionalità moderne di C++ o verificando la logica di un algoritmo, CodeUtility C++ Executor offre un ambiente semplice ma potente per eseguire il codice istantaneamente da qualsiasi dispositivo.
Più di un semplice esecutore di codice
Usa nello stesso esecutore un editor multifile, un terminale di esecuzione isolato, librerie specifiche per il runtime, spazi di lavoro persistenti, condivisione e collaborazione in tempo reale.
Come si usa questo esecutore?
Scegli un runtime, apri o crea un file, scrivi il codice e seleziona Esegui. L’output appare nel terminale; gli utenti che hanno effettuato l’accesso possono conservare i file in uno spazio di lavoro, installare librerie e collaborare tramite le condivisioni.
- Seleziona una versione e modifica il file corrente oppure apri un altro file dello spazio di lavoro.
- Esegui il codice, inserisci i dati nel terminale quando richiesto e consulta la cronologia delle esecuzioni salvate.
- Usa librerie, strumenti dello spazio di lavoro, condivisione e chat quando l’attività richiede più di un frammento di codice.
💡 Basi di C++ ed esempi che puoi provare qui sopra
1. Dichiarare variabili e costanti
C++ richiede di dichiarare il tipo di ogni variabile. Usa const per definire valori di sola lettura che non possono essere modificati dopo l'inizializzazione.
int age = 30;
double pi = 3.14159;
char grade = 'A';
std::string name = "Alice";
bool isActive = true;
// Costanti
const int MAX_USERS = 100;
const std::string COMPANY = "CodeUtility";
// Tentare di modificare un const causerà un errore in fase di compilazione
// MAX_USERS = 200; // ❌ errore
2. Condizionali (if / switch)
Usa if, else if, else per i rami. Usa switch per gestire più valori.
int x = 2;
if (x == 1) {
std::cout << "Uno\n";
} else if (x == 2) {
std::cout << "Due\n";
} else {
std::cout << "Altro\n";
}
// Istruzione switch-case
switch (x) {
case 1:
std::cout << "Uno\n";
break;
case 2:
std::cout << "Due\n";
break;
default:
std::cout << "Altro\n";
}
3. Cicli
Usa for, while e do-while per ripetere blocchi di codice.
for (int i = 0; i < 3; i++) {
std::cout << i << "\n";
}
int n = 3;
while (n > 0) {
std::cout << n << "\n";
n--;
}
4. Array
Gli array memorizzano più elementi dello stesso tipo.
int numbers[3] = {10, 20, 30};
std::cout << numbers[1] << "\n";
5. Manipolazione di array/vettori
Usa std::vector per array dinamici.
#include <vector>
std::vector nums = {1, 2, 3};
nums.push_back(4);
nums.pop_back();
for (int n : nums) {
std::cout << n << " ";
}
6. Input/Output da console
Usa std::cin per l'input e std::cout per l'output.
std::string name;
std::cout << "Inserisci il tuo nome: ";
std::cin >> name;
std::cout << "Ciao, " << name << "\n";
7. Funzioni
Le funzioni raggruppano logica riutilizzabile. Usa parametri e tipi di ritorno.
int add(int a, int b) {
return a + b;
}
std::cout << add(3, 4);
8. Mappe
std::map memorizza coppie chiave-valore come i dizionari.
#include <map>
std::map ages;
ages["Alice"] = 30;
std::cout << ages["Alice"];
9. Gestione delle eccezioni
Usa try e catch per gestire gli errori a runtime.
try {
throw std::runtime_error("Si è verificato un errore");
} catch (const std::exception& e) {
std::cout << e.what();
}
10. I/O su file
Usa fstream per leggere e scrivere file.
#include <fstream>
std::ofstream out("file.txt");
out << "Ciao file";
out.close();
std::ifstream in("file.txt");
std::string line;
getline(in, line);
std::cout << line;
in.close();
11. Manipolazione di stringhe
Le stringhe C++ supportano metodi come length(), substr() e find().
std::string text = "Hello World";
std::cout << text.length();
std::cout << text.substr(0, 5);
std::cout << text.find("World");
12. Classi e oggetti
C++ supporta la programmazione orientata agli oggetti tramite le classi.
class Person {
public:
std::string name;
Person(std::string n) : name(n) {}
void greet() { std::cout << "Ciao, sono " << name; }
};
Person p("Alice");
p.greet();
13. Puntatori
Un puntatore memorizza l'indirizzo di memoria di un'altra variabile. Usa & per ottenere un indirizzo,
e * per dereferenziare (accedere al valore all'indirizzo).
int x = 10;
int* ptr = &x;
std::cout << "Valore di x: " << x << "\n";
std::cout << "Indirizzo di x: " << ptr << "\n";
std::cout << "Valore dal puntatore: " << *ptr << "\n";
// Modificare x tramite puntatore
*ptr = 20;
std::cout << "x aggiornato: " << x << "\n";
🐞 Come eseguire il debug di %{language} online
Usa il debugger %{language} online per trovare errori di runtime e logica senza installare compilatore o IDE. La modalità Server compila con simboli di debug ed esegue il programma con GDB.
- Imposta i breakpoint accanto ai numeri di riga.
- Seleziona Debug per compilare e fermarti al primo breakpoint.
- Controlla riga corrente, stack e variabili.
- Usa Continua, Step Over, Step Into o Step Out.
- Seleziona Stop per terminare la sessione.
Inizia con un esempio riproducibile e imposta il breakpoint appena prima del comportamento inatteso.