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
Odpowiedzi:
Galaretka , 14 bajtów
Łącze monadyczne przyjmujące i zwracające nieujemne liczby całkowite.
Wypróbuj online! (pierwsze 15 wartości tutaj - nieefektywne)
W jaki sposób?
Znajduje wszystkie linijki, które można wykonać, używając znaczników od 1 do n + 1 (zbiór mocy [1, n + 1]) uporządkowanych według ich liczby znaczników, i zachowuje tylko te, które tworzą maksymalne mierzalne odległości (długość zestaw różnic między wszystkimi uporządkowanymi parami znaków), a następnie zwraca długość pierwszego (tj. [jednego z] najkrótszego [s]).
źródło
Wolfram Language (Mathematica) , 65 bajtów
Wypróbuj online!
źródło
Mathematica, 84 bajty
Wypróbuj online!
źródło
Pyth , 14 bajtów
Wypróbuj tutaj!
Pyth ,
2119 bajtówWypróbuj tutaj!
Jak to działa
Zaktualizuję to po grze w golfa.
Dzięki isaacg za uratowanie bajtu dla mojego drugiego podejścia i zainspirowanie mnie do gry w golfa 3 bajty poza moim obecnym podejściem!
źródło
S
jest potrzebny.Python 2 ,
129128126 bajtówdzięki totalnie ludzkiemu za -1 bajt
Wypróbuj online!
wyjście odbywa się za pomocą kodu wyjścia
źródło
Łuska ,
2018 bajtówDzięki @ H.PWiz za -2 bajty!
Wypróbuj online!
Wyjaśnienie
źródło
oa-
jest taki sam jak≠
≈
.Galaretka , 17 bajtów
Wypróbuj online!
Oszczędność 1 bajtu dzięki Jonathanowi Allanowi !
źródło
ḢL
powinno być OK.Pyth, 15 bajtów
Zestaw testowy
Jak to działa
źródło
Galaretka , 17 bajtów
Wypróbuj online!
Pożyczyłem sztuczki od pana Xcoder za odpowiedź na -1.
-1 dzięki Jonathan Allan .
źródło
ḢL
powinno być OK.Rubinowy , 98 bajtów
Wypróbuj online!
źródło