• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Cyfry parzyste Javascript

VPS Starter Arubacloud
0 głosów
1,917 wizyt
pytanie zadane 9 października 2018 w JavaScript przez masterfiletable2 Nowicjusz (150 p.)
edycja 9 października 2018 przez masterfiletable2

Witam, ugrzęzłem w temacie wyświetlenia cyfr parzystych. O ile liczby z modulo nie jest problemem wyświetlić, o tyle nie mogę zrozumieć jak uzyskać liczby, w których cyfry są parzyste.

Przykład poniżej odnośnie parzystości samych liczb.

function modulo(x,y)
{

   for(let i=0; y>=x; x++){  
  if(x % 2 == 0){
    
    console.log(x);
  }
 
}
 
}
 
 modulo(20,70);

Dziękuję za pomoc :)

4 odpowiedzi

–2 głosów
odpowiedź 9 października 2018 przez Bornegio Obywatel (1,070 p.)
wybrane 9 października 2018 przez masterfiletable2
 
Najlepsza
Napisz funkcję rekurencyjną, która dzieli twoją liczbę przez 10 i zaokrągla w dół do czasu aż otrzymana liczba nie będzie parzysta (wtedy zwróć false), albo liczba będzie mniejsza od 10, wtedy zwróć true
0 głosów
odpowiedź 9 października 2018 przez Grzegorz :> Dyskutant (8,050 p.)
Aby uzyskać cyfry parzyste ustaw przedział wartości w pętli od 0 do 10 ;)
komentarz 9 października 2018 przez masterfiletable2 Nowicjusz (150 p.)
Może źle sprecyzowałem problem. Mam wypisać liczby, w których cyfry są parzyste, np.

Liczba 32 - nie może być, bo 3 nie jest parzyste.

natomiast liczba 42 - może być, bo 4 i 2 są parzyste.
komentarz 9 października 2018 przez Grzegorz :> Dyskutant (8,050 p.)

Jedyne co przychodzi mi do głowy to sposób ze sprawdzaniem wartości tablicy:

function modulo(x,y)
{
  while(y>=x){
    x++;
let n = x.toString();
  if(x%2==0){
    if(n[0]%2 == 0){
      console.log(x);
    }
  }
}
}
modulo(20,70);

Pozdrawiam :>

–1 głos
odpowiedź 10 października 2018 przez mokrowski Mędrzec (156,260 p.)
edycja 10 października 2018 przez mokrowski
function is_even_all_digits(value) {
    while((value % 2 == 0) && value) {
        value = Math.floor(value / 10);
    }
    return value == 0;
}

komentarz 10 października 2018 przez monika90 Pasjonat (22,940 p.)
A gdyby użyć Math.trunc? - działałoby dla liczb ujemnych.
komentarz 10 października 2018 przez pablop76 VIP (123,400 p.)

Trzeba było o tego zacząć, a nie dyskutować o funkcji rekurencyjnej, której tu nie użyłeś.

function test(value){
var tab = Array.from(value.toString());
for(var i = 0; i<tab.length; i++){
	if(tab[i]%2!=0){
		return false;
	}
}
	return true;
}

 

komentarz 10 października 2018 przez mokrowski Mędrzec (156,260 p.)

@pablop76, Spoko... ale ja w konwersacji (zerknij) przecież nie miałem nawet sugestii użycia funkcji rekurencyjnej. Ktoś inny to proponował. Ważne że się wyjaśniło. Teraz można ewentualnie honować/poprawiać czy dla domeny liczb ujemnych czy innych reprezentacji i porównać rozwiązania albo rozważać konsekwencje rekurencji :)

–2 głosów
odpowiedź 9 października 2018 przez pablop76 VIP (123,400 p.)
Konwersja do stringa, potem na tablicę a potem sprawdzenie elementów tablicy.
komentarz 9 października 2018 przez Tomek Sochacki Ekspert (227,490 p.)
No właśnie dlatego przed tak krytycznym wskazywaniem na zły i szkodliwy pomysł powinno paść wg mnie pytanie o dokładne dane wejściowe, ilość ich danych, częstotliwość odpalania algorytmu itp. itd.
komentarz 9 października 2018 przez mokrowski Mędrzec (156,260 p.)

@pablop76, biorę pod uwagę zakres [0, Number.MAX_SAFE_INTEGER]. W pytaniu jest podkreślone liczby. Co daje zakres [0, 900719925474099].

komentarz 9 października 2018 przez mokrowski Mędrzec (156,260 p.)

@Tomek Sochacki, nie jestem "Hop do przodu" tylko zauważam błąd rozumowania. Jeśli to Ci się nie podoba to nie znaczy że mam go nie zauważać. Problem jest prosty. Wymaga testowania poszczególnych cyfr reprezentacji dziesiętnej. To nie jest budowanie kombajnu przetwarzającego reprezentacje o długości genomu ludzkiego. Warunki brzegowe zostały już wystarczająco dobrze sprecyzowane. 

komentarz 10 października 2018 przez Comandeer Guru (605,260 p.)

@mokrowski, nie żeby coś, ale na razie jedynie kilka razy zauważyłeś, że problem jest prosty i na tym się skończyło. Zresztą to nie pierwszy raz, gdy wbijasz się w dyskusję, pokazujesz wszystkim, jak mało wiedzą i stawiasz się z automatu na pozycji autorytetu. Przykład z odpowiedzi niżej:

Dla chętnych do policzenia złożoność pamięciowa i obliczeniowa.

Co to wnosi? Absolutnie nic, bo dalej nie wiadomo, czemu i na jakiej podstawie akurat to rozwiązanie jest wydajniejsze od innych. A przecież starczy to opisać jednym zdaniem.

2
komentarz 10 października 2018 przez mokrowski Mędrzec (156,260 p.)

Nie wiem czy się "wbijam w dyskusję". Pierwszy komentarz był mojego autorstwa. Dość że zauważyłem w mojej ocenie trywialność rozwiązania oraz błąd preferowanego. Dodatkowo identyczną propozycję miałem  kilka razy w projektach ("policzmy wszystko na ciągach znaków"). Znam konsekwencje takich pomysłów. Stąd może twarde przekonanie o poprawności takiego a nie innego rozwiązania i płynąca stąd możliwa autorytarność wypowiedzi.

Z dużą uwagą odnoszę się także do proponowanych rozwiązań i ich potencjalnej jakości lub konsekwencji a nie do ludzi czy ich przekonań. Jeśli coś w moim przekonaniu jest niewydajne, nieoptymalne lub błędne, myślę że naturalnym jest ustosunkowanie się do konkretnego zagadnienia i rozwiązania. Tego oczekuję od siebie i na to jestem gotów w przypadku swoich propozycji bo oczywiste jest przecież że także popełniam błędy.

Denerwujące zdanie usunę jako nie wnoszące nic w dyskusji.

Pozostaje mi tylko mieć nadzieję że swoim irytującym zachowaniem, nie przekroczę norm dobrego smaku albo zachowań uznawanych za dopuszczalne. Być może "tak mam" ale intencje dobre :-)

Podobne pytania

+1 głos
1 odpowiedź 2,104 wizyt
pytanie zadane 13 kwietnia 2021 w C i C++ przez Zuzanna Nowicjusz (160 p.)
–4 głosów
4 odpowiedzi 882 wizyt
pytanie zadane 6 stycznia 2021 w C i C++ przez radekflis999 Nowicjusz (160 p.)
+1 głos
3 odpowiedzi 3,822 wizyt
pytanie zadane 6 października 2016 w C i C++ przez Arek Użytkownik (510 p.)

93,030 zapytań

141,992 odpowiedzi

321,294 komentarzy

62,376 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...