gugoXX
24-12-2010, 19:17
Avrei voglia di lanciare una serie di competizioni.
Il formato di ciascuna competizione sarebbero un esercizio come il seguente:
Tris:
Costruire un programma console nel linguaggio che si vuole.
Tale programma deve accettare un parametro da linea di comando, e deve restituire risultati su STDOUT
Il parametro della linea di comando e' una stringa di 9 caratteri, corrispondenti alle celle del gioco del tris
Ciascun carattere potra' essere O, X o Z corripsondenti al palla, alla croce o ad una cella vuota
Il programma deve simulare una mossa del gioco del tris, dovra' in pratica leggere la stringa in input, capirla e decidere dove mettere il proprio simbolo su una delle celle precedentemente Z.
La mossa dovra' essere decisa in un massimo di 2 secondi.
Dovra' quindi restituire 2 stringhe: il nickname del partecipante ed una stringa di 9 caratteri con il carattere-mossa scelto sostituito.
Inizia X a muovere. Se quindi il numero di X e' pari al numero di O allora il programma capira' che a lui e' assegnato il simbolo X, altrimenti sara' O.
Basta.
Ovviamente il tris e' un primo esercizio di semplice fattibilita', dato che cio' che verrebbe dopo sarebbe decisamente piu' interessante.
Ovviamente mi piacerebbe costruire un tournament per le competizioni, dove ogni partecipante incontrera' tutti gli altri partecipanti.
Occorre quindi un server che gestisca questa impostazione.
I partecipanti dovranno uploadare il codice da compilare, che verra' compilato ed eseguito dal server mediante un terzo programma che io (o anche altri, nessun problema) metterei a disposizione per pilotare il tournament.
Tale programma server controllerebbe la correttezza delle mosse di ciascun programma uploadato, darebbe un punteggio per ciascuno ad ogni partita,compilera' anche una classifica con ratio e punteggi da definirsi, che copra correttezza, vittorie, tempi di esecuzione, etc. che verrebbe in qualche modo pubblicata per la consultazione online.
Magari nella consultazione potrebbe anche starci posto per la pubblicazione di qualche paginetta relativa a tutti i codici che hanno partecipato.
Ovviamente il server dovra' essere dotato degli eseguibili per la compilazione/esecuzione di tutti i linguaggi che ci interesserebbe supportare.
I problemi che vedo sono 2:
1. Poiche' siamo tutti buoni, ma qualcuno e' un PDM, servirebbe un meccanismo di boxing della sessione di esecuzione, in modo che il server non venga danneggiato da un programma malware, se non addirittura il server non venga usato a fini illegali per danneggiare/compiere azioni illegali all'esterno.
Il boxing dovrebbe essere anche castrato, magari senza supporto di rete, e con direttive di SO limitate se non nulle.
Direi solo e tutto quanto permette il linguaggio nativo puro.
2. Non so che servizio si puo' usare per la gestione del tutto.
Idee?
Il formato di ciascuna competizione sarebbero un esercizio come il seguente:
Tris:
Costruire un programma console nel linguaggio che si vuole.
Tale programma deve accettare un parametro da linea di comando, e deve restituire risultati su STDOUT
Il parametro della linea di comando e' una stringa di 9 caratteri, corrispondenti alle celle del gioco del tris
Ciascun carattere potra' essere O, X o Z corripsondenti al palla, alla croce o ad una cella vuota
Il programma deve simulare una mossa del gioco del tris, dovra' in pratica leggere la stringa in input, capirla e decidere dove mettere il proprio simbolo su una delle celle precedentemente Z.
La mossa dovra' essere decisa in un massimo di 2 secondi.
Dovra' quindi restituire 2 stringhe: il nickname del partecipante ed una stringa di 9 caratteri con il carattere-mossa scelto sostituito.
Inizia X a muovere. Se quindi il numero di X e' pari al numero di O allora il programma capira' che a lui e' assegnato il simbolo X, altrimenti sara' O.
Basta.
Ovviamente il tris e' un primo esercizio di semplice fattibilita', dato che cio' che verrebbe dopo sarebbe decisamente piu' interessante.
Ovviamente mi piacerebbe costruire un tournament per le competizioni, dove ogni partecipante incontrera' tutti gli altri partecipanti.
Occorre quindi un server che gestisca questa impostazione.
I partecipanti dovranno uploadare il codice da compilare, che verra' compilato ed eseguito dal server mediante un terzo programma che io (o anche altri, nessun problema) metterei a disposizione per pilotare il tournament.
Tale programma server controllerebbe la correttezza delle mosse di ciascun programma uploadato, darebbe un punteggio per ciascuno ad ogni partita,compilera' anche una classifica con ratio e punteggi da definirsi, che copra correttezza, vittorie, tempi di esecuzione, etc. che verrebbe in qualche modo pubblicata per la consultazione online.
Magari nella consultazione potrebbe anche starci posto per la pubblicazione di qualche paginetta relativa a tutti i codici che hanno partecipato.
Ovviamente il server dovra' essere dotato degli eseguibili per la compilazione/esecuzione di tutti i linguaggi che ci interesserebbe supportare.
I problemi che vedo sono 2:
1. Poiche' siamo tutti buoni, ma qualcuno e' un PDM, servirebbe un meccanismo di boxing della sessione di esecuzione, in modo che il server non venga danneggiato da un programma malware, se non addirittura il server non venga usato a fini illegali per danneggiare/compiere azioni illegali all'esterno.
Il boxing dovrebbe essere anche castrato, magari senza supporto di rete, e con direttive di SO limitate se non nulle.
Direi solo e tutto quanto permette il linguaggio nativo puro.
2. Non so che servizio si puo' usare per la gestione del tutto.
Idee?