Siódma jedenaście: rozwiązanie, część pierwsza

Zagadkę o liczbie 711 podrzucił mi Rozie – i u niego należy szukać rozwiązania. O ile mi wiadomo planowanych jest kilka wpisów, pierwszy tutaj:

Rozwiązaniem zagadki – przy założeniu, że szukamy “idealnego” wyniku (tj. bez zaokrągleń) – są kwoty 1.20, 1.25, 1.50 i 3.15.

Do zagadki podeszło dwóch Czytelników: Waldek po prostu podał rozwiązanie bez ujawniania drogi do niego, natomiast Canthar poza wynikiem pokazał również kod w Pythonie, którego użył do wyszukania powyższej czwórki. Kod jest wcale niegłupi, opiera się na rozkładzie liczby 711 na czynniki pierwsze. (Myślę, że Rozie będzie miał tu więcej do powiedzenia / napisania w ramach swojej serii o optymalizacji). A oto kod Canthara (czas wykonania: poniżej 1s):

import itertools
number = 711
divisors = list()
for i in range(1, number + 1):
  if number * 1000000 % i == 0:
    divisors.append(i)

for i in itertools.combinations_with_replacement(divisors, 4):
  if sum(i) == number and i[0] * i[1] * i[2] * i[3] == number * 1000000:
    print(i)

Rozwiązań “nieidealnych” według Waldka jest trochę ponad 1300 jeżeli przyjmiemy, że kalkulator zaokrągla wynik mnożenia do najbliższej całości, oraz sporo więcej jeżeli po prostu obcina ostatnią cyfrę (zamiast zaokrąglać).

Można jeszcze założyć, że kalkulator ma uszkodzone niektóre segmenty, wtedy robi się jeszcze ciekawiej, ale w ten sposób zaraz dojdziemy do wpływu neutrin na wynik mnożenia 😉

Tak czy siak, zainteresowanych dalszymi rozważaniami zapraszam na blog zakr.es.

Liczba słów w tym wpisie: 252

Sprawdź też

Zagadka z prześcieradłem

Dziś zagadka na poziomie szkoły podstawowej. Jeżeli założymy, że Ziemia jest idealną kulą o promieniu …

Podwajanie z sortowaniem

Mnożenie z haczykiem.

Zapisz się
Powiadom o
guest
2 komentarzy
Inline Feedbacks
Zobacz wszystkie komentarze
2
0
Zapraszam do skomentowania wpisu.x
()
x