Como sou muito preguiçosa, tento sempre programar meu microondas com o menor número possível de pressionamentos de botão . Meu microondas possui os seguintes botões:
- Um botão "minuto mais" que só pode ser pressionado primeiro e implica em "iniciar". Pode ser pressionado várias vezes por vários minutos, mas não adicionará um minuto a um tempo inserido manualmente. Resultado
+
- Um conjunto de 0-9 botões. A entrada de tempo é MMSS (ou seja, "130" significa 1 minuto e 30 segundos). Os segundos podem variar de 0 a 99. Portanto, "130" e "90" são entradas equivalentes. Obviamente, cada minuto é de 60 segundos, mesmo que a parte dos segundos da entrada exceda 59. Saída
0
..9
- Um botão "start" que deve ser pressionado para iniciar o microondas se a hora for inserida manualmente. Resultado
S
Meus pacotes de alimentos especificam o tempo em MM: SS e, portanto, o programa deve aceitar essa entrada.
Exemplos
- 1:00 é
+
(lembre-se "minuto mais" implica início) - 1:01
61S
(os segundos podem exceder 59, mas "mais um minuto" não funciona em conjunto com dígitos - acho que essa é uma falha de design no micro-ondas) - 9:00 é
900S
(menor que+++++++++
)
code-challenge
optimization
Ben Jackson
fonte
fonte
400S
ou++++
?++++
vence. :)888S
menor que928S
, mas900S
menor que860S
? vou precisar de geometria precisa dos seus botões e de cada uma das posições deles.Respostas:
APL
A APL tem uma má reputação de ilegível, o que não é totalmente o caso se não for jogado.
As regras:
fonte
Javascript
fonte
Perl
atende aos requisitos,
mas não é como eu digitaria os botões (por exemplo, "860S" vs "900S")lida com exatamente 60 segundos como um caso especialResultado
fonte
rubi
Observações:
ruby program-my-microwave-oven.rb
e um teste de unidade é avaliado.ruby program-my-microwave-oven.rb 10:00
e escreve960S
Algumas observações sobre as regras (e minha interpretação):
10:00
é960S
(9 minutos e 60 segundos -> 10 minutos).10:39
é999S
(9 minutos e 99 segundos -> 10 minutos e 39 segundos).4:00
isso prefere++++
(menos movimentos do dedo)fonte