Counterstring jest pewnego rodzaju danych testowych własny opisując, który jest używany w testowaniu oprogramowania. Nie jestem pewien, czy rzeczywiście został wymyślony przez Jamesa Bacha , ale wiem to od tego momentu.
Pomysł jest następujący: dane testowe zawierają wiele gwiazdek ( *
). Liczba przed gwiazdką informuje, jak długo trwają dane testowe. Jeśli chcesz poznać pozycję w danych testowych, która nie jest gwiazdką, znajdź ostatnią gwiazdkę, spójrz na poprzednią liczbę i dodaj liczbę kolejnych cyfr.
Sekwencja zaczyna się w następujący sposób:
2*4*6*8*11*14*17*20*23*
^
Jak widać, zaznaczona gwiazdka znajduje się w pozycji 14.
Jeśli plik zostanie obcięty w następujący sposób
[...]2045*20
wtedy możesz wywnioskować, że istnieje gdzieś limit 2047 znaków (2045, gdzie gwiazdka plus 2 dla 2
i 0
).
Twoim zadaniem jest stworzyć najkrótszy (to jest kod-golf ) program, który wypisuje (std :: out lub plik lub cokolwiek) dowolny długi ciąg testowy tego formatu. Długość znaków jest podana jako argument. Program obsługuje do 2 GB danych testowych (wartość wejściowa 2147483647 znaków).
„Niebezpieczne” pozycje w pliku 2 GB:
8*11*
98*102*
998*1003*
9998*10004*
99998*100005*
999995*1000003*
9999995*10000004*
99999995*100000005*
999999995*1000000006*
To powinno odpowiedzieć na pytanie @Leaky Nun , jeśli istnieje decyzja o podjęciu decyzji między 995 * 999 * a 995 * 1000 * lub podobnym: nie.
Koniec pliku 2 GB z wartością wejściową 2147483647 to:
2147483640*2147483
995*999*
i 995*1000*
czy coś takiego?