Introdução
Você usa o Twitter (vamos fingir, se não), onde você está limitado a 140 caracteres por tweet individual que deseja compartilhar com o mundo. Se você quiser twittar para seus seguidores no endereço Gettysburg de Abraham Lincoln , precisará dividir o texto em vários blocos de 140 caracteres, a fim de divulgar toda a mensagem. No entanto, esses blocos nem sempre devem ter exatamente 140 caracteres. Digamos, por exemplo, dividimos o discurso em partes de 17 caracteres, e acabamos com estes tweets:
- QUATRO PONTUAÇÃO E SE
- DEZ ANOS ATRÁS DE NOSSA
- PAIS COMPRADOS
- QUARTA NESTE CON
- TINENTE UM NOVO NATI
- EM CONCEITO EM L
- (e assim por diante)
Isso não é bom! Quando palavras individuais são divididas, pode ser difícil entender o que você está tentando dizer. Além disso, no verso do twitter, um de seus seguidores pode se deparar com um tweet específico e não perceber que há mais na mensagem; portanto, você deseja numerar seus tweets para que eles tenham algum contexto para trabalhar (ainda usando trechos de 17 caracteres) ):
- (1/7) QUATRO PONTOS E
- (2/7) SETE ANOS ATRÁS
- (3/7) NOSSOS PAIS
- (4/7) COMPRADO EM TRÊS
- (5/7) ESTE CONTINENTE A
- (6/7) NOVA NAÇÃO
- (7/7) CONCEBIDO EM ...
Você pode descobrir manualmente a melhor configuração para seus tweets manualmente, mas é para isso que temos computadores!
Desafio
No código mais curto possível, analise o endereço de Gettysburg (ou qualquer texto, mas vamos ficar com este aqui como exemplo) em um conjunto de tweets que consiste em não mais que 140 caracteres (assuma ASCII, pois nosso texto de exemplo não deve ter quaisquer bits incomuns / incomuns nele).
Detalhes
- Sua função / programa / etc deve receber um argumento de cadeia única e gerar uma linha de texto para cada tweet.
- Suponha que essa entrada nunca resultará em mais de 99 tweets totais quando analisados, independentemente de como você escolher analisar (desde que essa escolha ainda se ajuste aos outros pontos do desafio).
- Tweets precisa incluir um
tweet number
detotal tweets
indicador no formato "(x/y)
" precedendo o corpo do tweet.- Essa contagem ocupará parte do seu espaço de 140 caracteres!
- Os pedaços de Tweet podem ser divididos apenas em novas linhas ou espaços.
- Não é permitido hífen, ponto, vírgula ou outra pontuação, a menos que seja imediatamente precedido ou seguido por um espaço ou nova linha.
- Os tweets devem consistir em tantas palavras completas quanto possível.
- Essa restrição é um pouco flexível, por exemplo, quando seu tweet final tem apenas uma palavra
- Isso é código de golfe, então o código mais curto vence.
Texto completo do endereço de Gettysburg
(Seu código ainda deve poder manipular qualquer sequência ASCII passada para ele.)
QUATRO PONTOS E SETE ANOS ATRAVÉS DE NOSSOS PAIS APRESENTARAM SOBRE ESTE CONTINENTE UMA NOVA NAÇÃO CONCEBIDA NA LIBERDADE E DEDICADA À PROPOSTA DE QUE TODOS OS HOMENS SÃO CRIADOS IGUAIS. Agora, estamos envolvidos em uma grande guerra civil, testando se essa nação ou qualquer nação tão conceituada e tão depreciada pode durar muito. ESTAMOS ENCONTRADOS EM UM GRANDE CAMPO DE BATALHA DA GUERRA. VIMOS DEDICAR UMA PARTE DESSE DOMÍNIO COMO UM LUGAR FINAL PARA OS QUE AQUI DARAM SUA VIDA QUE A NAÇÃO PODE VIVER. É TAMBÉM ADEQUADO E ADEQUADO QUE DEVEMOS FAZER ISSO. MAS EM UM SENTIDO MAIOR, NÃO PODEMOS DEDICAR, NÃO PODEMOS CONSAGRAR, NÃO PODEMOS ESCONDER, ESTE TERRENO. OS CORAJOS VIVOS E MORTOS QUE LUTARAM AQUI CONSAGRARAM MUITO ATÉ O NOSSO POBRE PODER DE ADICIONAR OU DETRAR. O MUNDO INDICARÁ POUCO NEM LEMBRARÁ O QUE DIZEMOS AQUI, MAS NUNCA PODE ESQUECER O QUE ELES FIZERAM AQUI. É PARA NÓS O PAI VIVO A SER DEDICADO AQUI AO TRABALHO INACABADO QUE OS QUE AQUI PEGARAM AQUI ATÉ AGORA TÃO AVANÇAMAMENTE. É UM POUCO QUE ESTAMOS DEDICADOS AQUI PARA A GRANDE TAREFA RESTANTE ANTES DE NÓS, QUE DESTES MORTOS HOMENAGEADOS, DÁ UMA DEVOÇÃO AUMENTADA À CAUSA POR QUE TÊM A ÚLTIMA MEDIDA DE DEVOÇÃO, QUE AQUI RESOLVEREM ALTAMENTE QUE ESTES MORTOS MORREM EM VAIN, QUE ESTA NAÇÃO DE DEUS TERÁ UM NOVO NASCIMENTO DE LIBERDADE, E QUE O GOVERNO DO POVO PELO POVO PELO POVO NÃO PERECERÁ DA TERRA.