Défi:
Certains ascii-art sont difficiles à réaliser, mais facilitent la lecture des commentaires de code, surtout lorsque le code est dense. Le défi est de créer un outil simple qui convertit les commentaires en simple ascii-art avec des flèches. Les commentaires à modifier sont délimités par des commentaires vides.
Par exemple, en supposant la syntaxe de commentaire Haskell, convertissez ceci:
--
-- Here's a thing
-- Here's another thing
-- The most important thing
-- * * *
--
f x=x+1*x*1*1*0
Pour ça:
-- /------------< Here's a thing
-- | /-------< Here's another thing
-- | | /-< The most important thing
-- | | |
-- v v v
f x=x+1*x*1*1*0
Règles:
- Votre réponse peut être une fonction ou un programme complet
- Vous pouvez choisir la langue avec laquelle il est conçu pour fonctionner, en remplaçant le "-" par deux ou plusieurs caractères qui délimitent un commentaire dans une langue
- Si vous utilisez un autre format de commentaire qui nécessite des délimiteurs de début et de fin, chaque ligne des sections reformatées doit être un commentaire approprié
- Les sections à reformater sont délimitées par le commentaire vide "\ n - \ n"
- Outre l'ajout de nouvelles lignes, le programme ne doit modifier aucune des entrées à l'exception des sections délimitées
- Un commentaire rempli d'un nombre arbitraire d'espaces peut apparaître juste avant une section de sortie correctement formatée
- Les failles standard sont interdites
Exemples supplémentaires:
(input)
--
--
(output)
nothing
(input)
[Code Here]
--
-- important
-- *
--
(output)
[Code Here]
-- /-< important
-- |
-- v
(input)
--
-- Do
-- Re
-- Mi
-- Fa
-- So
-- *****
--
(output)
-- /-----< Do
-- |/----< Re
-- ||/---< Mi
-- |||/--< Fa
-- ||||/-< So
-- |||||
-- vvvvv
Notation:
- Le moins d'octets gagne
- Les soumissions sans explications ou exemple d'entrées / sorties non triviales ne seront pas prises en compte (bien que je laisse un délai de grâce pour laisser le temps de les ajouter)
Réponses:
Ruby, 160 caractères
Exemple d'exécution:
Brève description:
la source
JavaScript (ES6),
418,237,233, 236 octetsOuf, ceci est ma première soumission sur CG.
J'ai pris, je pense, une approche totalement différente de Washington Guedes. A fini 54 octets de moins que sa première passe. Réduire tout cela à la main était exténuant. Mon seul regret est de ne pas avoir pu éliminer la boucle while, ce qui me permettrait également de réduire le retour.Réécriture totale, en s'inspirant partiellement de quelques autres réponses. J'ai pu fermer le tout dans les cartes, ce qui rend le retour bien meilleur. L'extrait de code contient la version commentée.
A pris quelques octets de plus et a fait fonctionner l'exemple sur lui-même. (Tu vas avoir besoin d'un moniteur plus grand.) :)
Vous avez oublié une lettre entière dans la spécification! Heureusement, l'ajout du premier «<» était une solution minuscule et triviale.
Afficher l'extrait de code
la source
Python 2, 299 octets
Attend une nouvelle ligne de fin dans l'entrée
Explication / exemple
Contribution:
Divise l'entrée par
--\n
. Chaque seconde chaîne est un bloc de commentaire délimité.Exécute chaque chaîne. Si la chaîne n'est pas un commentaire, imprime simplement la chaîne. Autrement:
Fractionne chaque ligne du bloc de commentaires.
Rend les deux lignes du bas en remplaçant les lignes de
*
s parv
et|
.Pour chaque ligne de commentaires (en arrière), supprimez la colonne la plus à droite, ajoutez
/
, complétez avec-
et ajoutez un commentaire.Imprimer tout
Moins golfé:
la source
JavaScript (ES6), 253
En tant que fonction anonyme, avec le code à formater comme paramètre de chaîne et renvoyant le code formaté.
Remarques
Moins golfé
Tester
Afficher l'extrait de code
la source