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

Cyfry parzyste Javascript

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
2,073 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,480 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,540 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,480 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,540 p.)
Konwersja do stringa, potem na tablicę a potem sprawdzenie elementów tablicy.
komentarz 9 października 2018 przez masterfiletable2 Nowicjusz (150 p.)

@pablop76, też myślałem nad tym, ale wydaje mi się to niezbyt optymalne rozwiązanie, może coś innego? 

1
komentarz 9 października 2018 przez pablop76 VIP (123,540 p.)
mokrowski w czym problem?
1
komentarz 9 października 2018 przez mokrowski Mędrzec (156,480 p.)

W totalnie bezsensownym i nieoptymalnym rozwiązaniu. A jako rada jest wręcz szkodliwa.

komentarz 9 października 2018 przez pablop76 VIP (123,540 p.)
Nie wiem czy iteracja nawet po  dwudziestu cyfrach jest mniej optymalna niż funkcja rekurencyjna, która tworzy kilkanaście własnych kopii.
komentarz 9 października 2018 przez mokrowski Mędrzec (156,480 p.)
O czym ty mówisz? Przecież to jest 1 pętla sprawdzająca warunek i 2 for. Nic więcej...
2
komentarz 9 października 2018 przez Tomek Sochacki Ekspert (227,490 p.)

@mokorowski,

a może skoro jesteś taki hop do przodu aby pogrążać Kolegi propozycję to daj jakieś obiektywne testy wydajnościowe? I druga sprawa ja duże zbiory danych będą przetwarzane. Z chęcią zobaczę Twoje analizy ale na realnych danych, a nie miliardach iteracji, bo tu wchodzimy w istotny punkt, o którym widzę, że chyba wszyscy zapomnieli - z jakimi danymi pracujemy i dla jakich warunków brzegowych optymalizujemy algorytm.

komentarz 9 października 2018 przez pablop76 VIP (123,540 p.)
edycja 9 października 2018 przez pablop76
Kolega mokrowski ma na myśli podane w przykładzie liczby dwucyfrowe. Nie bierze pod uwagę np 124686462868
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,480 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,480 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 (606,240 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,480 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,299 wizyt
pytanie zadane 13 kwietnia 2021 w C i C++ przez Zuzanna Nowicjusz (160 p.)
–4 głosów
4 odpowiedzi 961 wizyt
pytanie zadane 6 stycznia 2021 w C i C++ przez radekflis999 Nowicjusz (160 p.)
+1 głos
3 odpowiedzi 3,907 wizyt
pytanie zadane 6 października 2016 w C i C++ przez Arek Użytkownik (510 p.)

93,188 zapytań

142,204 odpowiedzi

322,027 komentarzy

62,515 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 2581p. - dia-Chann
  2. 2537p. - Łukasz Piwowar
  3. 2528p. - Łukasz Eckert
  4. 2514p. - CC PL
  5. 2476p. - Tomasz Bielak
  6. 2445p. - Łukasz Siedlecki
  7. 2443p. - rucin93
  8. 2418p. - Michal Drewniak
  9. 2373p. - Marcin Putra
  10. 2367p. - Adrian Wieprzkowicz
  11. 2317p. - Mikbac
  12. 2156p. - Anonim 3619784
  13. 2016p. - Michał Telesz
  14. 1733p. - rafalszastok
  15. 1628p. - Dominik Łempicki (kapitan)
Szczegóły i pełne wyniki

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 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...