dzielą przejęcie:
Można zredukować liczbę przejazdów w swojej brutalnej metody życie: powiedzmy preferowany (maksymalna) rozmiar czcionki to 40, a rozmiar czcionki wynosi co najmniej 0
jeśli (40 == false & & 0 == prawda)
- 20 = prawdziwych możliwości // dzielenie na pół każdego odgadnąć
- 30 = fałszywe
- 25 = prawda
- 27 = prawda
- 28 = fałszywe
- więc 27 zwycięstw
W jaki sposób jest to lepiej?
zajęło to 6 domysłów zamiast 13, a nawet jeśli 20, 12 lub 39 były właściwą odpowiedzią, to zawsze zajmie około 6 zgadowań. więc nie tylko jest to mniej domysłów przez większość czasu, ale jest bardziej spójne, co jest ważne dla doświadczenia użytkownika.
Sądzę, że liczba domysłów, jakie można uzyskać, dzieląc liczbę całkowitą o połowę za każdym razem, to pierwiastek kwadratowy z zakresu, którego szukasz w plusie. Math.sqroot (40-0) + 1 (To tylko przypuszczenie, możesz mnie poprawić.) Twój minimalny rozmiar czcionki prawdopodobnie nie wynosi 0, więc zwiększenie tego przyspieszyłoby wyszukiwanie odpowiedzi.
Ilustracja:
To jak gra Guess Who, gracze, którzy pytają „robi swoje nazwisko mieć A” i odcina możliwości w połowie bez względu na to, co odpowiedzieć zwykle znajdzie odpowiedź szybciej niż gracz, który prosi o 1 znak każdy zakręt „to nazwa Sam” „to nazwa Alex”
Alternatywa: zaczynając dobrym przypuszczeniem, a następnie testowanie dokładności Chciałbym również promować pracę w jakiejś logiki używać rezultat dostarczony przez Odpowiedź Darena przy użyciu fontMetrics jako dobry początek, a następnie te st it, jeśli pasuje do testu +2, jeśli nie pasuje do testu -2; jeśli nowy test pasuje do testu pominiętego 1 i będziesz znał swoją odpowiedź, jeśli nie, spróbuj przesunąć kolejne 2 itd., ale idealnie odpowiedź fontMetrics nie jest większa niż 4 daleko ...
Podejrzewam to wytworzy najszybsze średnie wyniki rzeczywistych przypadków użycia.
zakładając, że chcesz int i zakładając, że niedokładności w metryce są minimalne, prawdopodobnie zajmie to tylko 2 lub 3 wartości domyślne.
Zobacz też [to pytanie] (http://stackoverflow.com/q/36575192/1329652). –