Il y a un jeu auquel j'aime jouer. Cela se produit sur une grille de taille finie (mais elle est enveloppée, comme une sphère). Sur cette grille, un point aléatoire (entier uniquement) est sélectionné. Ensuite, moi, l'utilisateur, je suis invité à entrer des coordonnées. Si ma contribution correspond exactement au point aléatoire, on me dit que j'ai gagné. Sinon, on me dit la distance point par point entre mon entrée et le point aléatoire. Par exemple, si je devinais (2,2)
et que le point aléatoire était à (4,3)
, alors la distance serait sqrt[(3-2)^2 + (4-2)^2] = sqrt[5]
.
Le jeu continue jusqu'à ce que le joueur arrive au bon endroit du point.
Objectif Créer une version fonctionnelle du jeu décrit ci-dessus. Pour ce faire, vous devez créer un programme complet. Voici ce que votre programme devrait faire:
- Demandez deux entrées: la hauteur et la largeur de la planche. L'origine se trouve en haut à gauche du plateau. Ces entrées ne dépasseront pas
1024
. - Sélectionnez un point au hasard sur cette planche; ce sera le point à deviner.
- Acceptez une entrée simulant un virage. L'entrée sera soit une paire d'entiers séparés par des espaces, soit deux entrées entières distinctes. En réponse à cette contribution, le programme fera l'une des deux choses suivantes:
- Si l'entrée correspond au point aléatoire sélectionné, émettez un message signalant la victoire de l'utilisateur. Je dirais "Tu as gagné!".
- Sinon, affichez la distance entre le point d'entrée de l'utilisateur et le point aléatoire.
- Une fois que l'utilisateur a remporté la victoire, affichez le nombre de tours qu'il a pris. Le programme se ferme ensuite.
Bonus
Les bonus sont appliqués dans l'ordre dans lequel ils apparaissent dans cette liste
- -150 octets si votre programme prend un entier d'entrée
D
qui décrit la dimension dans laquelle le jeu se déroule. Par exemple, siD = 3
, alors vous créez un point aléatoire d'3
entiers, prenez3
des entrées entières et affichez la distance entre ces points. - -50% (ou + 50% si
score < 0
) si vous fournissez une représentation graphique de la carte (ASCII ou Image) qui montre où l'utilisateur a déjà deviné sur la grille de dimensions données et le compteur de tours. (Si vous optez pour le premier bonus, ce bonus ne s'applique qu'aux modes2D
et1D
. Si vous ajoutez une sortie graphique 3D, vous obtenez un supplément de -50%.) - -60 octets si vous pouvez fournir un mode de jeu (sélectionné par une entrée au début; c'est-à-dire, lorsqu'il est donné
0
, effectuer le mode de jeu normal; lorsqu'il est donné1
, effectuer ce mode de jeu) dans lequel le point se déplace de 1 unité dans une direction orthogonale aléatoire par tour
Plus sur l'emballage
L'habillage ne se produit que lorsque, dans le troisième bonus, le point mobile se déplace à travers l'une des limites; dans ce cas, le point mobile est déformé au point respectif, comme suit:
... ...
..R (move right) R..
... ...
Ce comportement d'habillage n'affecte pas la supposition de l'utilisateur, mis à part le fait que le point a changé de direction.
Classement
L'extrait de pile au bas de cet article génère le catalogue à partir des réponses a) en tant que liste des solutions les plus courtes par langue et b) en tant que classement général.
Pour vous assurer que votre réponse apparaît, veuillez commencer votre réponse avec un titre, en utilisant le modèle de démarque suivant:
# Language Name, N bytes
où N
est la taille de votre soumission. Si vous améliorez votre score, vous pouvez conserver les anciens scores dans le titre en les rayant. Par exemple:
# Ruby, <s>104</s> <s>101</s> 96 bytes
Si vous souhaitez inclure plusieurs nombres dans votre en-tête (par exemple, parce que votre score est la somme de deux fichiers ou si vous souhaitez répertorier les pénalités de drapeau d'interprète séparément), assurez-vous que le score réel est le dernier numéro de l'en-tête:
# Perl, 43 + 2 (-p flag) = 45 bytes
Vous pouvez également faire du nom de la langue un lien qui apparaîtra ensuite dans l'extrait de code:
# [><>](http://esolangs.org/wiki/Fish), 121 bytes
10x10
, le point aléatoire est (9,4)
, et je suppose (2,2)
, la distance sqrt(13)
ou sqrt(53)
? (Remarque pour l'avenir: si vous faites quelque chose de bizarre, n'incluez pas le hasard car il est presque impossible de fournir des cas de test). 2. Dans le troisième bonus, la distance doit-elle être calculée et émise avant ou après le déplacement du point?