Centaure sur Tore

misc algo FCSC 2024 résolu le

star star

Description

Dans le système d’Alpha Centauri, vous exploitez une ferme pour centaures installée sur un astéroïde torique. Les paturages sont organisés en prés carrés, séparés par des barrières disposées à des endroits prédéfinis. Il est possible à un centaure de passer d’un pré à un pré voisin de manière horizontale, vertical ou diagonale si une barrière ne bloque pas l’accès. Lors des passages en diagonale, le passage permet aux centaures de passer tout droit, mais il est trop étroit pour qu’il puisse y changer de direction (voir l’image en pièce jointe example-directions.png pour l’explication sur les déplacements possibles).

Vous vous apprêtez à gérer deux centaures. Mais c’est la tuile, les centaures sont des animaux solitaires, il faut à tout prix éviter que les deux centaures puissent se rencontrer dans le même pré carré. Avant de les accueillir, vous n’avez le temps d’installer que trois barrières supplémentaires dans la zone : où devez-vous les placer pour pouvoir loger les deux bêtes sans qu’elles puissent se rencontrer ?

Les prés carrés sont identifiés par un système de coordonnées, par exemple (0, 1) ou (1, 2), et les emplacements pour les barrières sont identifés par une paire de coordonnées, par exemple ((0, 1), (1, 2)).

On donne un exemple en dimension 5x5 dans les figures jointes :

  • example-empty.png : exemple d’une ferme pour centaure torique avec des barrières placées entre les prés carrés.
  • example-directions.png : exemple de directions possibles avec un placement de barrières donné. Sur cet exemple, depuis le pré carré situé en (1, 1), un centaure peut aller en (2, 0), (0, 2) et (2, 2).
  • example-solved.png : exemple de barrière à ajouter pour isoler les deux centaures. Le programme attend comme entrée : [ ((1, 1), (0, 2)), ((3, 1), (4, 2)), ((3, 3), (4, 3)) ]. L’ordre des prés carrés n’est pas important, ((1, 1), (0, 2)) et ((0, 2), (1, 1)) représente la même barrière.

Une fois connecté au service ci-dessous, vous devrez placer trois barrières dans 100 fermes générées aléatoirement. SI vous y parvenez, dans la limite de 30 secondes pour chaque ferme, vous obtiendrez le flag !

Fichiers

Auteurs

Instructions

  1. Pour commencer, téléchargez le fichier docker-compose.yml :
    curl https://hackropole.fr/challenges/fcsc2024-misc-centaure-sur-tore/docker-compose.public.yml -o docker-compose.yml
  2. Lancez l'épreuve en exécutant dans le même dossier :
    docker compose up
  3. Dans un second terminal, accédez à l'épreuve via Netcat avec :
    nc localhost 4000
⚠️ Important : Vous devez résoudre l'épreuve en interagissant avec le conteneur Docker via le port réseau exposé. Toute autre interaction n'est pas considérée comme une résolution valide.

Si vous rencontrez des problèmes, veuillez consulter la FAQ.

Flag

Partager ma réussite sur Fediverse, Twitter, Linkedin, Facebook, ou par email.

Soumettez votre solution

Vous pouvez envoyer votre solution rédigée pour cette épreuve. La FAQ contient la marche à suivre.

Vous avez besoin d'être identifié(e) pour soumettre une solution.

Solutions

Il n'y a pas encore de solutions pour cette épreuve, mais vous pouvez soumettre la vôtre après avoir trouvé le flag.