Wpis z mikrobloga

W kiblu mi takie zadanko do głowy przyszło ( ͡° ͜ʖ ͡°), obstawiam,(może się mylę), że więcej niż połowa zrobi je źle.

Mamy jakąś liczbę typu double nazwijmy ją X,
Mamy arraylistę Doubli,

jak elegancko i prawidłowo, rozbić liczbę X, proporcjonalnie do zawartości arraylisty, aby na wyjściu
dostać drugą arralistę Doubli której suma elementów równa się X.

Mam nadzieję, że w miarę jasne o co chodzi ( ͡° ͜ʖ ͡°).

#naukaprogramowania (najlepiej ) #java (albo coś równie czytelnego, a nie brainfucki itp.

Ps.
W spoileraj poproszę kod aby innych nie sugerować :)
  • 41
na razie to samo co poprzednicy . Nie pyknie


@LowcaG: spełnia wyżej zdefiniowane wymaga, jeśli uważasz inaczej - repo jest publiczne, możesz śmiało dopisać testy, które pokażą że się sypie, albo nie bluźnij ( ͡° ͜ʖ ͡°)

@ppawel: @FNwsk: jak już Paweł napisal. Raczej z definicji nie chcemy aby program dzielił przez zero to raz(trzeba to specyfikowac? ;) ) Dwa wyspecyfikowane było że suma ma być równa. A można spokojnie wygenerować dane gdzie nie będzie. Ale jeszcze są inne problemy ;)
@LowcaG:
package lp.wypok;

public class RozbijatorWagowy {
public double[] rozbij(double wartosc, double... wagi) {
double sumaWag = 0;
for (double waga : wagi) {
sumaWag += waga;
}

for (int i = 0; i < wagi.length; ++i) {
wagi[i] *= wartosc / sumaWag;
}

return wagi;
}
}