Trouver X
J'ai été inspiré par des questions mathématiques dans lesquelles on est invité à "trouver X" pour une forme donnée. À l'origine, j'allais juste avoir le défi d'imprimer l'emplacement x et y du caractère 'x' dans une chaîne. Mais je supposais que ce serait trop simple. J'ai donc considéré le contexte dans lequel ils se trouvaient normalement et j'ai décidé que trouver la longueur d'une ligne à côté du x semblait juste approprié.
Étant donné une entrée de chaîne contenant un diagramme de «lignes» ascii ainsi qu'un seul «x» et des caractères potentiellement indésirables, imprimez la longueur de la seule ligne qui a un «x» directement associé.
Exemples
Contribution:
|
|
|x
|
|
Sortie:
5
Contribution:
|\
| \x
| \
|___\
Production:
4
Contribution:
Diagram of a Wobbly Line:
IRRELEVANTTEXT____
____ ____/
\___/ X ;)
x
Production:
3
Contribution:
______________
/ ____________ \
|/ __________ \|
||/ ________ \||
|||/ ______ \|||
||||/ \||||
|||||/ x |||||
|||||\_____/||||
||||\_______/|||
|||\_________/||
||\___________/|
\_____________/
Production:
5
Remarques
- Les caractères de ligne valides sont
\/_|
\
relie le coin supérieur gauche et inférieur droit de lui-même./
relie le coin supérieur droit et inférieur gauche de lui-même._
relie la gauche et la droite de lui-même|
relie le haut et le bas de lui-même- Une ligne sera toujours droite et ne sera composée que d'un des caractères de ligne répétés n fois.
- Le x sera toujours en minuscules et ce sera toujours le seul dans le diagramme.
- Adjécent fait référence au x étant exactement un caractère au-dessus, en dessous ou en plus.
- Le x sera toujours à côté d'exactement une ligne.
- Les onglets n'apparaîtront jamais dans l'entrée.
- L'entrée et la sortie peuvent être de n'importe quel format acceptable.
- C'est Code Golf, donc le code le plus court gagne!
- S'AMUSER. FAIS LE. AMUSEZ-VOUS BIEN.
@
des réponses aux tests de résistance.Réponses:
JavaScript (ES6),
165, 155 octetsEDIT: Inline x et w en ligne , pour économiser encore plus d'octets.
Golfé (suppose que l'entrée est complétée par des espaces pour faire un rectangle)
Étendu
Tester
Exemple de sortie (si vous l'exécutez dans la console Google Chrome Developer Tools)
la source
Python 3,
428408385378 octetsFonctionne, mais a une tonne de potentiel pour être joué au golf. Je suis un peu rouillé.
Suppose que l'entrée est complétée par des espaces pour former un rectangle.
EDIT: Merci à @Artyer pour des économies de 23 octets!
EDIT2: Wow, j'ai complètement raté une économie de 6 octets. Enregistré 1 de plus en échangeant les côtés d'un chèque égal.
Version étendue avec explication:
la source
<!-- language-all: lang-py -->
pour la coloration syntaxique.*i,=map(list,inputtt.split('\n'))
(*i,
créei
une liste au lieu d'une carte) (-6 octets de plus)Lua, 480 octets
Lua, étant le langage verbeux qu'il est, ne bat pas la réponse Python. Mais ce n'est pas nécessaire.
Semblable à mon implémentation de référence, mais prend un coup réel au golf et fait certaines choses un peu plus intelligemment qu'auparavant. On pourrait probablement encore jouer un peu mieux au golf.
Avec des commentaires.
la source
JavaScript (ES6), 175
En supposant que l'entrée est complétée par des espaces pour créer un rectangle.
Moins golfé
Tester les points au lieu des espaces pour plus de clarté
la source