Herausforderung:
Etwas ASCII-Kunst ist mühsam, erleichtert aber das Lesen von Codekommentaren, insbesondere wenn der Code dicht ist. Die Herausforderung besteht darin, ein einfaches Tool zu erstellen, das Kommentare mit Pfeilen in einfache ASCII-Grafiken umwandelt. Die zu ändernden Kommentare werden durch leere Kommentare begrenzt.
Wenn Sie beispielsweise die Haskell-Kommentarsyntax annehmen, konvertieren Sie Folgendes:
--
-- Here's a thing
-- Here's another thing
-- The most important thing
-- * * *
--
f x=x+1*x*1*1*0
Dazu:
-- /------------< Here's a thing
-- | /-------< Here's another thing
-- | | /-< The most important thing
-- | | |
-- v v v
f x=x+1*x*1*1*0
Regeln:
- Ihre Antwort kann entweder eine Funktion oder ein vollständiges Programm sein
- Sie können die Sprache auswählen, mit der gearbeitet werden soll, indem Sie das "-" durch zwei oder mehr Zeichen ersetzen, die einen Kommentar in einer bestimmten Sprache abgrenzen
- Wenn Sie ein anderes Kommentarformat verwenden, für das Anfangs- und Endbegrenzer erforderlich sind, muss jede Zeile der neu formatierten Abschnitte ein richtiger Kommentar sein
- Die neu zu formatierenden Abschnitte werden durch den leeren Kommentar "\ n - \ n" begrenzt.
- Abgesehen vom Hinzufügen von Zeilenumbrüchen darf das Programm keine der Eingaben außer den begrenzten Abschnitten ändern
- Ein Kommentar, der mit einer beliebigen Anzahl von Leerzeichen gefüllt ist, kann unmittelbar vor einem ordnungsgemäß formatierten Ausgabeabschnitt stehen
- Standardlücken sind nicht zulässig
Zusätzliche Beispiele:
(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
Wertung:
- Wenigste Bytes gewinnt
- Einsendungen ohne Erklärungen oder nicht triviale Beispieleingabe / -ausgabe werden nicht berücksichtigt (obwohl ich eine Nachfrist einhalten werde, um Zeit für das Hinzufügen solcher Beispiele zu haben).
Antworten:
Ruby, 160 Zeichen
Probelauf:
Kurze Beschreibung:
quelle
JavaScript (ES6),
418,237,233, 236 BytePuh, das ist mein erster Beitrag zu CG.
Hat, glaube ich, eine ganz andere Richtung eingeschlagen als Washington Guedes. Endete 54 Bytes kürzer als sein erster Durchgang. Das alles mit der Hand abzubauen war anstrengend. Mein einziges Bedauern ist, dass ich die while-Schleife noch nicht beseitigen kann, wodurch ich auch die Rendite kürzen könnte.Vollständiges Umschreiben, teilweise inspiriert von einigen anderen Antworten. Ich musste das Ganze in Karten festhalten, um die Rückkehr zu verbessern. Das Code-Snippet enthält die kommentierte Version.
Hat ein paar Bytes mehr Zeit gekostet und das Beispiel für sich arbeiten lassen. (Du brauchst einen größeren Monitor.) :)
Ich habe einen ganzen Buchstaben in der Spezifikation vergessen! Glücklicherweise war das Hinzufügen des führenden '<' eine winzige, triviale Korrektur.
Code-Snippet anzeigen
quelle
Python 2, 299 Bytes
Erwartet eine nachgestellte Zeile in der Eingabe
Erklärung / Beispiel
Eingang:
Teilt die Eingabe durch
--\n
. Jede zweite Zeichenfolge ist ein Kommentarblock mit Trennzeichen.Läuft durch jede Zeichenfolge. Wenn die Zeichenfolge kein Kommentar ist, wird sie nur gedruckt. Andernfalls:
Teilt jede Zeile im Kommentarblock.
Ergibt die beiden unteren Zeilen, indem die Zeilen von
*
s durchv
und ersetzt werden|
.Entfernen Sie für jede Kommentarzeile (rückwärts) die Spalte ganz rechts, fügen Sie sie hinzu
/
, füllen Sie sie mit einem Pad auf-
und fügen Sie einen Kommentar hinzu.Alles drucken
Weniger golfen:
quelle
JavaScript (ES6), 253
Als anonyme Funktion, mit dem Code als String-Parameter zu formatieren und den formatierten Code zurückzugeben.
Anmerkungen
Weniger golfen
Prüfung
Code-Snippet anzeigen
quelle