Desafío:
Es difícil hacer algunos ascii-art, pero hace que los comentarios de código sean más fáciles de leer, especialmente cuando el código es denso. El desafío es hacer una herramienta simple que convierta los comentarios en arte ascii simple con flechas. Los comentarios a modificar están delimitados por comentarios vacíos.
Por ejemplo, suponiendo que la sintaxis del comentario de Haskell, convierta esto:
--
-- Here's a thing
-- Here's another thing
-- The most important thing
-- * * *
--
f x=x+1*x*1*1*0
A esto:
-- /------------< Here's a thing
-- | /-------< Here's another thing
-- | | /-< The most important thing
-- | | |
-- v v v
f x=x+1*x*1*1*0
Reglas:
- Su respuesta puede ser una función o un programa completo
- Puede elegir el idioma con el que está hecho para trabajar, reemplazando el "-" con dos o más caracteres que delimitan un comentario en algún idioma
- Si usa otro formato de comentario que requiere delimitadores iniciales y finales, cada línea de las secciones reformateadas debe ser un comentario apropiado
- Las secciones a reformatear están delimitadas por el comentario vacío "\ n - \ n"
- Además de agregar nuevas líneas, el programa no debe cambiar ninguna entrada excepto las secciones delimitadas
- Un comentario lleno de un número arbitrario de espacios puede aparecer inmediatamente antes de una sección de salida con el formato correcto
- Las lagunas estándar no están permitidas
Ejemplos adicionales:
(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
Puntuación:
- Pocos bytes ganan
- No se considerarán las presentaciones sin explicaciones o entradas / salidas de ejemplo no triviales (aunque dejaré un período de gracia para permitir tiempo para agregarlas)
Respuestas:
Ruby, 160 caracteres.
Ejecución de muestra:
Breve descripción:
fuente
JavaScript (ES6),
418,237,233, 236 bytesMenos mal, esta es mi primera presentación sobre CG.
Tomó, creo, una táctica totalmente diferente de Washington Guedes. Terminó 54 bytes más corto que su primer pase. Minificar todo esto a mano fue agotador. Lo único que lamento es no haber podido eliminar el ciclo while todavía, lo que también me permitiría reducir el retorno.Reescritura total, tomando inspiración parcial de algunas de las otras respuestas. Tengo que cerrar todo en mapas, haciendo que regresar sea mucho mejor. El fragmento de código contiene la versión comentada.
Tomó unos pocos bytes más e hizo que el ejemplo funcionara solo. (Necesitarás un monitor más grande) :)
Olvidé una carta completa en la especificación! Afortunadamente, agregar el '<' principal fue una pequeña y trivial solución.
Mostrar fragmento de código
fuente
Python 2, 299 bytes
Espera una nueva línea final en la entrada
Explicación / Ejemplo
Entrada:
Divide la entrada por
--\n
. Cada segunda cadena es un bloque de comentarios delimitado.Corre a través de cada cadena. Si la cadena no es un comentario, simplemente imprime la cadena. De otra manera:
Divide cada línea en el bloque de comentarios.
Hace las dos líneas inferiores reemplazando las líneas de
*
s conv
y|
.Para cada línea de comentarios (hacia atrás) elimine la columna de la derecha, agregue
/
, rellene-
y agregue comentarios.Imprime todo
Menos golfizado:
fuente
JavaScript (ES6), 253
Como una función anónima, con el código para formatear como un parámetro de cadena y devolver el código formateado.
Notas
Menos golf
Prueba
Mostrar fragmento de código
fuente