Diskuze: Porovnavanie poli
V předchozím kvízu, Online test znalostí JavaScript, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 19 zpráv z 19.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí JavaScript, jsme si ověřili nabyté zkušenosti z kurzu.
Vysvětli blíže co myslíš tím céčkem ? Jak o jeden index? Výsledek chceš vědět pro celá pole ?
Asi som to zle napisal, potrebujem si vytvorit nieco taketo. Je to percentualny vyskyt prvkov na jednotlivych poziciach podla poradia.
Dobře máš sedm prvků a na obrázku jsou hodnoty pro sedm polí? Z nichž každé obsahuje dalších x poli o sedmi prvcích ... Chceš v každém hlavním pole určit pro každé číslo od 1 do 7 určit jeho výskyt na konkrétním indexu ... Je to tak ?
Nie . Potrebujem si pamatat ako boli vygenerovane a a ako som ich ja neskor zadal.A tie hodnoty si nejako uchovavat aby sa dal zostrojit takyto graf.
dobre tak ja to zkusim z jineho konce, tohle vlakno zacinalo na srovnavaci metode, pak jsme se dostali k pocitani castosti vyskytu a ted jsme u generovani a pozdejsim zadavani ... pravdepodobne to ma souvislost s tvym predchozim dotazem na generovani nahodnych sedmi cisel, mozna ale ne... nicmene pozadam te o to, abys mi bud vysvetlil, o co presne se snazis, co je cilem, a nebo, pokud nechces vsechno vysvetlovat a nebo to chces udrzet pod poklickou, rekni jen co potrebujes stanovit, napriklad mam data v takovehle podobe, chci je mit v takoveto, ja ti reknu co si myslim, ze potrebujes a bude hotovo, takhle ale nevim o co ti vlastne jde... o porovnani dvou dvourozmernych poli (prvni prispevek) o spocitani castosti vyskytu prvku na konkretnim indexu (tak to vyznel z tabulky v druhem) a nebo jeste neco jineho (co jsem nepochopil skoro vubec z tretiho prispevku)
zkus vychazet z toho, ze netusim co implementujes a potrebuju vedet jak ti poradit, mozna implementujes nejakej matematickej problem...nevim...rekni ty...
Ok , no ja sam nie som 100% presvedceny ako sa to ma porovnavat. Tu mam nieco k tomu. Je tam 20 opakovani v ktorych sa ti vygeneruje 7 cisel , po kazdom opakovani sa ti zobrazia tlacitka a treba zakliknut cisla v spravnom poradi. a ide o to Napr ak ta cislo vygenerovalo ako tretie tak s najvecsou pravdepodobnostou ho oznacis ako 3, a ak nahodu nie tak s velkou pravdepodobnostou ako 2 alebo 4. Dufam ze ten obrazok pomoze.
dobre myslim, ze chapu ... v tenhle moment mas pole vygenerovanych hodnot (jakoze to uz mas hotove) a taky predopkladam ze bez vetsich problemu mas druhe pole, ktere je zaznamem toho co vlozil uzivatel (testovaci subjekt) .. nyni potrebujes tato dve pole projit nejakou chytrou funkci, ktera urci jestli za A uzivatel vsechno zadal spravne v perfektnim poradi, za B uzivatel zadal neco spatne, pak potrebujes zjistit, kterou hodnotu zadal spatne, kde mela byt a kam ji strcil... rekneme ze by funkce vracela nejake pole, kde by byl ulozen vysledek, ubiram se spravnym smerem?
Ano presne tak, tie udaje potom poslem do databazy a z nej vytvorit taku tabulku a graf ako som posielal uz vtedy.Tak neviem v akom formate by boli najlepsie uchovavat vysledky.
dobre rekneme, ze funkce provede porovnani obou poli, vezme spravne reseni a spatne reseni, v hlavnim for cyklu pojede na pocet poli uvnitr referencniho pole (tedy sedm, jestli jsem spravne odtusil, ale do budoucna je to jedno, udelame to chytry) ... na kazdy prvek referencniho pole (ve skutecnosti je prvek dalsi pole o sedmi prvcich - to uz jsou ona cisla) v dalsim for cyklu porovname tento prvek s prvkem, co zadal uzivatel, pokud se nelisi, ulozime do naseho noveho pole -1 (potrebujem necim naznacit ze to neni spatne a -1 index v poli neni) .. pokud se ovsem hodnoty odlisuji, zavolam na uzivatelske pole metodu indexOf() a jako data ji predam prave tu referencni hodnotu, kterou MEL uzivatel na tomto indexu zadat, metoda mi vrati index prvku dane hodnoty v danem (uzivatelskem) poli, ten ulozim na stale ten samy index do vysledneho pole, tim rikam, uzivatel to urcil spatne, zde na tomto indexu se nachazi cislo, ktere tu melo byt... takhle projedu vsechny pole uvnitr velkeho pole a navratim velke pole, obsahujici dalsi pole, jejichz prvky jsou bud -1 a nebo cisla od 0 do 6 (pro sedm prvku) ... do databaze bude treba zanest referencni pole a toto pole, toto pole je otiskem uzivatelskeho pole, a pokud chces zrekonstruovat uzivatelske pole, potrebujes nejen toto pole ale i referencni... jeste dodam...pozor na metodu indexOf(), ona kdyz nic nenajde vrati taky -1 ... na druhou stranu ... predpokladam, ze mas osetrene, ze uzivatel nemuze zadat dvakrat stejne cislo v jedne sekvenci, nebo nemuze nejake cislo vubec nezadat ... pokud nemas, bude treba jeste nejake dalsi logiky, ale pevne verim, ze mas pojistene alespon to zadavani stejneho cisla dvakrat v jedne sekvenci...to bys pak nemohl urcit jednoznacne chybu zejo... no mozna se nekde v necem pletu, projdi si to a dej vedet...
jestli se blizim k cili tak napis, dame dohromady ty cykly
Zle vstupy mam osetrene , uzivatel moze v sekvenii zadat kazde cislo maximalne 1 krat a musi zadat 7 cisel aby mohol spustit dalsie opakovanie. A toto riesenie vyzera velmi slubne.
https://jsfiddle.net/…ll/ythet80e/
Tak to tě může zajímat tenhle fiddle -1 jsem upravil na -2 jen pro jistotu a
můžeš a nemusíš použít posun ... Ten jen přičte k indexu 1 aby první
prvek byl 1 a ne 0 ale spíš to nebude vhodné to jen na koukání ... Řekni
pak co chceš dál nebo jestli tohle stačí
Nebo mě ještě napadl jiný formát, místo chybného místa, uložit vzdálenost a směr k tomu místu ... Řekneme že na třetím indexu pole měla být 5 ka, ale je na pátém... 5 - 3 je 2 .. Kdyby byla na prvním a měla být na třetím tak 1 - 3 je -2 znaménko určí směr a číslo vzdálenost ... Díky téhle reprezentaci nepotřebuješ dvě pole ... Všechno je uloženo v jednom poli ... Pokud ti nezáleží na konkrétní hodnotě do statistik ale spíš na indexu (což si myslím že jsem pochopil správně) ... Tak je tohle přesně pro tebe ... Snadno z toho vyčteš o kolik prvků se uživatel u konkrétního indexu spletl ... Tedy ta tvoje informace, kdy bys mu to měl připomenout, nebo co to bylo, se z toho vyčte snadněji... Co ty na to ? Chceš fiddle nebo si poradíš a upravíš ten můj předchozí?
https://jsfiddle.net/…/ythet80e/4/ kdyz uz jsem ho udelal
Super presne toto som potreboval. A nemas nahodou nejaky tip na to ako by mi
bolo najlepsie si zapamatavat kolko krat sa ktora polozka vyskytovala na ktorom
mieste.
Napr ze polozka 1 bola na 1 mieste napr 12krat , na druhom mieste 3 krat atd.
Aby som z toho dokazal vytvorit tabulku.
Rozmyslam ze ked ten compare bude len takto:
function compare(arrA, arrB) {
var retArr = [];
for (var i = 0; i < Math.min(arrA.length, arrB.length); i++) {
retArr[i] = [];
for (var e = 0; e < Math.min(arrA[i].length, arrB[i].length); e++) {
retArr[i][e] = arrB[i].indexOf(arrA[i][e]);
}
}
console.log(retArr);
return retArr;
}
tak sa z toho bude najlepsie vytvarat ta tabulka.Lebo nam je jedno ake je tam cislo, ta teori iba hovori ze ak bolo napr 3 tak je najvecsia pravdepodobnost ze ho oznacis ako 3.
Kdyz vychazime z toho prvniho modelu, (ten co sis vybral jako reseni), tak asi takhle:
Havni cyklus na pole, ktere je vysledkem predesle operace, uvnitr nej
probehne presne tolik zanorenych cyklu jako je pocet poli uvnitr tohohle pole,
muze jich byt libovolne, nicmene kazde tohle druhe pole bude mit sedm prvku,
tedy na kazde vnitrni pole probehne sedmkrat.
Do vedlejsiho pole[7][7] (je treba ho nejdriv naplnit nulama, aby se pozdeji
daly provadet matematicke operace s prvky) si budes ukladat hodnoty timhle
systemem, dle tvaru tve tabulky, bude osa Y urcovat pocet vyskytu, osa X
konretni polozky ... to znamena ze v druhem vnorenem cyklu kdyz bude prvek
pole[i][e] === -2 tak prictes do vedlejsiho pole na index[i][e] +1, pokud je
hodnota jina, prictes to myslim takhle pole[i][taHodnotaCoNeniMinusDva]
(protoze tam je konkretne ulozen index prvku kam ho zadal uzivatel, misto aby ho
dal sem) ... snazil jsem se to popsat lip, ale vetsina verzi to jen vic
zamotala, takze jsem to popsal co nejstrucneji, snad to z toho vemes a bude ti
to k necemu.
Co ty na to?
jo myslim, ze to by slo, kdyz na to prijde, tak ti to asi i zjednodusi tu tabulkovaci funkci, budes jen inkrementovat hodnotu na prvku, ktery ti rekne to porovnane pole ...
Ok dufam ze to nejako pojde, idem sa pustit do tej tabulky.
Zobrazeno 19 zpráv z 19.