18. oktober 2003 - 11:47
Der er
6 kommentarer
gennemcheck 2d array
Hej Jeg har nedenstående array som jeg gerne vil kigge igennem for at finde "rækker" at tal. Dvs. at jeg vil finde de værdier som indgår i en række på. eks. 3 ( enten horizontalt eller vertikalt). Med andre ord har jeg brug for en function der kan finde rækker af givne tal : 222 eller 3 osv. 3 3 Samtidig vil jeg også gerne kunne parse hvor mange der skal til en række. Jeg har været igang med noget i denne stil men det fungere ikke optimalt. Nogen der har nogen gode bud ? /h function checkForMatch() { trace("chekker array X"); mapWidth = 8; mapHeight = 17; for (var i = 0; i<mapHeight; ++i) { for (var j = 0; j<mapWidth; ++j) { if (myMap[i][j] == myMap[i][j-1] && myMap[i][j-1] == myMap[i][j-2]) { this.container["t_"+i+"_"+j].inside.play(); this.container["t_"+i+"_"+(j-1)].inside.play(); this.container["t_"+i+"_"+(j-2)].inside.play(); trace("der var bid på X"); myScore = myScore+1; } } } checkForMatchY(); } function checkForMatchY() { trace("chekker array Y"); mapWidth = 8; mapHeight = 17; for (var i = 0; i<mapHeight; ++i) { for (var j = 0; j<mapWidth; ++j) { if (myMap[i][j] == myMap[i-1][j] && myMap[i-1][j] == myMap[i-2][j]) { this.container["t_"+i+"_"+j].inside.play(); this.container["t_"+(i-1)+"_"+(j)].inside.play(); this.container["t_"+(i-2)+"_"+(j)].inside.play(); trace("der var bid på Y"); myScore = myScore+1; } } } } myMap = [[1, 2, 0, 0, 2, 1, 3, 1], [1, 3, 3, 2, 1, 1, 3, 1], [1, 3, 1, 1, 2, 2, 1, 2], [1, 1, 3, 1, 3, 1, 3, 1], [1, 1, 3, 1, 0, 1, 3, 1], [1, 1, 0, 1, 3, 3, 1, 3], [1, 1, 2, 1, 1, 2, 2, 1], [1, 3, 1, 0, 1, 3, 3, 1], [1, 1, 0, 1, 3, 1, 2, 1], [3, 1, 1, 3, 1, 1, 0, 1], [1, 2, 1, 1, 2, 1, 1, 0], [1, 1, 3, 1, 1, 0, 1, 2], [1, 1, 3, 3, 1, 3, 1, 1], [1, 3, 1, 2, 1, 2, 1, 1], [1, 1, 3, 1, 2, 1, 1, 3], [1, 2, 1, 1, 0, 1, 1, 1], [1, 1, 3, 1, 1, 2, 1, 1]];
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
18. oktober 2003 - 13:24
#1
Umiddelbart synes jeg at det ser ud som om din metode er helt fin? Hvad mener du med: "Samtidig vil jeg også gerne kunne parse hvor mange der skal til en række" ? Her er mit lille eftertjek (bemærk map-arrayet er ændret til kun at give udslag een gang på x og een gang på y): //////////////////////////////////////////////// map = [ [1, 2, 0, 0, 2, 1, 3, 1], [1, 3, 3, 2, 1, 1, 3, 1], [1, 3, 1, 1, 2, 2, 1, 2], [0, 1, 3, 1, 3, 1, 3, 1], [1, 0, 3, 0, 0, 1, 3, 1], [1, 1, 0, 1, 3, 3, 1, 3], [0, 1, 2, 1, 1, 2, 2, 1], [0, 3, 1, 0, 1, 3, 3, 0], [1, 1, 0, 1, 3, 1, 2, 1], [3, 1, 1, 3, 0, 0, 1, 0], [1, 2, 1, 1, 2, 1, 0, 1], [1, 1, 3, 1, 1, 0, 1, 2], [0, 1, 3, 3, 0, 3, 1, 1], [0, 3, 1, 2, 1, 2, 0, 1], [1, 1, 3, 1, 2, 1, 1, 3], [1, 2, 1, 0, 0, 1, 0, 1], [0, 1, 3, 3, 3, 2, 1, 1]]; map_w = 8; map_h = 17; function tjek_x() { for (var i = 0; i < map_h; ++i) { trace("tjek_x talking: in i for: " + map[i]); for (var j = 0; j<map_w; ++j) { if (map[i][j] == map[i][j-1] && map[i][j-1] == map[i][j-2]) { trace("bonus_x..................................."); } trace(map[i][j] == map[i][j-1] && map[i][j-1] == map[i][j-2]); } } } function tjek_y() { for (var i = 0; i < map_h; ++i) { trace("tjek_y talking: in i for: " + map[i]); for (var j = 0; j<map_w; ++j) { if (map[i][j] == map[i-1][j] && map[i-1][j] == map[i-2][j]) { trace("bonus_y..................................."); } trace(map[i][j] == map[i-1][j] && map[i-1][j] == map[i-2][j]); } } } tjek_x(); tjek_y(); ////////////////////////////////////////// Det synes jeg ser ud til at virke? mvh mat
19. oktober 2003 - 17:38
#2
Jeg fatter ikke, hvad det er til :) Hvis du forklarer målet med dit spørgsmål, tror jeg, at det er nemmere at svare :)
19. oktober 2003 - 18:18
#3
jeg tror bare det er for at finde 3 på stribe? sådan forstod jeg det (tror jeg nok) :P
19. oktober 2003 - 20:07
#4
så er jeg tilbage fra en god lang fridag. Jeps som mat siger kan det sammenlignes med 3 på stribe. Jeg bruger map arrayet til at holde styr på mine "brikker" Med hensyn til det med at parse et antal til functionen, mener jeg at jeg gerne vil kunne styre om det er 3 på stribe eller 4(og 3) på stribe osv. Håber det giver mening :P btw. barklund hvordan går det med DKMMUG er der stor interesse ? /h
20. oktober 2003 - 16:21
#5
Tja, vi har ca. 30 tilmeldte til mødet :) Og måske 60 forskellige på mailing-listerne, men lige så snart vi laver noget indhold, så skal det nok gå lidt hurtigere :)
20. oktober 2003 - 18:23
#6
Sådan her eksempelvis: myMap = [ [1, 2, 0, 0, 2, 1, 3, 1], [1, 3, 3, 2, 1, 1, 3, 1], [1, 3, 1, 1, 2, 2, 1, 2], [1, 1, 3, 1, 3, 1, 3, 1], [1, 1, 3, 1, 0, 1, 3, 1], [1, 1, 0, 1, 3, 3, 1, 3], [1, 1, 2, 1, 1, 2, 2, 1], [1, 3, 2, 0, 1, 3, 3, 1], [1, 1, 2, 1, 3, 1, 2, 1], [3, 1, 1, 3, 1, 1, 0, 1], [1, 2, 1, 1, 2, 1, 1, 0], [1, 1, 3, 1, 1, 0, 1, 2], [1, 1, 3, 3, 1, 3, 1, 1], [1, 3, 1, 2, 1, 2, 1, 1], [1, 1, 3, 1, 2, 1, 1, 3], [1, 2, 1, 1, 0, 1, 1, 1], [1, 1, 3, 1, 1, 2, 1, 1]]; myMap2 = [ [1, 2, 2], [1, 3, 2], [1, 3, 1]]; function findRows(my_array, min_len) { if (!min_len) { min_len = 2; } var len_x = my_array.length; var len_y = my_array[0].length; var i, j; var found = new Array(); var cur_arr = new Array(); var addObj; for (i = 0; i < len_x; i++) { for (j = 0; j < len_y; j++) { if (cur_arr[0] == undefined || cur_arr[0] != my_array[i][j]) { if (cur_arr.length >= min_len) { addFound(found,cur_arr,"x"); } cur_arr = [my_array[i][j]]; } else { cur_arr.push(my_array[i][j]); } } } if (cur_arr.length >= min_len) { addFound(found,cur_arr,"x"); } cur_arr = new Array(); for (i = 0; i < len_y; i++) { for (j = 0; j < len_x; j++) { if (cur_arr[0] == undefined || cur_arr[0] != my_array[j][i]) { if (cur_arr.length >= min_len) { addFound(found,cur_arr,"y"); } cur_arr = [my_array[j][i]]; } else { cur_arr.push(my_array[j][i]); } } } if (cur_arr.length >= min_len) { addFound(found,cur_arr,"y"); } return found; } function addFound(founds, add_arr, dir) { trace("found: ["+dir+"]: "+add_arr); var add_obj = new Object(); add_obj.char = add_arr[0]; add_obj.len = add_arr.length; add_obj.dir = dir; founds.push(add_obj); } findRows(myMap); Så kan du specificere en minimumslængde for at det kan virke...
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.