introduction
La plupart des golfeurs de code ajoutent ici des explications à leurs soumissions, il est donc plus facile de comprendre ce qui se passe. Habituellement, les lignes de code vont à gauche et l'explication correspondante à droite avec une sorte de séparateur. Pour le rendre joli, les séparateurs sont tous sur la même colonne. De plus, un long texte d'explication est généralement placé sur la ligne suivante, afin que les lecteurs n'aient pas à faire défiler horizontalement pour tout lire.
Cependant, lorsque vous souhaitez modifier cette explication parce que vous avez fait des golfs fous, vous finissez souvent par perdre du temps à rendre votre explication à nouveau jolie. Comme il s'agit d'une tâche très répétitive, vous souhaitez écrire un programme pour cela.
Le défi
Étant donné plusieurs lignes de code avec explication et un séparateur, sortez le code bien formaté avec explication.
Exemple
Contribution
shM-crz1dc4. "ANDBYOROF # z = entrée rz1 # convertir l'entrée en majuscules entrée cd # split sur les espaces c4. "ANDBYOROF # crée une liste de mots à partir d'une chaîne compressée qui doit être ignorée - # filtre ces mots hM # ne prend que la première lettre de tous les mots s # les joindre en une seule chaîne
Production
shM-crz1dc4. "ANDBYOROF # z = entrée rz1 # convertir l'entrée en majuscules entrée cd # split sur les espaces c4. "ANDBYOROF # crée une liste de mots à partir d'une chaîne compressée qui doit être # ignoré - # filtre ces mots hM # ne prend que la première lettre de tous les mots s # les joindre en une seule chaîne
Un cookie pour le premier qui peut découvrir ce que fait ce code.
L'algorithme de formatage
- Trouvez la ligne de code la plus longue (à l'exclusion de l'explication et des espaces entre le code et le séparateur).
- Ajoutez 5 espaces après cette ligne de code et ajoutez le séparateur correspondant avec explication. C'est maintenant la ligne de référence.
- Ajustez toutes les autres lignes sur cette ligne de référence, de sorte que les séparateurs soient tous dans la même colonne.
- Enveloppez toutes les lignes de plus de 93 caractères dans une nouvelle ligne de la manière suivante:
- Trouvez le dernier mot dont la fin se trouve dans la colonne 93 ou moins.
- Prenez tous les mots après celui-ci et enveloppez-les dans une nouvelle ligne avec le séparateur de tête et l'espacement correct. L'espace entre ces deux mots doit être supprimé, donc la première ligne se termine par un caractère de mot et la deuxième ligne commence par un après le séparateur.
- Si la ligne résultante est toujours plus longue que 93 caractères, recommencez jusqu'à ce que chaque ligne soit inférieure à 94 caractères.
Remarques
- Un mot se compose de caractères non blancs. Les mots sont séparés par un seul espace.
- L'habillage de mots est toujours possible. Cela signifie qu'aucun mot n'est si long que cela rendrait l'emballage impossible.
- L'entrée ne contiendra que de l'ASCII imprimable et n'aura aucun espace de fin
- Le séparateur n'apparaîtra qu'une fois par ligne.
- Alors que l'explication peut avoir une longueur illimitée, le séparateur et le code ne peuvent avoir qu'une longueur maximale combinée de
93 - 5 = 87
caractères. Les 5 caractères sont les espaces entre le code et le séparateur. Le code et le séparateur comporteront toujours au moins un caractère. - L'entrée peut contenir des lignes vides. Ceux-ci ne contiendront jamais de caractères (sauf un retour à la ligne si vous prenez l'entrée comme chaîne multiligne). Ces lignes vides doivent également être présentes dans la sortie.
- Chaque ligne aura du code, un séparateur et une explication. Les exceptions sont les lignes vides.
- Vous pouvez prendre l'entrée dans n'importe quel format raisonnable, tant qu'elle n'est pas prétraitée. Indiquez clairement dans votre réponse laquelle vous utilisez.
- La sortie peut être une chaîne multiligne ou une liste de chaînes.
Règles
- Fonction ou programme complet autorisé.
- Règles par défaut pour les entrées / sorties.
- Des échappatoires standard s'appliquent.
- Il s'agit de code-golf , donc le nombre d'octets le plus bas l'emporte. Tiebreaker est une soumission antérieure.
Cas de test
Le format d'entrée est ici une liste de chaînes représentant les lignes et une seule chaîne pour le séparateur. Les deux sont séparés par une virgule. La sortie est une liste de chaînes.
['shM-crz1dc4. "ANDBYOROF # z = entrée', '', 'rz1 # convertit l'entrée en majuscule', 'cd # entrée fractionnée sur les espaces', 'c4." ANDBYOROF # crée une liste des mots à partir d'un paquet chaîne qui doit être ignorée ',' - # filtre ces mots ',' hM # ne prend que la première lettre de tous les mots ',' # les joint en une seule chaîne '], "#" -> [' shM-crz1dc4 . "ANDBYOROF # z = entrée ',' ',' rz1 # convertit l'entrée en majuscules ',' cd # entrée fractionnée sur les espaces ',' c4." ANDBYOROF # crée une liste des mots d'une chaîne compressée qui doit être ' , '# ignoré', '- # filtre ces mots ',' hM # ne prend que la première lettre de tous les mots ',' # les joint en une seule chaîne '] ['codecodecode e # Explication', 'sdf dsf sdf e # A Très très très très très très très très long long long long long long long long long long long long explication et ça ne cesse de s'allonger' ',' ',' certains plus de codee # et quelques explications supplémentaires '], "e #" -> [' codecodecode e # Explication ',' sdf dsf sdf e # A Très très très très très très très très très très long long long long long ',' e # long longue longue longue longue longue explication et ça ne cesse de s'allonger ',' e # et plus long ',' ',' un peu plus de code e # et encore plus d'explication ']
Codage heureux!
length of the longest code-line + 5
. Cela s'appliquait également aux lignes qui ne contiennent qu'une explication, car elles étaient encapsulées.