Napisz nieskończenie działający program, który informuje, ile instancji jest aktualnie uruchomionych. Każde wystąpienie programu powinno również zgłaszać kolejność otwierania go ze wszystkich innych aktualnie uruchomionych wystąpień.
Przykład
Użytkownik uruchamia program po raz pierwszy - wywołamy to wystąpienie 1. Wyświetla się wystąpienie 1 1/1
, ponieważ jest to pierwsze wystąpienie z łącznie 1 aktualnie działających wystąpień.
Gdy instancja 1 jest uruchomiona, użytkownik uruchamia program po raz drugi, aby stać się instancją 2. Instancja 1 jest teraz wyświetlana 1/2
, będąc pierwszą instancją spośród 2 aktualnie uruchomionych instancji. Zostanie wyświetlona instancja 2 2/2
, ponieważ jest to druga instancja spośród 2 aktualnie uruchomionych instancji.
Załóżmy, że użytkownik kontynuuje tworzenie kolejnych instancji, dopóki nie będzie ich 5 . W celu wprowadzenia na rynek, ich wyjścia są: 1/5
2/5
3/5
4/5
5/5
.
Powiedzmy, że użytkownik decyduje się na zakończenie wystąpienia 3. Wystąpienie 4 staje się wówczas nowym wystąpieniem 3, a wystąpienie 5 nowym wystąpieniem 4, ponieważ są one odpowiednio trzecim i czwartym wystąpieniem, które zostało uruchomione z łącznej liczby 4 instancje. Zatem zmiana danych wyjściowych każdej instancji wyglądałaby następująco:
1/5
→1/4
2/5
→2/4
3/5
→ (zakończone)4/5
→3/4
5/5
→4/4
Zasady
- Możesz wyprowadzić dwie liczby (liczbę instancji, całkowitą liczbę instancji) w dowolnym rozsądnym formacie.
- Za każdym razem, gdy instancja zostanie uruchomiona lub zakończona, wszystkie pozostałe instancje muszą zaktualizować swoje dane wyjściowe w ciągu 100 milisekund.
- Jeśli zdecydujesz się zaktualizować dane wyjściowe, drukując w nowym wierszu (lub w innym „dołączającym” formacie wyjściowym; w przeciwieństwie do zastępowania), musisz drukować tylko wtedy, gdy zmienia się liczba wystąpień, a nie w żadnym innym momencie.
- To jest kod golfowy. Najkrótszy program w bajtach wygrywa.
- W swojej odpowiedzi zachęcamy do określenia, co użytkownik musi zrobić, aby otworzyć więcej niż jedną instancję i / lub nagrać screencast, aby zademonstrować.