Introdução
Você não odeia quando alguém envia um álbum que você gosta para o YouTube, mas a descrição contém apenas uma lista de faixas ? Como isso:
1. Everything in Its Right Place - 4:11
2. Kid A - 4:44
3. The National Anthem - 5:50
4. How to Disappear Completely - 5:55
5. Treefingers - 3:42
6. Optimistic - 5:16
7. In Limbo - 3:31
8. Idioteque - 5:09
9. Morning Bell - 4:29
10. Motion Picture Soundtrack - 6:59
Agora você não sabe quando o Morning Bell começa, a menos que você resuma várias vezes na sua cabeça! Geralmente, uma boa alma aparece e deixa um calendário útil na seção (temida) de comentários, que se parece com isso:
(0:00:00) Everything in Its Right Place
(0:04:11) Kid A
(0:08:55) The National Anthem
(0:14:45) How to Disappear Completely
(0:20:40) Treefingers
(0:24:22) Optimistic
(0:29:38) In Limbo
(0:33:09) Idioteque
(0:38:18) Morning Bell
(0:42:47) Motion Picture Soundtrack
Especificação
Sua tarefa é escrever um programa ou função que use uma lista de faixas como entrada e um horário como saída.
- Você pode optar por ler a entrada de STDIN ou uma sequência de argumentos ou uma lista de linhas de argumentos. Da mesma forma, você pode optar por imprimir a saída em STDOUT, retornar uma sequência ou retornar uma lista de linhas. Caso contrário, faça o que fizer sentido para o seu idioma.
Você pode assumir que cada linha de entrada tem o formato
(\d+)\. [A-Za-z0-9 ]{1,100} - (\d+):(\d\d)
. Para os que sofrem de regex, isso significa essencialmente que você pode assumir que cada linha está bem formatada (como acima) e os títulos das músicas consistem apenas em caracteres e espaços alfanuméricos ASCII e não têm mais de 100 bytes de comprimento.- O comprimento de uma faixa é sempre pelo menos
0:01
e não mais que59:59
. - Os números das faixas estão aumentando a ordem, começando
1
e contando até não mais do que99
. - A duração total de um álbum não é maior que
9:59:59
.
Isso é código-golfe , então o código mais curto (em bytes) vence.
Caso de teste
Seu programa deve executar corretamente a conversão apresentada na introdução ( Kid A do Radiohead ). Aqui está um caso de teste maior ( Illinois 1 de Sufjan Stevens ) com sequências longas que seu programa também deve trabalhar:
1. Concerning the UFO Sighting Near Highland Illinois - 2:08
2. The Black Hawk War - 2:14
3. Come On Feel the Illinoise - 6:45
4. John Wayne Gacy Jr - 3:19
5. Jacksonville - 5:24
6. A Short Reprise for Mary Todd Who Went Insane but for Very Good Reasons - 0:47
7. Decatur or Round of Applause for Your Stepmother - 3:03
8. One Last Whoo Hoo for the Pullman - 0:06
9. Chicago - 6:04
10. Casimir Pulaski Day - 5:53
11. To the Workers of the Rock River Valley Region - 1:40
12. The Man of Metropolis Steals Our Hearts - 6:17
13. Prairie Fire That Wanders About - 2:11
14. A Conjunction of Drones Simulating the Way - 0:19
15. The Predatory Wasp of the Palisades Is Out to Get Us - 5:23
16. They Are Night Zombies They Are Neighbors They Have Come Back from the Dead Ahhhh - 5:09
17. Lets Hear That String Part Again Because I Dont Think They Heard It All the Way Out in Bushnell - 0:40
18. In This Temple as in the Hearts of Man for Whom He Saved the Earth - 0:35
19. The Seers Tower - 3:53
20. The Tallest Man the Broadest Shoulders - 7:02
21. Riffs and Variations on a Single Note - 0:46
22. Out of Egypt into the Great Laugh of Mankind and I Shake the Dirt from My Sandals as I Run - 4:21
A saída correta é:
(0:00:00) Concerning the UFO Sighting Near Highland Illinois
(0:02:08) The Black Hawk War
(0:04:22) Come On Feel the Illinoise
(0:11:07) John Wayne Gacy Jr
(0:14:26) Jacksonville
(0:19:50) A Short Reprise for Mary Todd Who Went Insane but for Very Good Reasons
(0:20:37) Decatur or Round of Applause for Your Stepmother
(0:23:40) One Last Whoo Hoo for the Pullman
(0:23:46) Chicago
(0:29:50) Casimir Pulaski Day
(0:35:43) To the Workers of the Rock River Valley Region
(0:37:23) The Man of Metropolis Steals Our Hearts
(0:43:40) Prairie Fire That Wanders About
(0:45:51) A Conjunction of Drones Simulating the Way
(0:46:10) The Predatory Wasp of the Palisades Is Out to Get Us
(0:51:33) They Are Night Zombies They Are Neighbors They Have Come Back from the Dead Ahhhh
(0:56:42) Lets Hear That String Part Again Because I Dont Think They Heard It All the Way Out in Bushnell
(0:57:22) In This Temple as in the Hearts of Man for Whom He Saved the Earth
(0:57:57) The Seers Tower
(1:01:50) The Tallest Man the Broadest Shoulders
(1:08:52) Riffs and Variations on a Single Note
(1:09:38) Out of Egypt into the Great Laugh of Mankind and I Shake the Dirt from My Sandals as I Run
Entre os melhores
Para que sua pontuação apareça no quadro, ela deve estar neste formato:
# Language, Bytes
1. Desculpas a Sufjan, cujos incríveis nomes de faixas eu tive que alterar um pouco para torná-los adequados ao formato simples ao qual esse problema está limitado.
(h:mm:ss) Track Name
seguido imediatamente por uma nova linha.Respostas:
CJam,
605755 bytesAgradecimentos ao Sp3000 por salvar 2 bytes.
Teste aqui.
Explicação
fonte
Perl, (93 caracteres mais
-p
) 94 bytesPara correr:
fonte
C ++,
212209202189 bytesC ++ porque .. por que não?
Viver:
212209202189fonte
Python 2,
170160 bytesJá faz um tempo desde que eu pratiquei golfe, espero que isso não seja tão ruim: P
A entrada deve estar entre aspas e dividida por novas linhas, da seguinte forma:
fonte
%d
o contador de horas (se eu entender as regras corretamente!) Por-2
!input
araw_input
) para aceitar o formato exato; caso contrário, acredito que é inválido, pois assume linhas em um formato diferente.Gema, 151 caracteres
Exemplo de execução:
fonte
Python 2,
207206 bytesUso
fonte
raw_input
só existia em Python 2.awk,
119101 bytesIsso é muito mais longo do que eu queria que fosse. O problema é que%H
não formata as horas como solicitado, então eu mesmo precisava calcular as horas.Sou estúpido. Os resultados de
strftime
estavam errados porque eu precisava dizer para usar o horário UTC. Isso cortou 18 bytes!Versão de 119 bytes
fonte