Wpis z mikrobloga

Jest taka strona projecteuler.net i tam są takie matematyczno-programistyczne zadania, pomyślałem, że kogoś może to zainteresować i raz na jakiś czas wrzucę tutaj jakieś zadanie i moje przykładowe rozwiązanie (w javie 8, często z użyciem streamów) z wytłumaczeniem, może kogoś zachęci to do zrobienia kilku zadań, albo chociaż ktoś się czegoś nauczy.

Zacznę już teraz od pierwszego zadania, można go znaleźć tutaj: https://projecteuler.net/problem=1
W skrócie chodzi o to, żeby znaleźć sumę wielokrotności 3 i 5 mniejszych od 1000

Oczywiście można kombinować z sumami ciągów (n x (n+1)/2) i wyjdzie, ale można też to zrobić jedną linijką w javie:

IntStream.range(1, 1000).filter(i -> i % 3 == 0 || i % 5 == 0).sum();
Czarów tu nie ma, stream liczb od 1 do 999 (1000 już nie) filtrowany, żeby spełniał warunek: podzielny przez 3 lub podzielny przez 5 (jeśli liczba jest wielokrotnością 3 lub 5 to spełni ten warunek) i na koniec sumowany.

#programowanie #java
#tubylcowyeuler pod takim tagiem będę to pisał, jeśli tylko kogoś to będzie interesować
  • 15
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@ldefix: nie musisz używać tylu klamr, a nawet można trochę skrócić, wystarczy:

int suma = 0; for (int i = 1; i < 1000; i++) suma += i % 3 == 0 || i % 5 == 0 ? i : 0;
( ͡° ͜ʖ ͡°)
  • Odpowiedz
@LowcaG: to zależy co dla kogo znaczy "słuszne" :) niektóre zadania, takie jak to, można rozwiązać czysto matematycznie, do niektórych trzeba użyć komputera, ja jestem nastawiony bardziej na programowanie, więc staram się zwykle napisać jakiś algorytm, a często algorytm i tak dość mocno bazuje na matematycznych rozkminach
  • Odpowiedz
to zależy co dla kogo znaczy "słuszne" :) niektóre zadania, takie jak to, można rozwiązać czysto matematycznie, do niektórych trzeba użyć komputera, ja jestem nastawiony bardziej na programowanie


@BazaltowyTubylec: dlatego też napisałem "słuszne" ( ͡° ͜ʖ ͡°).

Jak dla mnie mogli po prostu dać N (i dać warunki graniczne, np. int, albo coś)
  • Odpowiedz
sumę wielokrotności 3 i 5


@BazaltowyTubylec: to co podałeś, czyli "i -> i % 3 == 0 && i % 5 == 0" to suma wielokrotności 3 lub 5 ;)

Streamy to piękna sprawa, teraz nie wyobrażam sobie pracy bez nich.
  • Odpowiedz
@BazaltowyTubylec: hej, jestem początkujący, wrzuciłem to w javę co napisałeś i wyskoczył mi taki komunikat: Exception in thread "main" java.lang.Error: Unresolved compilation problem: Int cannot be resolved at se.main(se.java:5)

co robię nie tak?
  • Odpowiedz