O COBOL é uma linguagem muito antiga, no momento da escrita, tem 58 anos. É tão antigo, de fato, que tem uma peculiaridade muito interessante: os seis primeiros caracteres de cada linha são comentários.
Por que isso, você pergunta? Bem, esses 6 caracteres foram criados para serem usados como números de linha, no dia em que os programas não eram completamente digitais e digitados em um computador.
Além disso, o sétimo caractere só pode fazer parte de um conjunto muito pequeno (geralmente é *
para comentar a linha ou um espaço para separar o número da linha do código)
Mas e se você estiver em um sistema mais digital e quiser apenas o programa bruto?
O sistema de comentários
Existem dois tipos de comentários no COBOL: comentários de linha e os comentários "número da linha" mencionados acima.
Não é necessário comentar números de linhas: basta retirar os sete primeiros (seis mais um espaço) de cada linha.
000000 apple
000001 banana
celery donuts
se tornaria:
apple
banana
donuts
Os comentários de linha tornam um pouco mais difícil. Um comentário de linha é iniciado com um asterisco *
colocado na posição de sétimo caractere na linha, da seguinte forma:
000323* this is a comment
Este não é um comentário de linha:
*00000 this isn't a comment
Para remover o comentário de uma linha, remova a linha inteira.
Um exemplo comentou "programa":
000000 blah blah
000001* apples
000002 oranges?
000003* yeah, oranges.
000*04 love me some oranges
A versão não comentada:
blah blah
oranges?
love me some oranges
Em outras palavras, para descomentar uma sequência, remova os seis primeiros caracteres de cada linha e retorne todos, exceto o primeiro caractere de cada linha que não começa com uma estrela.
O desafio
Crie um programa ou função que pega um programa comentado e retorna sua variante não comentada.
Esclarecimentos
- Asteriscos (
*
) nunca serão encontrados em nenhum lugar fora dos sete primeiros caracteres de uma linha (não estamos solicitando que você verifique a sintaxe) - Cada linha sempre terá pelo menos 7 caracteres.
- Você pode assumir que o sétimo caractere é sempre um asterisco ou um espaço.
- Entrada ou saída pode ser uma matriz ou lista.
- Somente caracteres ASCII imprimíveis (mais nova linha) devem ser manipulados.
- Você pode imprimir com uma nova linha à direita. Você também pode assumir que a entrada terá uma nova linha à direita, se assim desejar.
Pontuação
Como se trata de código-golfe , a resposta com o mínimo de bytes vence!
AVISO LEGAL: Na verdade, eu não conheço COBOL e não reivindico. Se alguma das reivindicações sobre COBOL que fiz nesta pergunta estiver incorreta, não me responsabilizo.
*
. Isso é uma coincidência?
key:{key:{key:length,key:length}}
. Tira todos os dados de formatação e digitação.