Problema
Um dia, seu chefe vai até você e diz que precisa saber a hora. Ele ainda insiste depois que você aponta o relógio diretamente acima da cabeça e confessa que tem um caso grave de discalculia , o que faz com que ele nem consiga ver os números no relógio. Enquanto você ainda fica imaginando como alguém incapaz de ver números pode administrar uma empresa, ele diz para você "fazer algo a respeito", seja o que for.
Sua tarefa agora é criar um programa ou função que, dado um tempo de entrada com horas e minutos (os segundos são opcionais) (as horas são baseadas em 24), emita uma frase legível em inglês, que não contém números.
Não é necessário calcular os segundos.
Por exemplo, 08:45:15
deve gerarquarter to nine o'clock AM
Casos de teste
00:00:00 > twelve night
12:00:00 > twelve noon
06:00:00 > six o'clock AM
18:00:00 > six o'clock PM
06:15:00 > quarter past six o'clock AM
18:45:00 > quarter to seven o'clock PM
11:30:00 > half past eleven o'clock AM
13:22:00 > twentytwo minutes past one o'clock PM
17:43:00 > seventeen minutes to six o'clock PM
00:09:00 > nine minutes past twelve o'clock AM
Regras
Os números de saída podem ser na forma de quarenta e dois ou quarenta e dois, o que você preferir. As brechas padrão não são permitidas. Novas linhas à direita são permitidas, mas a frase deve estar em 1 linha.
A entrada pode estar em qualquer formato que você quer, por exemplo HH:MM:SS
, HH,MM,SS
, HHMMSS
, HH/MM/SS
, ou qualquer variante sem segundos, mas você deve fazer o formato de entrada claro em sua resposta. Não é necessário produzir em one minute
vez deone minutes
por minutos que variam de 0 a 30 (0 e 30 incluídos) você deve usar past
e para os outros você deve usarto
Como o tempo é relativo, o menor código em bytes vence.
fonte
forty-five
quando os casos de teste afirmam claramentequarter to
como o formato de entrada apropriado? (apenas altere para quarenta e dois;)) Além disso, a complexidade kolmogorov não é uma tag apropriada.one
paratwenty-nine
, comquarter
a substituiçãofifteen
ehalf
que representathirty
, mas isso não é clara. Além disso, para perguntas futuras, recomendo vivamente a Sandbox para resolver os problemas antes de postar.Respostas:
Javascript,
384381 bytesMostrar snippet de código
fonte
LaTeX, 466 bytes
Basta chamar a macro
\f
como\f[hour]{minutes}
, aqui estão alguns testes:fonte
\documentclass[a4paper,12pt]{article}
Python 2, 498 bytes
A entrada vem como argumento de função. Primeira hora e depois minuto, ambos como número inteiro. O resultado é impresso na tela.
Experimente online! (com casos de teste levemente estendidos)
Esse foi um golfe bastante divertido. Embora todos os ternários aninhados me deixassem um pouco louca ^^,
eu estava pensando em fazer isso em Pyth depois disso, mas não acho que sou capaz de fazer isso no momento (ou nunca).
Ungolfed:
fonte
[x>12]
deve ser[x>=12]
, 00:01 é PM, não souPerl 5,
367 361385 bytesGarbled
Casos formatados e de teste:
fonte
one minutes to one o' clock night
como saída para 00:01, em vez deone minutes past twelve o'clock AM
ouone minutes past twelve night
C, 478 bytes
Casos de teste
Experimente aqui .
fonte
00 00
dá a saída correta, enquanto00:00
dáone minutes past twelve o'clock AM
, embora eu tenha certeza que tem algo a ver com a maneira como você analisa a entrada.scanf
provavelmente não analisa '00: 00' , como se poderia esperar :)Lote,
779774752749 bytesAltere a segunda linha para
set t=%1%time%
padrão para dizer a hora atual, se nenhuma hora for fornecida.Editar: salvou 22 bytes otimizando minhas
set/a
declarações. Guardado 3 bytes graças a @ EʀɪᴋᴛʜᴇGᴏʟғᴇʀ.Quando escrevi minha versão original, cometi o erro de dizer a hora como realmente diria, ou seja, apenas horas exatas e meia-noite e meio-dia, em vez de doze e doze horas:
fonte
midnight
e emmidday
vez detwelve night
etwelve noon
. Eu realmente gosto de como você usa extensões e nomes falsos no seu loop for btw.