Dlaczego Minecraft mówi „Too Expensive!" — i kolejność łączenia na kowadle, która tego unika
Kara za wcześniejszą pracę podwaja się przy każdym użyciu kowadła. Oto zasada, która za tym stoi, i jak zaplanować łączenie, aby pełny zestaw zaklęć nigdy nie trafił w limit 40 poziomów.
Każde łączenie na kowadle zapisuje na przedmiocie ukryty licznik zwany karą za wcześniejszą pracę (prior work penalty). Zaczyna się od 0, po pierwszym połączeniu wynosi 1, potem 3, 7, 15, 31 — za każdym razem podwaja się i dodaje jeden. Ta kara jest doliczana do kosztu poziomów w całości, dlatego miecz, który w poniedziałek kosztował 5 poziomów, w piątek kosztuje 35.
Vanilla Java odrzuca każde łączenie wycenione powyżej 39 poziomów komunikatem Too Expensive!. Celem nigdy nie jest więc „zrobić każdy krok tanim" — chodzi o utrzymanie płytkiego drzewa.
Zasada, która naprawdę ma znaczenie
Połączenie dwóch przedmiotów dolicza obie ich kary jako poziomy, a wynik przyjmuje większą z tych dwóch, podwojoną plus jeden. Dwie świeże książki (kara 0) scalone w jedną książkę dają książkę z karą 1. Scal ją ze świeżym mieczem, a zapłacisz tę 1 ponad zaklęcia, a miecz wyjdzie z karą 3.
Najtańsza droga to więc zrównoważone drzewo binarne, a nie łańcuch:
bad sword + book1 + book2 + book3 + book4 (penalty 1, 3, 7, 15 …)
good (book1+book2) + (book3+book4) -> sword (penalty stays low on both sides)
Praktyczna kolejność dla narzędzia z pełnym zestawem zaklęć
- Połącz książki w pary, zanim w ogóle dotkną narzędzia.
- Scal pary w dwie „superksiążki".
- Scal te dwie w jedną.
- Nałóż tę jedną książkę na świeże narzędzie, które nigdy nie było na kowadle.
To te same cztery połączenia co w łańcuchu, ale kary pozostają niskie po obu stronach, a samo narzędzie zostaje obciążone karą tylko raz.
Gdzie kolejność nadal daje o sobie znać
- Naprawa też kosztuje jedno połączenie. Naprawa na narzędziu wcześnie sprawia, że każda naprawa jest darmowa, ale naprawy przed założeniem Naprawy za każdym razem podnoszą karę.
- Zmiana nazwy kosztuje jeden poziom. Sama zmiana nazwy nie podnosi kary i nigdy nie jest
Too Expensive!(jest ograniczona do 39), więc zmień nazwę w osobnym kroku, a nie podczas drogiego łączenia. - Bedrock różni się. Bedrock inaczej ogranicza wyświetlany koszt do
Too Expensive!i pozwala na niektóre połączenia, których Java odmawia; powyższa arytmetyka dotyczy Java Edition.
Zamiast liczyć to na papierze, wprowadź przedmiot i zaklęcia do Kalkulatora zaklęć — przeszuka kolejności łączenia i zwróci najtańszą, z dokładnym kosztem poziomów na każdym kroku.