freeCodeCamp/curriculum/challenges/italian/10-coding-interview-prep/project-euler/problem-460-an-ant-on-the-m...

2.2 KiB

id title challengeType forumTopicId dashedName
5900f5381000cf542c51004b Problema 460: Una formica in movimento 5 302135 problem-460-an-ant-on-the-move

--description--

Sul piano euclideo, una formica viaggia dal punto A(0, 1) al punto B(d, 1) per un numero intero d.

Ad ogni passo, la formica al punto (x_0, y_0) sceglie uno dei punti sul reticolo (x_1, y_1) che soddisfano x_1 ≥ 0 e y_1 ≥ 1 e va dritta a (x_1, y_1) ad una velocità costante v. Il valore di v dipende da y_0 e y_1 come segue:

  • Se y_0 = y_1, il valore di v è uguale a y_0.
  • Se y_0 ≠ y_1, il valore di v è pari a \frac{y_1 - y_0}{\ln y_1 - \ln y_0}.

L'immagine a sinistra è uno dei percorsi possibili per d = 4. Prima la formica va da A(0, 1) a P_1(1, 3) a una velocità \frac{3 - 1}{\ln 3 - \ln 1} ≈ 1.8205. Quindi il tempo richiesto è \frac{\sqrt{5}}{1.820} ≈ 1.2283.

Da P_1(1, 3) a P_2(3, 3) la formica viaggia a velocità 3 quindi il tempo richiesto è \frac{2}{3} ≈ 0.6667. Da P_2(3, 3) a B(4, 1) la formica viaggia a velocità \frac{1 - 3}{\ln 1 - \ln 3} ≈ 1.8205 quindi il tempo richiesto è \frac{\sqrt{5}}{1.8205} ≈ 1.2283.

Così il tempo totale richiesto è 1.2283 + 0.6667 + 1.2283 = 3.1233.

L'immagine a destra è un altro percorso. Il tempo totale richiesto è calcolato come 0.98026 + 1 + 0.98026 = 2.96052. Può essere dimostrato che questo è il percorso più veloce per d = 4.

due possibili percorsi per d = 4

Sia F(d) il tempo totale richiesto se la formica sceglie il percorso più veloce. Ad esempio, F(4) ≈ 2.960\\,516\\,287. Siamo in grado di verificare che F(10) ≈ 4.668\\,187\\,834 e F(100) ≈ 9.217\\,221\\,972.

Trova F(10\\,000). Dai la risposta arrotondata a nove cifre decimali.

--hints--

antOnTheMove() dovrebbe restituire 18.420738199.

assert.strictEqual(antOnTheMove(), 18.420738199);

--seed--

--seed-contents--

function antOnTheMove() {

  return true;
}

antOnTheMove();

--solutions--

// solution required