É simples: imprima um gráfico ASCII Gantt .
Dado o intervalo das tarefas (horário de início - Tuplas no horário de término), imprima uma linha do tempo de Gantt na forma de -
caracteres para cada duração de tarefa - cada tarefa em uma nova linha.
Exemplo
Digamos que meus intervalos de tarefas sejam 28->35, 34->40, 39->44
, o Gantt ficará assim:
-------
------
-----
Especificações
- Você pode escrever um programa completo, uma função nomeada ou uma função anônima.
- Seu programa / função deve aceitar as tarefas via STDIN ou como argumentos .
- Cada tarefa deve ser representada como uma sequência de
start->end
ondestart
eend
são Inteiros . As tarefas são separadas por espaços ou vírgulas. Como alternativa , você pode obtê-lo como uma tupla de números inteiros ou como uma matriz / coleção de 2 números inteiros. (Por exemplo, em JavaScript, você pode obtê-lo como[start,end]
- isso é permitido). - Qualquer número não negativo de tarefas (argumentos) deve ser suportado.
Para deixar claro, não é permitido um único argumento de coleta de tarefas. Você pode analisar um argumento de cadeia única ou oferecer suporte a zero ou mais argumentos de tarefas. Onde tarefa é uma tupla ou uma coleção de tamanho 2.- Você pode assumir que apenas dados válidos serão fornecidos. Isso significa que cada tarefa tem uma duração positiva.
- O valor de retorno não importa, seu código deve imprimir a linha do tempo em STDOUT.
- Saída: por tarefa,
start
espaços seguidos por(end-start)
traços e a\n
. - Desnecessário dizer que as linhas de saída devem ser ordenadas de acordo com a ordem de entrada (tarefas).
- Os espaços à direita antes do
\n
permitido são permitidos, se isso o ajudar.
Casos de teste
Input:
(empty)
Output:
(empty)
Input:
0->7,5->6,3->6
Output:
-------
-
---
Input:
5->20,5->20,2->10,15->19
Output:
---------------
---------------
--------
----
Ganhando
- Isso é código-golfe, então o menor comprimento de código (em bytes) vence.
- Tradicionalmente, o desempate é um post anterior.
- "As brechas padrão não são mais engraçadas".
-----
EDITAR
Como muitos de vocês entendem que é permitido ter um único argumento de coleção de tarefas, e como não há muito diferente entre isso e o requisito de varargs original , agora é permitido ter um único argumento de coleção, se você não quiser usar a opção varargs ou caso seu idioma não suporte varargs.
arguments
na função, mas não pode presumir que arguments[0]
seja uma matriz de tarefas.
To make it clear...
) não está claro.