Hora de um novo desafio de tipografia ! É um problema comum ao copiar e colar entre vários formatos de documento: hifenização. Embora reduza a irregularidade de um layout alinhado à esquerda ou reduza o espaçamento em um layout justificado, é uma dor completa quando o PDF não é construído adequadamente e retém os hífens no layout, dificultando a edição ou refluxo do texto copiado.
Felizmente, se acreditarmos nos inúmeros livros de auto-ajuda existentes, nada será um problema se você o encarar como um desafio. Acredito que esses livros de auto-ajuda, sem exceção, se referem ao PPCG, onde qualquer problema será resolvido se for apresentado como um desafio. Sua tarefa é remover a hifenização e as quebras de linha ofensivas de um texto, para que esteja pronto para colar em qualquer editor de texto.
Descrição do Problema
Você escreverá um programa ou função que remove hifenização e quebras de linha, quando aplicável. A entrada será uma string stdin
(ou a alternativa mais próxima) ou como uma entrada de função. A saída ( saídastdout
alternativa ou função mais próxima) será o texto 'corrigido'. Este texto deve ser diretamente copiável e colável. Isso significa que a saída inicial ou final está OK, mas a saída adicional na metade do texto corrigido (por exemplo, espaços iniciais em todas as linhas) não está .
O caso mais básico é o seguinte (nota: sem espaços à direita)
Lorem ipsum dolor sit amet, con-
sectetur adipiscing elit. Morbi
lacinia nisi sed mauris rhoncus.
O hífen e as quebras de linha ofensivas devem ser removidos, para obter
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi lacinia nisi sed mauris rhoncus.
No entanto, algumas exceções devem ser observadas.
- Novas linhas duplas indicam uma quebra de parágrafo e devem ser mantidas.
- Nomes e nomes próprios nunca são divididos em duas linhas, a menos que já contenham um hífen (por exemplo, equações de Navier-Stokes). A quebra de linha deve ser removida, mas o hífen é mantido. Esses casos podem ser identificados com apenas a primeira letra maiúscula.
- Às vezes, um hífen indica um grupo de palavras (por exemplo, século XIX e XX). Quando isso acontece em duas linhas, isso é indicado com um espaço à esquerda na próxima linha.
Um exemplo: (as opiniões expressas neste exemplo são fictícias e não representam necessariamente a visão do autor; os oponentes do método Runge-Kutta-Fehlberg são igualmente bem-vindos a participar desse desafio)
Differential equations can
be solved with the Runge-Kutta-
Fehlberg method.
Developed in the nineteenth-
or twentieth century, this
method is completely FANTAS-
TIC.
se tornará
Differential equations can be solved with the Runge-Kutta-Fehlberg method.
Developed in the nineteenth- or twentieth century, this method is completely FANTASTIC.
As quebras de linha podem ser o ponto de código \n
ou \r\n
ASCII, dependendo da sua preferência, e o hífen é um ASCII simples -
(sinal de menos). O suporte UTF-8 não é necessário. Esse desafio é o código-golfe , então o código mais curto vence.
fonte
GNU Sed, 68
A pontuação inclui +2 para as
-zr
opções passadas parased
.Supõe que o fluxo de entrada não contenha nenhum
:
caractere. Se isso não for aceitável,:
todos os códigos no código poderão ser substituídos por algum outro caractere ASCII não imprimível, por exemplo, 0x7 BEL.fonte
TeaScript , 76 bytes
Método muito "força bruta".
Experimente online
fonte