![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 83 Pomógł: 7 Dołączył: 3.02.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam. Mam sobie tabelkę:
Kod x\y 10 20 30 40 50 60 70 80 90 10 95 90 90 70 70 70 60 50 40 20 90 90 90 70 70 60 60 50 40 30 90 90 70 60 60 60 50 50 40 40 70 70 60 60 60 50 50 50 40 50 70 70 60 60 50 50 50 40 40 60 70 60 60 50 50 50 50 40 40 70 60 60 50 50 50 50 40 40 40 80 50 50 50 50 40 40 40 40 30 90 40 40 40 40 40 40 40 30 30 wartości x oraz y będą zawsze libczbą naturalną większą od zera. Jak tę tabelkę opakowac do formatu JSON aby w miare latwo pobierać odpowiednią wartość, przy czym: wartści x/y z tabelki są wartościami granicznymi co oznacza nic innego że popodaniu przykładowo: x=5, y=7 return 95 x=10, y=10 return 95 x=35, y=6 return 70 x= 70, y=85 return 40 czyli defaktu mamy w tej tabelce jakby zakresy. Najważniejsze zeby tę tabelkę zapakować jakoś do formatu JSON i w miarę prosty sposób zwracac odpowiednie wartosci. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 205 Pomógł: 43 Dołączył: 5.03.2012 Ostrzeżenie: (0%) ![]() ![]() |
1. Napisz funkcję która przyjmuje parametry x i y i zwraca wynik z tabelki.
2. Utwórz pętlę for zagnieżdżoną w innej pętli for:
3. Znajdź bibliotekę, która przetwarza obiekty na JSON, np: https://github.com/douglascrockford/JSON-js...master/json2.js i dołącz ją do HTML. 4. JSON.stringify(obiekt) zwróci string - obiekt JSON Myślę, że powinno działać. Nie rozumiem co rozumieć pod pojęciem "odpowiednio zwracać" |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 83 Pomógł: 7 Dołączył: 3.02.2007 Ostrzeżenie: (0%) ![]() ![]() |
z samoą funkcją zapewne nie będę miec problemu. Wszystko o czym piszesz doskonale rozumiem. Moim problemem jest zapakowanie tej tabelki do obiektu JSON
![]() ..ogólnie chciałbym uniknąć czegoś takiego ..ale jesli nie ma innej rady ![]()
..bo jak narazie jedyny pomysł jaki mi przychodzi do głowy to własnie zbudowanie takiej tablicy i przjechanie po jej elementach:
Ten post edytował WiruSSS 26.08.2013, 20:46:53 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 205 Pomógł: 43 Dołączył: 5.03.2012 Ostrzeżenie: (0%) ![]() ![]() |
Nie ma czegoś takiego jak "obiekt JSON"
JSON to skrót od JavaScript Object Notation - notacja obiektu JavaScript. Jest to inaczej - forma zapisu, właściwym zapisem JSON jest na przykład:
Inaczej tworzony jest obiekt w kodzie, który Ci podałem. Przed zewnetrzną pętlą "for" jest definicja obiektu. W pętli for tworzone są pola tego obiektu. Rezultatem będzie ten sam obiekt, jakby miał być tworzony odręcznie. Możesz to zrobić też odręcznie ale to chyba nie ma sensu? Celem JSON.stringify jest właśnie utworzenie takiego "odręcznego" zapisu w stringu. Chyba o to Ci chodzi? Ten post edytował lukasz1985 26.08.2013, 20:25:53 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 83 Pomógł: 7 Dołączył: 3.02.2007 Ostrzeżenie: (0%) ![]() ![]() |
...cały czas starasz się mnie uczyć podstaw
![]() ![]() JSON to obiekt zserializowany jest stringiem natomiast sparsowany jest najzwyczajniejszym obiektem ..zresztą Twój kod mówi zam za siebie ..i nawet jak to ładnie nazwałes ![]() ![]() Ten post edytował WiruSSS 26.08.2013, 20:33:20 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 205 Pomógł: 43 Dołączył: 5.03.2012 Ostrzeżenie: (0%) ![]() ![]() |
Może uściślij swoje pytanie. Wtedy może nawet sam sobie na nie odpowiesz
![]() |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 83 Pomógł: 7 Dołączył: 3.02.2007 Ostrzeżenie: (0%) ![]() ![]() |
...ale jak ma to bardziej uscislić?
chodzi mi o najlepszy (najefektywniejszy w przeszukiwaniu) z możliwych zapis tej tabelki w formie JSON [EDIT] tak sobie myślę ...chyba jednak nie ma szybszego sposobu ...jak ten co przedstawiłem kilka postów wcześniej. Co najwyżej można ewentualnie przed iteracją sprawdzić różnicę miedzy pierwszm a ostatnim elementem tablicy i ewentualnie ją odwrócić, żeby mniej przebiegów pęlti było ..ale to i tak chyba znikomy zysk wydajności przy tej liczbie elementów Ten post edytował WiruSSS 26.08.2013, 20:50:43 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 205 Pomógł: 43 Dołączył: 5.03.2012 Ostrzeżenie: (0%) ![]() ![]() |
Zapis nie ma większego znaczenia, jeśli użyjesz dobrego algorytmu, na przykład używając drzew binarnych (binary tree) ilość potrzebnych operacji do znalezienia obiektu nie rośnie wprost proporcjonalnie do ilości elementów. Nie znam szcegółów implementacji, jest o tym dużo w sieci.
Jeśli nie interesuje Cię to rozwiązanie i za każdym razem chcesz iterować wszystkie pola obiektu w celu przeszukiwani - wtedy pozostałbym przy tym co jest - tego już raczej nie da się zoptymalizować. |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 83 Pomógł: 7 Dołączył: 3.02.2007 Ostrzeżenie: (0%) ![]() ![]() |
...przeglądnąłem trochę materiałów na temat tych kopców ..jednak w moim przypadku jest o tyle prościej, że sama struktura (tabela w postaci JSON) będzie wpisywana ręcznie do pliku (plik konfiguracyjny) ...i nie będzie przeszkody żeby wpisć to posortowane. mozna pokusic się o napisanie funkcji rekurencyjnej która bedize wybierać srodkowy element z całego zakresu i sprawdzac czy obie wartosci są wyższe lub niższe, wtedy ograniczy zakres odpowiednio w dół lub w góre i znów z nowego zakresu pobierze element środkowy, w ten sposób zamiast iterować np kilkaset razy może wystarczyć kilka kilkanaście takich kroków. chyba dla testów (i z czystej ciekawości) wyprobuję obie wersje
![]() druga sprawa to taka, że ja nie potrzebuję pobrac najmniejszego lub najwiekszego elementu tylko porównać z tą tabelką i wybrać najbliższy mniejszy Ten post edytował WiruSSS 26.08.2013, 21:38:13 |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 205 Pomógł: 43 Dołączył: 5.03.2012 Ostrzeżenie: (0%) ![]() ![]() |
Ja myślę, że warto się nauczyć tych drzew binarnych. Java, przykładowo posiada wbudowane biblioteki to tego celu, gdzie wyszukiwanie w kolekcjach wykonywane jest poprzez właśnie algorytm drzew binarnych. Inną sprawą jest, że to bardzo ważna technika, którą, każdy, kto zajmuje się programowaniem powinien poznać, ze względu choćby na implikacje jakie niesie to dla efektywności programów.
Lepiej mieć do czynienia z 10 iteracjami niż z 2000. |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 83 Pomógł: 7 Dołączył: 3.02.2007 Ostrzeżenie: (0%) ![]() ![]() |
Bardzo ciekawe zagadnienie i zapewne znajdę w przyszlości jakies zastosowanie. co do obcnego problemu, po głebszej analizie doszedłem do wniosku że zupełnie wystarczy zwykła pętla. Tablica nie bedize zawierała nigdy więcej jak 100-120 elementów. Petla bedize wykonywana zawsze raz przy wczytywaniu strony.
Wygenerowałem sobie tablicę 100 elementową. Tablicę wrzucilem do petli testującej, która wykonuje się równo przez 1000ms (sekundę). W każdym przebiegu pętli testującej losuje x,y i przeszukuję tablicę iterując ją. Pętla testująca wykonuje się w ciągu sekundy 45000-50000 razy (zaleznie jak czesto wylosuje niskie wartości x,y) ...chyba zbędna tu optymalizacja ![]() Ten post edytował WiruSSS 26.08.2013, 23:07:13 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 18:28 |