
Elle dispose de 4 niveaux progressifs de risque, et commence à tenir compte des chauves-souris :

https://tiplanet.org/concours_rentree20 ... &invalid=1
critor wrote:Histoire de vous réveiller, je lance ma dernière IA.
Elle dispose de 4 niveaux progressifs de risque, et commence à tenir compte des chauves-souris :
https://tiplanet.org/concours_rentree20 ... &invalid=1
critor wrote:Les chemins choisis sont les plus courts, histoire de minimiser le nombre de coups moyen qui compte au score.
Vous pouvez regarder l'algorithme de Dijkstra (Terminale ES spé Maths), mais je précise le mien est beaucoup moins complexe vu le type de graphe que nous avons ici (comme le score compte le nombre de coups, c'est comme si toutes les corniches étaient à égale distance les unes des autres).
citorva wrote:Voici un script de benchmark que j'ai crée.
(...)
Le script bench.py peut s'appeler sans argument ou avec les arguments dans cet ordre:
- nom du module sans l'extension (par defaut web_test). Une fonction init est nécessaire et veuillez retirer la ligne parcourir_selon(ia)
module = sys.argv[1] if len(sys.argv) > 1 else "webtest5"
# parcourir_selon(ia, 0)
critor wrote:Dans notre version du script, nous souhaitions justement t'éparger la problématique du init().
Tu dois donc y créer/vider/initialiser toutes les variables globales utilisées par ton IA.
def init():
pass # je n'ai crée ni utilisé aucune variable globale
def ia(corniche, voisines, taille, capteurs, evenements):
# Nous sommes dans un cratere de volcan.
# Il y a un nombre {taille} de corniches.
# Les corniches sont numerotees de 0 a {taille - 1}.
# Nous sommes sur la corniche numero {corniche}.
if capteurs & m_b:
# Une chauve-souris dort sur cette corniche. Elle se reveillera des que tu
# seras parti.e au prochain tour !
pass
if capteurs & m_d:
# Cette corniche donne sur la porte de sortie.
pass
if capteurs & m_p:
# Une des corniches voisines dissimule un puits. Progresse prudemment !
pass
if capteurs & m_k:
# Une des corniches voisines emet de la lumiere. La cle de la sortie doit
# y etre !
pass
if capteurs & m_l:
# Le Leviathan gronde. Il est a 2 pas ou moins d'ici. S'il n'est pas dans
# une des corniches voisines, il est sur une voisine d'une voisine...
pass
if evenements & (2 * m_k):
# Bravo, tu as trouve la cle de la porte de sortie !
pass
if evenements & (2 * m_a):
# Tu peux tirer une fleche vers une des corniches voisines.
pass
if evenements & (2 * m_l):
# Le Leviathan a ete touche mortellement, il ne pose plus de danger !
pass
if evenements & (2 * m_b):
# Une chauve-souris t'as attrape.e, et t'emmene sur une autre corniche
# sans te demander ton avis. Tu ne peux pas choisir ta destination !
return None, 0
# renvoie 2 valeurs :
# * la corniche choisie parmi les voisines
# * l'action relative desiree :
# - 0 pour aller sur cette corcniche
# - 1 pour tirer une fleche vers cette corcniche
return voisines[randint(0, len(voisines) - 1)], 0
module = sys.argv[1] if len(sys.argv) > 1 else "webtest"
name 'm_b' is not defined
def init():
pass
def ia(corniche, voisines, taille, capteurs, evenements):
# Nous sommes dans un cratere de volcan.
# Il y a un nombre {taille} de corniches.
# Les corniches sont numerotees de 0 a {taille - 1}.
# Nous sommes sur la corniche numero {corniche}.
if capteurs & m_b:
# Une chauve-souris dort sur cette corniche. Elle se reveillera des que tu
# seras parti.e au prochain tour !
pass
if capteurs & m_d:
# Cette corniche donne sur la porte de sortie.
pass
if capteurs & m_p:
# Une des corniches voisines dissimule un puits. Progresse prudemment !
pass
if capteurs & m_k:
# Une des corniches voisines emet de la lumiere. La cle de la sortie doit
# y etre !
pass
if capteurs & m_l:
# Le Leviathan gronde. Il est a 2 pas ou moins d'ici. S'il n'est pas dans
# une des corniches voisines, il est sur une voisine d'une voisine...
pass
if evenements & (2 * m_k):
# Bravo, tu as trouve la cle de la porte de sortie !
pass
if evenements & (2 * m_a):
# Tu peux tirer une fleche vers une des corniches voisines.
pass
if evenements & (2 * m_l):
# Le Leviathan a ete touche mortellement, il ne pose plus de danger !
pass
if evenements & (2 * m_b):
# Une chauve-souris t'as attrape.e, et t'emmene sur une autre corniche
# sans te demander ton avis. Tu ne peux pas choisir ta destination !
return None, 0
# renvoie 2 valeurs :
# * la corniche choisie parmi les voisines
# * l'action relative desiree :
# - 0 pour aller sur cette corcniche
# - 1 pour tirer une fleche vers cette corcniche
return voisines[randint(0, len(voisines) - 1)], 0
# parcourir_selon(ia)
import web
m_p, m_l, m_k, m_b, m_d, m_a, m_m = 1, 4, 16, 64, 256, 1024, 4096
from web import *
def init():
global m_p, m_l, m_k, m_b, m_d, m_a, m_m
m_p, m_l, m_k, m_b, m_d, m_a, m_m = 1, 4, 16, 64, 256, 1024, 4096
Users browsing this forum: ClaudeBot [spider] and 17 guests