Compte tenu de la vue de côté d'un parcours de mini-golf et de la puissance de l'élan, déterminez si la balle parviendra dans le trou.
Un cours sera dans ce format:
____ ____ _
__/ \ / U \
__/ \ / \_
\_/
La balle commence juste avant le premier terrain à gauche et suit le contour du parcours jusqu'à atteindre le trou (majuscule au- U
dessous du niveau actuel du sol). S'il atteint le trou, affichez une valeur de vérité. La puissance du swing sera la vitesse initiale de la balle. La balle se déplace vers le personnage suivant à droite à chaque itération, puis la vitesse change en fonction du personnage sur lequel elle se trouve. Si la vitesse atteint 0
ou moins avant le trou, donnez une valeur de falsey.
_
diminue la vitesse de1
/
diminue la vitesse de5
\
augmente la vitesse de4
Les cours peuvent éventuellement être complétés par des espaces. La puissance du swing sera toujours un entier positif.
Vous n'avez pas à craindre que la balle aille trop vite pour entrer dans le trou, rouler en arrière ou sauter / rebondir sur les collines.
Cas de test
Input: 27
____ ____ _
__/ \ / U \
__/ \ / \_
\_/
Output: true
----------
Input: 26
____ ____ _
__/ \ / U \
__/ \ / \_
\_/
Output: false
----------
Input: 1
U
Output: true
----------
Input: 1
_
U
Output: false
----------
Input: 22
/U
/
/
/
\/
Output: true
----------
Input: 999
_ _
\ /
\ /
\ /
U
Output: true
----------
Input: 5
/
/U
Output: false
----------
Input: 9
/\/\/\/\/U
Output: false
----------
Input: 16
_/\ _
\ __ /\/\/\ /
\ / \ / \ /
\__/ \ / \____________ _/
\_/ U
Output: true
C'est le code mini-golf, la réponse la plus courte en octets gagne!
la source
\_/
) en procédant comme suit: scission en tableau de lignes, rotation, aplatissement, bandes d’espace.\/\/\/\/\/
soit un cours plus efficace que__________
.Réponses:
Pyth, 27 octets
Manifestation
Ce code fait quelque chose de très intelligent et pas du tout sûr avec le type
X
. Vérifiez ci-dessous.Explication:
la source
Q
? C'est-à-dire que le dernier exemple pourrait causer des problèmes?< ... Q
fonctionne comme une comparaison numérique jusqu'au trou, pas une tranche. Après le trou, tout ce qui compte est que le résultat soit la vérité.Haskell,
111109 octetsExemple d'utilisation:
Comment ça fonctionne:
Edit: @ user81655 a trouvé 2 octets à sauvegarder. Merci!
la source
Ruby,
10487 caractèresÉchantillon échantillon:
la source
Japt, 38 octets
Try it here!
Battre CJam!
Explication
Fondamentalement, saisit la chaîne, la fait pivoter de 90 degrés dans le sens des aiguilles d'une montre, supprime les espaces et les nouvelles lignes, supprime le trou et tout ce qui suit, et se scinde le long des caractères. Puis vérifie si la balle arrive à zéro ou en dessous en utilisant la
every
fonction.la source
%
et>0
peut être remplacée par¬
, puisque le carré d'un nombre non positif est toujours faux (0 -> 0
,-1 -> NaN
).CJam,
4039 octetsL'entrée a le pouvoir sur la première ligne et le parcours commence sur la deuxième ligne. La sortie est
0
ou1
.Testez-le ici.
Explication
la source
Retina,
82817774686768 octetsEssayez-le en ligne
>
s - par exemple, 4 l'est>>>>\n
. (est-ce légal?)+`(?<=(.)*) (?=.*¶(?<-1>.)*(.))
$2
- aplatissez le parcours - remplacez les espaces par le caractère situé en dessous d'eux.Après cette étape, les données ressembleront à ceci:
Nous pouvons simplement tout ignorer après le premier
U
, nous n'y arriverons pas de toute façon.>
représentent une étape que nous sommes autorisés à faire, ou l'énergie restante.\
par quatre>
: une pente nous donne une énergie supplémentaire.>_
ou>>>>>/
jusqu'à ce qu'il n'en reste plus._
s et/
s consomment de l' énergie.^>*U
- vérifiez si nous pouvons atteindreU
avec une énergie positive (ou aucune énergie).Cela produira
0
ou1
.Une autre option proche avec
9179 octets est:Essayez-le en ligne
C'est la même approche mais avec un groupe d'équilibrage au lieu d'un substitut litigieux.
Je suis sûr que les deux peuvent être joués plus loin, donc l’un d’eux peut être plus court.
la source
0
ou1
que le chiffre si cela ne comporte pas de tout octets supplémentaires.ES6, 117 octets
Ungolfed:
Edit: Sauvegardé 4 octets grâce à.
la source
JavaScript (ES6),
108107106 octetsC’est la solution que j’ai trouvée lorsque j’ai créé le défi.
Explication
Prend le pouvoir en tant que nombre et le cours en tant que chaîne. Retours
1
pourtrue
ou0
pourfalse
. Le parcours doit être complété par des espaces.Tester
la source
Python (3.5)
169160 octetsUne solution récursive sans la fonction de transposition (zip)
Ungolfed
c pour le parcours, p pour la puissance, v pour la vitesse, h pour la hauteur
Usage
la source
Pyth, 35 octets
Explication
la source
Ruby, 85 caractères
Réponse adaptée de @ manatwork
la source
JavaScript,
266263244 octetsUngolfed
Usage
la source
Java, 219 octets
Aplatissez le parcours, car la coordonnée y importe peu. Malheureusement, Java n’a pas d’ajustement vertical. Il n'a pas non plus de String-transpose.
Parcourez le parcours aplati et gardez une trace de la vitesse de la balle.
la source
Octave,
111 à110 octetsExplication:
max
pour chaque colonne'_/\'
sur[1, 5, -4]
(tous les autres caractères inférieurs à ceux'_'
mappés sur0
)True
si toutes les sommes cumulées depuis le début du parcours dans la coupe sont inférieures à la vitesse de départ (False
sinon).Voici un cas test que j'avais déjà développé similaire au second proposé par @Erwan et quelques résultats:
Et voici le premier cas de test:
la source
"//_U\\\\\\\_
le résultat est incorrect puisque vous ne supprimez pas le caractère après lesU
mêmes choses si vous avez un cours avec un maximum local comme_//\\\\\U
U
. C'est ce que(1:find(m==85))
fait le il faut sous-tableau du premier index à l’emplacement du fichierU
. Je vais vérifier votre cas de test avec quelques vitesses de départ et vous contacter.cumsum
à une variable intermédiaire, puis l’utiliser pour la comparaison finaleall(v>tmp(1:find(m==85)))
.C, 629 octets
Ungolfed:
Fondamentalement, je viens de faire un passage pour convertir la chaîne d'entrée pour tout adapter dans une ligne, puis
la source
if
/else
par exemplex+=*n==' ')?1:*n=='\n'?-x:(olc[x]=*n,1
. Autre astuce: en C, vousunsigned int
pouvez écrire toutunsigned
en économisant 4 octets.Python,
212201188143 octetsUne grande partie du mérite de cette itération de ce script revient à @Erwan, qui m'a proposé une approche totalement différente et des astuces qui m'ont permis d'économiser 55 octets à la fin.
Non récursif, il devrait donc être sensiblement différent de l’autre solution Python.
Ungolfed un peu:
la source
o=[''.join(x).split()[0] for x in zip(*c.split('\n'))]
Je pense que des choses comme celle- là gagnent 40 octetsbreak
parreturn p>0
et enleverif p...
if"U"==v or p<1
s'il y a un maximum local comme_//\\\\\U