Rayons diagonaux de plateau avec obstacles
Tracez quatre rayons diagonaux depuis une des 64 cases avec un masque d’occupation non signé de 64 bits.
def diagonal_rays(square, occupied):
if type(square) is not int or not 0 <= square < 64 or type(occupied) is not int or not 0 <= occupied < 2**64:
raise ValueError("rays.input")
row, column = divmod(square, 8)
result = 0
for dr, dc in ((1, 1), (1, -1), (-1, 1), (-1, -1)):
r, c = row+dr, column+dc
while 0 <= r < 8 and 0 <= c < 8:
bit = 1 << (8*r+c)
result |= bit
if occupied & bit:
break
r, c = r+dr, c+dc
return result
| Vérifiez avant d’appliquer | Comparez le comportement observé au résultat attendu. Si une vérification échoue, cherchez la cause avant de poursuivre les modifications. |
|---|---|
| Modèles | Configurez un endpoint compatible OpenAI ou Anthropic avec son URL de base et une clé API si nécessaire. Testez la connexion. Un serveur local doit fonctionner ; les outils distants peuvent transmettre des données séparément. |
| Projet | Testez coins et obstacles proches, incluez le premier obstacle et rejetez les entiers invalides sans prétendre vérifier toute légalité des coups. |
def diagonal_rays(square, occupied):
if type(square) is not int or not 0 <= square < 64 or type(occupied) is not int or not 0 <= occupied < 2**64:
raise ValueError("rays.input")
row, column = divmod(square, 8)
result = 0
for dr, dc in ((1, 1), (1, -1), (-1, 1), (-1, -1)):
r, c = row+dr, column+dc
while 0 <= r < 8 and 0 <= c < 8:
bit = 1 << (8*r+c)
result |= bit
if occupied & bit:
break
r, c = r+dr, c+dc
return result
Suivez une modification géométrique à travers l’indexation et les obstacles
DiagonalIbis propose un espace de programmation assistée par IA sous Windows pour effectuer de petites modifications du code source en gardant leurs hypothèses visibles. Une demande de géométrie de plateau doit commencer par la convention de numérotation des cases et le sens des positions occupées. Placez ces détails à côté du code du projet et demandez au modèle connecté d’examiner le calcul actuel avant de proposer une modification.
Par exemple, une tâche de rayons diagonaux peut suivre quatre directions depuis une case jusqu’à la première position occupée, en incluant cette case bloquante dans le résultat. Précisez la plage non signée du masque d’occupation et incluez les coins et les obstacles immédiats dans la discussion. Cela décrit une routine géométrique à maintenir, pas un système complet de légalité des coups ni un jeu fourni par l’espace de travail.
Examinez la sortie proposée avec des jeux de test dont vous pouvez déterminer indépendamment les cases attendues. Vérifiez que les rayons s’arrêtent au bord du plateau et ne passent pas d’une ligne à l’autre par débordement, puis examinez le traitement des entiers invalides. Exécutez ces cas dans votre environnement de projet. Si un composant de niveau supérieur interprète le masque comme des coups légaux, examinez cette logique séparément du calcul des rayons.
DiagonalIbis se connecte aux points de terminaison compatibles OpenAI ou Anthropic pris en charge, avec des identifiants si nécessaire. Un modèle d’IA sans filtre peut être sélectionné si votre point de terminaison le propose. Ses restrictions réelles, ses outils et son contexte dépendent du modèle et du serveur ; la convention d’indexation et les vérifications d’acceptation restent des exigences sous votre contrôle.
Avant d’accepter une modification de géométrie de plateau
Quels détails d’indexation inclure dans la tâche ?
Indiquez comment les cases correspondent aux indices et comment progressent les lignes et colonnes. Incluez un exemple de coin avec les destinations attendues. Le modèle connecté dispose alors d’une convention explicite à suivre, et vous pouvez examiner le masque proposé sans deviner son orientation.
La première case bloquante doit-elle apparaître dans la sortie ?
Dans cet exemple, oui : le rayon inclut cette case et s’arrête au-delà. Explicitez la règle et testez un obstacle immédiat. Un composant de niveau supérieur peut interpréter l’occupation autrement : examinez cette logique séparément plutôt que de modifier implicitement le contrat du rayon.
Comment détecter un débordement au bord du plateau ?
Utilisez des tests de coins et de bords dont les diagonales sont courtes ou absentes dans certaines directions. Comparez les cases exactes renvoyées à des attentes indépendantes. Un masque visuellement plausible depuis une case centrale peut ne pas révéler une erreur d’indexation près du bord.
Un masque de rayons correct établit-il la légalité des coups ?
Non. La légalité peut dépendre d’états et de règles supplémentaires au-delà de cette opération géométrique. Gardez le contrat de la routine demandé étroit, examinez ses utilisateurs au besoin et utilisez des vérifications distinctes du comportement de niveau supérieur avant de traiter le résultat comme un ensemble de coups légaux.
DiagonalIbis · Mis à jour 2026-10-25