![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 572 Pomógł: 6 Dołączył: 21.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
Jak obliczyć medianę w JavaScript?
Jest takie zadanie: https://dbm.org.pl/__TESTY/test-1.htm Kto wie jak się to robi w JS i dla przykładu wyznaczy medianę wydatków, o co chodzi z food, fuel w expenses? Ten post edytował Malinaa 17.07.2024, 12:40:59 -------------------- I welcome you on the Internet >>> Design by Malina
|
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 36 556 Pomógł: 6314 Dołączył: 27.12.2004 ![]() |
Chyba juz jestem za stary na te testy rekrutacyjne, ale nie kumam jak sie tresc zadania ma do przykladowych danych . starosc nie radosc
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 572 Pomógł: 6 Dołączył: 21.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
Ach faktycznie już wiem, dlaczego też nie kumam jak się treść zadania ma do przykładowych danych.
No, ale można spojrzeć na zadanie, że jego skumanie jest odmładzające... Ten post edytował Malinaa 17.07.2024, 13:45:37 -------------------- I welcome you on the Internet >>> Design by Malina
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 36 556 Pomógł: 6314 Dołączył: 27.12.2004 ![]() |
edit: no ale dobra, przyklad podali chujowy ale w sumie co za roznica
Tu masz jak pobrac pierwsza niedziele miesiaca https://stackoverflow.com/questions/4018879...t-sunday-in-apr no to majac miesiace okreslasz dla nich pierwsza niedziele miesiaca, potem dla kazdego miesiaca lecisz po dniach z expenses i jesli dzien jest mniejszy lub rowny pierwszej niedzieli to do tablicy zbiorczej dla miesiaca wrzucasz wszystkie wydatki. z tresci zadania nie wynika ze mediana ma byc podzielona na typy wydatkow wiec wrzucasz wszystkei wydatki do jednego wora, czy to paliwo czy to jedzenie czy cokolwiek innego to leci do jednego twojego wora wydatkow. Majac wor wydatkow dla miesiaca, to wyliczasz dla niego mediane. Mediana zakladam wiesz co to jest? No i tyle ![]() edit: w sumie mala poprawka. nie liczysz mediany dla kazdego miesiaca, tylko jedna mediane z wydatkow do pierwszej niedzieli kazdego miesiaca. Ech, czytanie tresci zadania ze zrozumenie sie klania dla mnie ;D -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 572 Pomógł: 6 Dołączył: 21.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
Ładnie i szybko się odmłodziłeś
![]() Wygląda, że w JS zajmie mi to więcej czasu i pewnie cały dzień będę się odmładzał, albo po prostu pójdę na basen. Podany link jest trefny, sprawdzałem godzinę temu dla różnych dat i oszukuje. Mediana to taka średnia, a dokładnie jak wyliczyć też nie ma problemu, bo informacja jest ogólnie dostępna. Dzięki za info. Ups. Oszukuje to co poniżej, po dodaniu <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.15.1/moment.min.js"></script> pierwsze rozwiązanie sprawdzam ponownie i działa na 100% Ok. Thanks. Ten post edytował Malinaa 17.07.2024, 14:19:32 -------------------- I welcome you on the Internet >>> Design by Malina
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 36 556 Pomógł: 6314 Dołączył: 27.12.2004 ![]() |
Cytat Podany link jest trefny, sprawdzałem godzinę temu dla różnych dat i oszukuje. Podany tam przyklad function firstSunday(month, year) { let tempDate = new Date(); tempDate.setHours(0,0,0,0); // first SUNDAY of april tempDate.setMonth(month); tempDate.setYear(year); tempDate.setDate(1); let day = tempDate.getDay(); let toNextSun = day !== 0 ? 7 - day : 0; tempDate.setDate(tempDate.getDate() + toNextSun); return tempDate.toDateString(); } jest jak najbardziej ok, musisz tylko pamietac ze miesiace w js liczy sie od zera, jak chcesz pazdziernik to masz wywolywac to tak firstSunday(9, 2023) a jak wrzesien to tak firstSunday(8, 2023) a jak styczen to tak firstSunday(0, 2023) Tak wiem, pojebane ![]() Cytat Wygląda, że w JS zajmie mi to więcej czasu i pewnie cały dzień będę się odmładzał, albo po prostu pójdę na basen. no tak szczewrze powiedziawszy to jest jedno z tych zadan na jedna godzine. -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 572 Pomógł: 6 Dołączył: 21.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
Jak się nauczę szybko odmładzać to zrobię w godzinę.
-------------------- I welcome you on the Internet >>> Design by Malina
|
|
|
![]()
Post
#8
|
|
![]() Grupa: Moderatorzy Postów: 36 556 Pomógł: 6314 Dołączył: 27.12.2004 ![]() |
![]() -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 572 Pomógł: 6 Dołączył: 21.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
Zadanie wgląda tak:
https://dbm.org.pl/__TESTY/zadanie-1.htm ale była jeszcze informacja o testach automatycznych. Jak przetestować taki kod, aby przeszedł testy automatyczne? -------------------- I welcome you on the Internet >>> Design by Malina
|
|
|
![]()
Post
#10
|
|
![]() Grupa: Moderatorzy Postów: 36 556 Pomógł: 6314 Dołączył: 27.12.2004 ![]() |
oni poprostu maja zestaw danych wejsciowych i wyjsciowych i po przepuszczeniu przez twoja funkcje, mechanizm testow sprawdza czy wszystkie wyjscia sie zgadzaja dla danych wejsc.
Oni ci podali schemat jak mniej wiecej struktura kodu powinna wygladac bo im latwiej taka struktrure testowac. No ale ty zrobiles po swojemu ![]() -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 572 Pomógł: 6 Dołączył: 21.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
No tak do pice (po naszemu ja pierdole), stary a głupi jak młody, albo uparty jak osioł, no nie wiem...
Jak to samo zrobić nie po swojemu, a po ichniejszemu? -------------------- I welcome you on the Internet >>> Design by Malina
|
|
|
![]()
Post
#12
|
|
![]() Grupa: Moderatorzy Postów: 36 556 Pomógł: 6314 Dołączył: 27.12.2004 ![]() |
no oni podalo ci kod js jak to ma wygladac. podali ci funkcje ktora ma przyjac te expenses i zwrocic mediane.
No w srodek tej funkcje wloz swoj kod js i juz. Tak, w js mozna deklarowac funkcje w funkcji czyli mniej wiecej tak to mogloby byc, Kod function ICHFUNKCJA(expenses) { //sorki, nie pamietam jak oni to nazwali a ty skasowales zrodlo
function getFirstSunday(year, month) { let firstDay = new Date(year, month - 1, 1); let firstSunday = new Date(firstDay); firstSunday.setDate(firstDay.getDate() + (7 - firstDay.getDay()) % 7); return firstSunday; } function calculateMedian(amount) { if (amount.length === 0) return null; amount.sort((a, b) => a - b); const middle = Math.floor(amount.length / 2); return amount.length % 2 !== 0 ? amount[middle] : (amount[middle - 1] + amount[middle]) / 2; } let allExpenses = []; for (let expense in expenses) { let [year, month] = expense.split('-').map(Number); let firstSunday = getFirstSunday(year, month); for (let day in expenses[expense]) { let currentDate = new Date(year, month - 1, Number(day)); if (currentDate <= firstSunday) { for (let category in expenses[expense][day]) { allExpenses.push(...expenses[expense][day][category]); } } } } return calculateMedian(allExpenses); } -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 572 Pomógł: 6 Dołączył: 21.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
Funkcja w funkcji - nie wiedziałem, ale kiedy po tym kodzie dam:
console.log(solution(expenses)); // nazwali to solution(expenses) to w wersji poprzedniej jak i poprawionej w konsoli wyświetli się to samo = wynik, więc nadal nie kumam, dlaczego musi być funkcja w funkcji. I jeżeli chcą, aby podać wynik i przesłać plik (do testu) to ten plik, czy może być z HTML'em nazwa_pliku.html czy musi być np. nazwa_pliku.js tak, aby przeszło (przesłany plik przeszedł) test automatyczny? -------------------- I welcome you on the Internet >>> Design by Malina
|
|
|
![]()
Post
#14
|
|
![]() Grupa: Moderatorzy Postów: 36 556 Pomógł: 6314 Dołączył: 27.12.2004 ![]() |
no a po co tam html? Ma to byc plik .js z takim kodem
Kod function getFirstSunday(year, month) { let firstDay = new Date(year, month - 1, 1); let firstSunday = new Date(firstDay); firstSunday.setDate(firstDay.getDate() + (7 - firstDay.getDay()) % 7); return firstSunday; } function calculateMedian(amount) { if (amount.length === 0) return null; amount.sort((a, b) => a - b); const middle = Math.floor(amount.length / 2); return amount.length % 2 !== 0 ? amount[middle] : (amount[middle - 1] + amount[middle]) / 2; } function solution(expenses) { let allExpenses = []; for (let expense in expenses) { let [year, month] = expense.split('-').map(Number); let firstSunday = getFirstSunday(year, month); for (let day in expenses[expense]) { let currentDate = new Date(year, month - 1, Number(day)); if (currentDate <= firstSunday) { for (let category in expenses[expense][day]) { allExpenses.push(...expenses[expense][day][category]); } } } } return calculateMedian(allExpenses); } Tam html do niczego nikomu nie jest potrzebny Cytat to w wersji poprzedniej jak i poprawionej w konsoli wyświetli się to samo = wynik, No to chyba dobrze ze to samo sie wyswietla co nie? ![]() Cytat więc nadal nie kumam, dlaczego musi być funkcja w funkcji. No bo oni podali ci pseudokod jak ma wygladac ktory nie uwzglenial dodatkowych funkcji poza funkcja glowna. No to napisalem bys wrzucil funkcje do tej glownej. No ale jak widzisz wyzej wyrzucilem je po za. Zadowolony? ![]() -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#15
|
|
![]() Grupa: Zarejestrowani Postów: 572 Pomógł: 6 Dołączył: 21.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
Ah przepadło, stoper był włączony i czas mnie gonił, więc wysłałem jak było w pliku html
Cytat No to chyba dobrze ze to samo sie wyswietla co nie? A pewnie, że dobrze. Powstało jednak pytanie jeżeli jest dobrze, po co poprawiać na dobrze funkcja w funkcji. No, ale teraz kumam (chociaż nie zostało to jasno określone), że ze względu na podany pseudokod funkcja w funkcji jest mega dobrze i najlepiej nie wyrzucać funkcji pomocniczych poza główną, a będziesz Pan zadowolony, co nawiasem mówiąc brzmi jako tako. Z powodów powyższych poza napadem niekontrolowanego śmiechu ![]() ![]() -------------------- I welcome you on the Internet >>> Design by Malina
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 26.04.2025 - 00:36 |