FINALE 1997


Finale PROLOGIN

1997

« B a b e l   P a n i c ! »

[Mapel Panic !]

Durée : 36h





Introduction

Ça va paaas...

La Terre, année 42 de l'Ere Nouvelle. Il y a moins d'un demi-siècle, tout était normal. Enfin, normal... Comme avant, quoi. Un monde dont nous connaissions les règles, les lois. Mais justement, un beau jour de l'an 2010, on a fait une bêtise ultime : on a enfin compris la toute dernière loi physique qui résistait encore à nos investigations. Alors, une très ancienne prophétie des siècles plus tôt, au cœur du Tchad, par un illuminé du nom de Hac' Sadir el Morfi, s'est réalisée. Le vénérable texte disait : « Lorsqu'enfin les grandes lignes gouvernant à la Terre et aux étoiles auront été apprivoisées par l'Homme, l'Univers sera aussitôt remplacé par quelque chose d'infiniment plus bizarre et complexe ».

Bingo.

Et tout a changé. Notre planète n'est plus soumise aux lois qui nous semblaient établies jusqu'à la fin des temps. Toute énergie conventionnelle, qu'elle soit électrique ou mécanique, a cessé de fonctionner. Même les êtres humains ont été touchés par cette altération. Ils sont dans l'incapacité de ce déplacer « classiquement », en usant de leurs muscles. L'utilisation de l'oxygène au sein de leurs cellules s'est elle aussi appauvrie, les affaiblissant considérablement.

Plus rien n'est comme avant

Comprendre les nouvelles règles qui gouvernent leur environnement n'a pas été à la portée de tous les humains. Et seuls ont survécu ceux qui furent à même d'appréhender au moins les plus accessibles de ces lois. Ce qu'ils ont trouvé fut des plus inattendus. Une sorte de flux émane des objets les plus simples : eau, fleurs, minéraux... En combinant ces ressources, on peut effectuer les actions les plus variées. Mais chacune de ces actions nécessite l'emploi approprié d'une sorte d'incantation.

Tous ceux qui ont survécu savent effectuer un minimum d'actions, comme par exemple communiquer, se déplacer ou puiser dans une ressource. Mais un phénomène est survenu, semblable à une seconde Tour de Babel : si les humains ont conservé la possibilité de communiquer entre eux, ce n'est qu'à un niveau très primaire, à peine suffisant pour des échanges basiques (incantations et ressources). Echanger des informations plus élaborées nécessite des langages plus évolués, qui ont été dispersés aléatoirement parmi les humains.

Objectifs

Afin de mieux décrire vos objectifs, nous devons définir quelques termes :

Terme Définition
Civilisation Ensemble d'individus, dispersés aléatoirement sur le globe, partageant le même langage évolué.
Sort Association d'une incantation et de ressources pour effectuer une action.

Les communautés

L'objectif premier d'une civilisation est de former une communauté, c'est-à-dire un groupement géographique. Ceci afin de faciliter l'apprentissage, la transmission et l'évolution de leurs connaissances.

o

Le Karmat

Ouuuuh là là, le sale mot. Kesako Karmat ? Le Karmat, c'est la symbiose, l'osmose de la connaissance et de la sagesse des civilisations. C'est la donnée fondamantale qui les différencie et les élève les unes au-dessus des autres.

Chaque individu collabore au Karmat de sa civilisation. Parmi les sorts figure le « Babel Fish » (voir section concernée), qui permet à un certain nombre d'individus d'augmenter ce Karmat. Lorsqu'une civilisation a atteint un certain niveau, elle est assurée de s'inscrire dans la durée, car un tel niveau ne peut s'atteindre que grâce à la participation intelligente de tout ses individus. Votre objectif : que cette civilisation soit la vôtre.

Ce que vous devez gérer

Vous n'êtes pas un Grand Chef

Mais alors pas du tout. Vous êtes un pauvre individu paumé au millieu de nulle part. Mais rassurez-vous, vous n'êtes pas seul. Des comme vous, il y en a d'autres, un peu partout dans le monde. Aussi paumés que vous. « Ouf ! » vous vous dites. Oui, sauf que... Il y a aussi des... des pas comme vous. Ils sont eux aussi dispersés un peut partout, ils vous ressemblent, mais ils parlent pas la même langue. Ils ont peut-être même envie de se battre. C'est bête hein ?

Se reconnaître

Alors, l'idée, c'est de rencontrer des gens. Des comme vous, de préférence. Pour les reconnaître, c'est facile : tout ce que vous comprenez, ils le comprennent aussi. Forcé : vous avez la même langue. Pratique... Le plus drôle, c'est que si vous inventez vos propres mots, ils le comprennent aussi, enfin, si vous savez ce que vous dites. Comme les seuls éléments de langage dont vous diposez tous sur cette planète (même les « pas comme vous »), suffisent à peine à échanger des sorts et des ressources, il va falloir en inventer, des mots... Histoire de dire ce que vous avez vu, où aller, que faire... Inutile de parler de la pluie et du beau temps. Mais pouvoir donner à un « ami » la direction dans laquelle se trouve une ressource, ça c'est important.

Je ne suis pas un numéro !

Mais non, on a jamais dit ça... Vous avez une identité propre : vous avez un... un numéro (ahem), une voix, des sorts, une civilisation (enfin, un... un numéro de civilisation). Vous êtes unique ! Bienvenue sur cette belle planète.

Cogito ergo sum

Votre but dans la vie, c'est de vous faire plein d'amis. En fait, l'idée, c'est de rencontrer un maximum de « comme vous», des gens ayant la même civilisation. Echanger des sorts, enrichir votre Karmat, tout ça... Pour devenir partie intégrante d'une civilisation dont vous devez être fier, et à la grandeur de laquelle vous êtes bien décidé à contribuer.

Et le code dans tout ça ?

Bon, tout ça, c'est bien joli, mais va falloir le programmer. Passons à des choses concrètes.

Ce que gère le serveur

We are the World... We are the chance...

Vous avez de la chance, le monde est déjà programmé (enfin, on éspère ! Mathiaaaas ?! -Oui ? -T'as fini ? -Euh...). Vous, que programmez-vous ? Un client. C'est-à-dire un programme qui va gérer un individu (une unité), spécifique à une civilisation : la vôtre. Et nous, on va exécuter des tas d'exemplaires de votre client, histoire d'avoir plein de « comme vous » dans notre monde qu'il est beau. Mais pas de favoritisme : on exécutera aussi des tas de clients d'autres candidats (les « pas commes vous »). C'est là que c'est drôle...

« I am the law » (© S.Stallone)

Vous ne pouvez rien faire sans nous le dire. En fait, pour être exacts, vous nous le dites, et nous on le fait. Essayez donc de parler à une unité sans passer par nous ! J'attends... Alors ? Toujours pas ? Vous voyez, vous avez besoin de nous. Et nous, nous savons pertinemment ce que vous pouvez faire et ne pas faire. Lorsque vous ramassez une ressource, vous nous le dites. Lorsque vous lancez un sort, que vous parlez avec quelqu'un, etc... vous nous le dites. Même pour voir ce qu'il y a autour de vous, vous devez nous le demander ! Et nous,comme on est très forts, on s'occupe de tout.

Judgment Day

Et naturellement, lorsque nous voyons qu'une civilisation a atteint son but (avoir un Karmat suffisant), nous mettons fin à ce monde ! Et à vos unités avec (rire démoniaque)...

Interactions avec votre environnement

Précision importante

Il faut bien que vous compreniez que ce n'est pas le serveur qui vous envoie des messages. Si vous comptez sur lui pour vous prévenir spontanément de quelque chose, vous risquez de pédaler dans la semoule. C'est votre rôle de demander de façon opportune au serveur ce que vous voyez et ce que vous entendez. Dans le premier cas, il vous signale tout ce que vous avez dans votre champ de vision, et dans le second, tout ce que vous avez entendu depuis votre dernière requête d'écoute (astuce du jour : si ça fait un paquet d'unités de temps que vous voyez une montagne, vérifiez que vous n'êtes pas vainement en train d'essayer de l'escalader).

Le vortex interdimensionnel subliminal des repères transcendentaux

Ah-hem... Comment vous annoncer ça sans vous frustrer... Vous êtes... incapable de vous repérer de manière précise. Ce que nous voulons dire, c'est que vous ne pouvez pas savoir exactement « où » vous êtes (genre « en (7,3) »). Vous ne savez même pas dans quelle direction vous regardez. Vous savez juste ce que vous voyez, point. Pour fournir une indication de lieu à une unité, vous ne pourrez pas faire « va en (6,12) »... Mais plutôt des trucs du genre « Tourne pas là, avance une centaine de mètres, prend à droite après la montagne, avance encore 50 mètres, tu y es ». En plus, comme vous le verrez dans la description de la trame de retour des sorts de type « Regarder », vous recevez les informations visuelles sous forme polaire : un angle, une distance. A vous de les utiliser correctement. En fait, c'est beaucoup plus proche de notre façon classique de nous déplacer que les repères cartésiens.

Ce que vous savez faire à la base

Comme toutes les civilisations, vous disposez d'un jeu de sorts basiques, ne nécessitant que peu de ressources (lesquelles sont en plus courantes). Ces actions sont :

  1. Vous orienter. Vous pouvez changer l'angle suivant lequel vous regardez ou avancez.
  2. Avancer. Bien entendu, vous pouvez vous déplacer, sur une distance donnée.
  3. Regarder. A (presque) n'importe quel moment, vous pouvez observer autour de vous (terrains, autres unités, ressources, etc...).
  4. Parler. C'est-à-dire émettre un message/une incantation avec un volume donné.
  5. Ecouter. Lorsque vous le voulez, vous pouvez demander au serveur de vous dire ce qui est passé à portée de vos oreilles récemment.
  6. Ramasser une ressource. Pratique pour survivre et lancer des sorts !
  7. Friter un mec. Gnark ! Libérez vos instincts bestiaux. Mais attention : ça fait du bruit.
  8. Obtenir des informations sur soi. Afin de savoir quelles ressources vous savez utiliser, ou encore quels sorts vous connaissez au départ.

Ce dernier sort est le seul dont l'incantation vous sera fournie dans le sujet. L'ensemble des sorts que vous connaissez de façon « innée » (les sorts standard et les supplémentaires) vous sont fournis avec les détails par le sort d'information personnelle (Wouamaye). C'est pourquoi vous n'avez ni incantation ni coût indiqué dans le sujet...

Actions avancées

Il s'agit de tous les sorts « supplémentaires » dont vous ne disposez pas tous au départ. En effet, l'intégralité des sorts existants est distribuée parmi les unité existantes, en nombre d'exemplaires variant en raison inverse de la puissance du sort. Consultez la Table des Sorts (document annexe) pour obtenir tous les détails.

Parler : comment et pourquoi ?

Vous disposez d'une routine tell. Cette routine prend trois paramètres : un volume, un tableau de 42 octets (le message), et une chaîne de caractères décrivant en français ce que vous faites. Elle retourne un pointeur sur les données en réception. Le message en question peut avoir deux grandes significations :

  1. Vous parlez, tout simplement : il contient donc une succession d'octets interprétables par votre, ou vos, interlocuteur(s).
  2. Vous lancez un sort : les quatre premiers octets contiennent l'incantation, les octets suivants les paramètres du sort.

Ces modes de fonctionnement vous semblent peut-être obscurs pour le moment, mais ne vous inquiétez pas : ils seront souvent rabâchés dans le sujet, et explicités si nécessaire, sous forme de codes sources, au début du concours.

L'ensempble des sorts est détaillé de manière exhaustive dans le second document de ce sujet : la Table des Sorts. Ce document décrit également tous les aspects techniques d'accès au serveur.

Trois types de sorts vous renvoient des informations complexes (regarder, écouter, et obtenir des informations sur soi). A cet effet, ils disposent de leurs propres routines d'appel (Look, Listen, et GetInfo) et seront traités à part.

Utiliser les ressources et lancer des sorts

Ramasser une ressource

Vous avez à portée de vous une ressource (vous êtes au courant grâce au gentil serveur qui vous l'a dit suite à une requête « Regarder»). Vous pouvez donc demander à ramasser la ressource (sort « Miam »).

Lancer un sort

Lorsque vous lancez un sort (en utilisant Tell, Listen, Look ou GetInfo), le serveur vérifie que vous avez les ressources nécessaires, et gère le temps d'exécution de votre sort.

Communication entre les unités

Un des aspects fondamentaux de votre client réside dans sa capacité à communiquer. Même pour voir, écouter ou simplement savoir qui vous êtes et où vous êtes, vous allez devoir transmettre des requêtes au serveur. Nous vous fournissons la description complète des différentes trames de communication dans le second document de ce sujet, mais vous aurez à votre disposition une librairie C/Pascal de haut niveau pour vous permettre de vous concentrer sur l'aspect Intelligence Artificielle, plutôt que sur la communication TCP/IP.

Discuter avec des « comme vous »

Première chose : communiquer avec des unités appartenant à votre civilisation. Par exemple, pour vous fixer des rendez-vous afin d'être aussi nombreux que possible pour un « Babel Fish » (voir Table des Sorts).

Parler et écouter : rappel

Encore une fois, nous vous rappelons que vous devez explicitement demander au serveur de vous transmettre ce que vous entendez, il ne le fait pas spontanément. Les trames que vous recevrez peuvent correspondre aussi bien à des messages (standard ou définis par une civilisation spécifique) qu'à des sorts (comme nous l'avons spécifié plus haut, les 4 premiers octets du message contiennent alors l'incantation). Voyez dans le document annexe la description des routines Tell et Listen.

Echanger des informations propres à votre civilisation

Entre deux unités d'une même civilisation, nous ne pouvons que vous encourager à échanger un maximum de sorts appris (ceux que vous acquérez par échange avec d'autres unités), afin de maximiser les compétences. Vous pouvez également consulter l'heure et vous fixer des rendez-vous pour réaliser des « Babel Fish » juteux (leur effet dépend du nombre de personnes présentes appartenant à la civilisation de l'unité lançant le sort)...

Discuter avec des « pas comme vous »

Mais vous n'êtes pas seuls, vous et vos semblables, sur cette planète. D'autres civilisations y sont présentes, et évoluent elles aussi. Vous rencontrerez sans aucun doute de nombreuses unités qui ne partagent pas votre langue. La seule communication fiable avec celles-ci repose sur les messages standard (si tant est qu'elles les connaissent). Vous pouvez donc :

Echanger des ressources

Comme nous le mentionnerons plus en détail tout à l'heure, toutes les civilisations n'ont pas le même rapport aux différentes ressources existantes. Ainsi, pendant une certaine période (qui peut durer l'éternité), il se peut que votre unité soit dans l'incapacité totale d'exploiter telle ou telle ressource « simple » (voir plus loin). Mais ce n'est pas pour autant qu'elle doit ignorer celle-ci lorqu'elle en voit : pourquoi ne pas les prendre et les échanger avec une unité en ayant l'utilité ? En consultant la Table des sorts, vous pourriez par exemple choisir de prendre systématiquement telle ressource, souvent utilisée pour tel ou tel type de sort, même si vous ne savez pas l'exploiter : elle fera une bonne monnaie d'échange.

Echanger des sorts

Toute unité est a priori apte à invoquer n'importe quel sort. La seule limitation qui apparaît est celle des ressources : vous ne pouvez évidemment pas invoquer un sort nécessitant des ressources que vous ne savez pas utiliser. Quoiqu'il en soit, vous ne perdez pas un sort lorsque vous l'échangez, pas plus que vous n'oubliez une connaissance lorsque vous la transmettez... Dans ce monde, les sorts sont le pouvoir.

Prêcher la bonne parole (donc la vôtre)

Vous êtes tellement fier de votre civilisation qu'elle est belle, que vous avez parfois envie de sortir les autres de leur aveuglement. Vous pouvez donc convertir une unité dont la civilisation est différente. Pour cela, il existe un sort « avancé », et si vous ne l'avez pas de façon « innée », il vous faudra l'apprendre (à moins que vous vous fichiez complètement de convertir les autres, bien sûr).

Discuter avec des Ermites

Dans les montagnes vivent des unités à part, un peu spéciales, gérées par des clients Prologin : les Ermites. Et c'est futé, un Ermite. Ça n'a que foutre de sortir de sa montagne, ça y est bien, en paix, zen quoi ; en attendant, ça connaît des tonnes de sort (mais aucun non référencé dans la Table des Sorts !). Mortel... Ils disposent du même langage de base que les autres unités, vous pourrez donc avoir recours à eux pour obtenir des sorts. Mais attention, le comportement des Ermites varie : certains sont purement généreux, d'autres aiment les belles pierres, ou les objets rares... Après tout, tout se paie. Pensez à eux en cas de besoin important.

Résultats attendus

  Que votre programme compile,
  Qu'il ne fasse pas Seg Fault,
  Qu'il soit documenté (quelques commentaires + un fichier texte « finale.doc » dans votre répertoire racine, décrivant vos différents modules ainsi -et nous insistons sur ce point- que les algorithmes que vous avez employés),
  Qu'il tourne (c'est mieux !)
  Qu'il gagne !!! (mooooooorteeeeel !)

Chaque fois que vous rencontrez une vraie difficulté, n'hésitez surtout pas à nous solliciter. Un document annexe vous précisera, entre autres modalités du concours, les différents supports d'aide que nous mettons à votre disposition.

Table des Ressources

Les différentes ressources auxquelles vous pourrez être amené à faire appel sont au nombre de sept. Il s'agit de :


Pierre Ressource commune, à l'origine de la plupart des sorts simples.
Eau Même topo que pour la pierre.
Fleur Déjà un peu moins commune, la Fleur est néanmoins une ressource de base, nécessaire au fonctionnement de nombreux sorts.
Sable Même topo que pour la Fleur.
Vent Une ressource plus subtile : le vent se déplace. Afin de lancer un sort nécessitant du vent, il faut se trouver dans un endroit où il y en a...
Boulon En raison de la quasi éradication des vestiges industriels du passé, l'acier est devenu rare et donc convoîté. Les boulons sont d'autant plus précieux qu'ils ont été fortement imprégnés des nouvelles puissances physiques qui ont désormais cours à la surface de la Terre.
Adamantite Métal très précieux et fort rare, aux qualités physiques incomparables (solidité, beauté...) et très prisé. Quelques sorts puissants le nécessitent.

Lorsque vous demandez au serveur la liste des sorts dont vous disposez « à la naissance » (les sorts dits innés) de votre unité, celui-ci renvoie une liste de sorts avec, entre autres informations, leurs coûts d'invocation en ressources (volontairement non précisé dans le sujet). Ce coût est composé, au minimum, d'une ressource simple. Un coût peut avoir jusqu'à deux ressources simples et deux ressources avancées (qui sont : Vent, Boulon, Adamantite).

Le coût en ressources simples d'un sort est toujours mis en place aléatoirement par le serveur, chaque fois qu'une unité lui fait cette requête d'information. Par exemple, une unité peut avoir à trouver du sable et une fleur pour un sort sonné, alors qu'une autre aura besoin d'eau et d'une pierre... Ainsi, il se peut qu'une unité doive chercher à acquérir le droit d'utiliser un type de ressource pour utiliser un sort qu'elle connaît. Elle peut tout aussi bien chercher à l'échanger contre un autre sort dont les ressources requises lui seraient autorisées...

Rappel : A et B échangent les sorts a et b signifie : A et B connaissent au final a+b.

P.S.: Le sujet est tout sauf presque complètement défini. Toute question dont la validité augmenterait l'entropie du sujet serait donc récursivement considérée comme validée.
Re-P.S. De même, toute question dont la validité dimiminuerait l'entropie du serveur serait récursivement considérée comme validée. Et réciproquement. CQFD.

Bon Courage & Bonne Chance !
(Don't Panic, t'as 36h42" !)

Les partenaires grâce à qui Prologin peut exister :

Silicon Sentier

O'Reilly

Université Pierre et Marie Curie

Fabernovel

AF83

Exalead

Hexaglobe

OpenCS

QPAD

Mandriva

GNU/Linux Magazine France

Bearstech

Codes sources

Prologin 2008