Escreva um programa em execução indefinidamente que relate quantas instâncias dele estão em execução no momento. Cada instância do programa também deve relatar a ordem em que foi aberto em todas as outras instâncias em execução no momento.
Exemplo
O usuário inicia o programa pela primeira vez - chamaremos isso de Instância 1. A Instância 1 é exibida 1/1
, porque é a primeira instância a ser lançada de um total de 1 instâncias atualmente em execução.
Enquanto a Instância 1 está em execução, o usuário inicia o programa uma segunda vez para se tornar a Instância 2. A Instância 1 agora é exibida 1/2
, sendo a primeira instância de um total de 2 instâncias atualmente em execução. A instância 2 é exibida 2/2
, porque é a segunda instância de um total de 2 instâncias atualmente em execução.
Digamos que o usuário continue gerando mais instâncias até que existam 5 delas. Em ordem de lançamento, os seus resultados são: 1/5
2/5
3/5
4/5
5/5
.
Agora, digamos que o usuário decida encerrar a Instância 3. A Instância 4 se torna a nova Instância 3 e a Instância 5 a nova Instância 4, porque são respectivamente a terceira e a quarta instâncias a serem lançadas do que agora é um total de 4 instâncias. Portanto, a alteração de saída de cada instância seria a seguinte:
1/5
→1/4
2/5
→2/4
3/5
→ (Terminado)4/5
→3/4
5/5
→4/4
Regras
- Você pode emitir os dois números (número da instância, total de instâncias) em qualquer formato razoável.
- Sempre que uma instância é iniciada ou finalizada, todas as outras instâncias devem atualizar suas respectivas saídas em 100 milissegundos.
- Se você optar por atualizar a saída imprimindo para uma nova linha (ou outro formato de saída "anexado"; em vez de substituir), deverá imprimir somente quando o número de instâncias mudar, e não a qualquer outro momento.
- Isso é código de golfe. O programa mais curto em bytes vence.
- Em sua resposta, você deve especificar o que o usuário deve fazer para abrir mais de uma instância e / ou registrar um screencast para demonstrar.