Golf Challenge
Étant donné le "vert" ASCII ci-dessous.
| |
| |> |
| | |
| O |
| |
| |
| |
| |
| |
| |
Soit |
Dénoter un mur
Soit |
Dénoter la moitié du mât de drapeau
Soit >
Dénoter le drapeau sur le mât
Soit O
Dénoter le trou
Soit o
Dénoter le ballon
Les dimensions du "vert" sont de 10x10. Il y a dix espaces entre les deux murs |
.
Il y a aussi dix espaces, vides ou non entre le haut et le bas du green.
Défi
Saisissez une valeur x et y ou générez deux nombres aléatoires pour «tirer» une balle de golf sur le green.
Si les x, y générés ne touchent pas le trou ou la sortie du mât / drapeau "Try Again!"
Si le x, y généré atteint la sortie du trou "Hole in One!"
si le x, y généré atteint la sortie du pôle "Lucky Shot!"
si le x, y généré atteint la sortie du drapeau "Close One!"
Après le tir, affichez l'emplacement de la balle sur le green par un o
, en remplaçant tout personnage qu'elle a touché. Également afficher le dicton respectif ci-dessus.
Exemples:
//Hole in one example, the O was replaced with a o
Randomed x = 3
Randomed y = 4
"Hole in One!"
| |
| |> |
| | |
| o |
| |
| |
| |
| |
| |
| |
//Clone example, the top half of the pole was replaced with a o
Randomed x = 3
Randomed y = 2
"Lucky Shot!"
| |
| o> |
| | |
| O |
| |
| |
| |
| |
| |
| |
//Lucky Shot example, the > was replaced with a o
Randomed x = 4
Randomed y = 2
"Close One!"
| |
| |o |
| | |
| O |
| |
| |
| |
| |
| |
| |
//Try Again example, the <space> was replaced with a o
Randomed x = 5
Randomed y = 1
"Try Again!"
| o |
| |> |
| | |
| O |
| |
| |
| |
| |
| |
| |
Amusez-vous et bonne chance et comme il s'agit de code-golf, le code le plus court gagne!
Réponses:
JavaScript (ES6)
210208193184 octetsDémo
la source
Gelée , 78 octets
Faites une CAPACITES jeu ou une merde-Shoot à TryItOnline!
(Crap-shoot coûte plus d'octets).
Comment?
la source
Python 2,
290264262252248245 octetsCe n'est pas joli et ce n'est pas court mais je suis fatigué et c'est la
premièreseule réponse Python. Saisissez la prise de vue au format x, y.modifier
Golfé 26 en redéfinissant la façon dont la liste est construite. Toujours pas de chance avec la longue déclaration if.
-2 en remplaçant le long si par un dictionnaire et un plus court si.
-10 avec merci à @ Noodle9 - je l'avais manqué :)
-4 - merci encore :)
Encore 3 de réduction. Merci.
Pour toute personne intéressée par la logique, sans commentaires (1316 octets mais tient facilement sur un disque de 3,5 pouces si quelqu'un s'en souvient):
Certainement la première fois pour moi qu'un dictionnaire a été le meilleur format de données dans un défi de golf.
la source
C, 236 octets
Non golfé:
la source
Scala, 238 octets
Utilisation de l'indexation zéro.
C'est bien trop lisible :(
Explication:
J'ai utilisé la formule
1+x+13*y
pour calculer l'index correct, car chaque ligne a une longueur de 13 caractères (2 bordures, une nouvelle ligne et 10 espaces) plus un décalage d'un car (0,0) devrait être le deuxième caractère.la source
Perl,
225209 octetsLes deux nouvelles lignes littérales économisent chacune un octet. Assez standard. Imprime la déclaration, puis le plateau de jeu.
la source
Charbon de bois , 99 octets
Prend une entrée basée sur 1, séparée par des espaces, sur stdin. La plupart du code sert à imprimer (l'un des) les quatre messages. Essayez-le en ligne!
Remarque: Le charbon de bois est toujours un travail en cours. Ce code fonctionne à partir de la validation actuelle . S'il cesse de fonctionner à l'avenir (en particulier, si le lien TIO ne fonctionne pas comme prévu), envoyez-moi un ping et j'essaierai d'ajouter une version mise à jour non concurrente qui fonctionne.
Explication
la source
Brain-Flak , 1466
1938octetsEssayez-le en ligne!
Ai-je gagné?
la source
TI-Basic, 183 octets
Dieu merci, TI-Basic utilise des jetons.
Le
|
ne peut normalement pas être tapé, mais il est dans le jeu de caractères.Veuillez me faire savoir si le résultat de la prise de vue doit absolument être en minuscules.
J'ajouterai une capture d'écran d'un exemple de résultat de programme plus tard.
la source
Groovy - 235 octets
Ma première tentative - Une fermeture groovy acceptant 2 entiers de 0 à 9 comme coordonnées X et Y pour le plan.
la source
Dyalog APL , 147 (ou 127) octets
Prend (y, x) comme argument.
À partir de la version 16.0, nous pouvons presque diviser par deux le nombre d'octets avec le nouveau
@
opérateur;@
place l'opérande gauche dans la position de l'opérande droit dans l'argument de droite:NewChars @ Positions ⊢ Data
Code légèrement modifié pour le rendre autorisé dans TryAPL:
Trou en un , Lucky Shot 1 , Lucky Shot 2 , Close One , Aléatoire
la source
Turtled , 164 bytes
Encore une fois, mettant en valeur l'équilibre de Turtlèd entre golfeur et verbosité pour les choses les plus simples (comme incrémenter un nombre), Turtlèd bat tout sauf les langages du golf.
Essayez-le en ligne
Notez qu'il est indexé à moitié zéro et à moitié indexé; x est un indexé, y est indexé zéro; 3,3 est un trou en un
la source
R,
230226 octetsMerci à @billywob pour -2 octets, remarquer
M[a,b]
équivaut àM[c]
dans quelques cas.Ennuyeusement, les deux
cat
appels (!) Ne peuvent pas être concat
confondus en un seul, car l'fill
argument gâche le message. Argh!la source
function(x,y){M=matrix("|",10,10);M[2:9,]=" ";M[34]="0";M[4,2:3]="f";M[15]=">";m=switch(M[y,x],">"="Close One","f"="Lucky Shot","0"="Hole In One","Try again");M[y,x]="o";cat(m,"!\n",sep="");cat(gsub("f","|",M),sep="",fill=10)}
f=
de ma solution de toute façon. Supprimé.