Standardowa linijka o długości n ma znaczniki odległości w pozycjach 0, 1, ..., n (w dowolnych jednostkach). Rzadki władca ma podzbiór tych znaków. Linijka może zmierzyć odległość k, jeśli ma znaczniki w pozycjach p i q za pomocą p - q = k .
Wyzwanie
Biorąc pod uwagę dodatnią liczbę całkowitą n , wypisz minimalną liczbę znaków wymaganych w rzadkiej linijce o długości n, aby mogła zmierzyć wszystkie odległości 1, 2, ..., n .
To jest OEIS A046693 .
Na przykład dla wejścia 6 wyjście wynosi 4. Mianowicie, linijka ze znakami na 0, 1, 4, 6 działa, jako 1-0 = 1, 6-4 = 2, 4-1 = 3, 4-0 = 4, 6-1 = 5 i 6-0 = 6.
Dodatkowe zasady
- Algorytm powinien być prawidłowy dla dowolnego dużego n . Jest jednak dopuszczalne, jeśli program jest ograniczony ograniczeniami pamięci, czasu lub typu danych.
- Dane wejściowe / wyjściowe można przyjmować / wytwarzać dowolnymi rozsądnymi środkami .
- Programy lub funkcje są dozwolone w dowolnym języku programowania . Standardowe luki są zabronione.
- Najkrótszy kod w bajtach wygrywa.
Przypadki testowe
1 -> 2
2 -> 3
3 -> 3
4 -> 4
5 -> 4
6 -> 4
7 -> 5
8 -> 5
9 -> 5
10 -> 6
11 -> 6
12 -> 6
13 -> 6
14 -> 7
15 -> 7
16 -> 7
17 -> 7
18 -> 8
19 -> 8
20 -> 8
21 -> 8
22 -> 8
23 -> 8
24 -> 9
25 -> 9
26 -> 9
27 -> 9
28 -> 9
29 -> 9
30 -> 10
31 -> 10
32 -> 10