Le COBOL est une langue très ancienne. Au moment de la rédaction de cet article, il a 58 ans. Il est si vieux, en fait, qu’il a une bizarrerie très intéressante: les six premiers caractères de chaque ligne sont des commentaires.
Pourquoi est-ce que vous demandez? Eh bien, ces 6 caractères étaient destinés à être utilisés comme numéros de ligne, à l’époque où les programmes n’étaient pas entièrement numériques et tapés sur un ordinateur.
De plus, le septième caractère ne peut faire partie que d'un très petit ensemble (il s'agit généralement *
de commenter la ligne ou d'un espace pour séparer le numéro de ligne du code).
Mais que se passe-t-il si vous utilisez un système plus numérique et que vous souhaitez uniquement le programme brut?
Le système de commentaires
Il existe deux types de commentaires dans COBOL: les commentaires de ligne et les commentaires "numéro de ligne" susmentionnés.
Décommenter les numéros de ligne est simple: il suffit de prendre les sept premiers caractères (six plus un seul espace) de chaque ligne.
000000 apple
000001 banana
celery donuts
deviendrait:
apple
banana
donuts
Les commentaires de ligne rendent les choses un peu plus difficiles. Un commentaire de ligne commence par un astérisque *
placé au septième caractère de la ligne, comme suit:
000323* this is a comment
Ce n'est pas un commentaire de ligne:
*00000 this isn't a comment
Pour supprimer un commentaire de ligne, supprimez simplement la ligne entière.
Un exemple commenté "programme":
000000 blah blah
000001* apples
000002 oranges?
000003* yeah, oranges.
000*04 love me some oranges
La version non commentée:
blah blah
oranges?
love me some oranges
En d'autres termes, pour supprimer la mise en commentaire d'une chaîne, supprimez les six premiers caractères de chaque ligne, puis renvoyez tous les caractères sauf le premier caractère de chaque ligne qui ne commence pas par une étoile.
Le défi
Créez un programme ou une fonction qui prend un programme commenté et renvoie sa variante non commentée.
Des clarifications
- Les astérisques (
*
) ne seront jamais trouvés en dehors des sept premiers caractères d'une ligne (nous ne vous demandons pas de vérifier la syntaxe) - Chaque ligne aura toujours au moins 7 caractères.
- Vous pouvez supposer que le septième caractère est toujours un astérisque ou un espace.
- L'entrée ou la sortie peut être une matrice ou une liste.
- Seuls les caractères ASCII imprimables (plus la nouvelle ligne) doivent être gérés.
- Vous pouvez sortir avec une nouvelle ligne. Vous pouvez également supposer que l'entrée aura un retour à la ligne de fin, si vous le souhaitez.
Notation
Puisqu'il s'agit de code-golf , la réponse avec le moins d'octets gagne!
DISCLAIMER: Je ne connais pas réellement COBOL et ne prétends pas le faire. Si l'une des affirmations que j'ai faites à propos de COBOL dans cette question est inexacte, je décline toute responsabilité.
*
. Est-ce une coïncidence?