Mám takový intelektuální (ne)problém. Včera jsem přemýšlel nad logikou, jak počítat skóre u scrabble, v případech, že hráč položením kamenů složí více než jedno slovo.
Ověřování slov proti slovníku teď pomiňme a berme, že pro tento příklad jsou všechna slova validní.
Při mém brainstormingu o řešení jsem vždy došel až do bodu, kdy jsem byl v pátém zanořeném cyklu, a v nedozírné rekurzi, takže vhazuji rukavici do ringu, s výzvou: Kdo to vymyslí nejlépe?
Pro případné vymýšlení nebo zkoušení, kdyby se tím chtěl někdo zabývat, jsou tady podklady:
Funkce pro výpočet skóre za jednotlivá písmena a pole objektů se souřadnicemi bonusů na desce (type 1 je, že se násobí celé složené slovo, type 0, že se násobí pouze písmeno)
A pro testování příklad desky před a po tahu, které jsou vstupem funkce pro výpočet skóre v tahu. Je to vždy jen 2D pole představující desku, a položená/nepoložená písmena
Dotaz
jenkings 121
Čaute
Mám takový intelektuální (ne)problém. Včera jsem přemýšlel nad logikou, jak počítat skóre u scrabble, v případech, že hráč položením kamenů složí více než jedno slovo.
Ověřování slov proti slovníku teď pomiňme a berme, že pro tento příklad jsou všechna slova validní.
Při mém brainstormingu o řešení jsem vždy došel až do bodu, kdy jsem byl v pátém zanořeném cyklu, a v nedozírné rekurzi, takže vhazuji rukavici do ringu, s výzvou: Kdo to vymyslí nejlépe?
Pro případné vymýšlení nebo zkoušení, kdyby se tím chtěl někdo zabývat, jsou tady podklady:
Funkce pro výpočet skóre za jednotlivá písmena a pole objektů se souřadnicemi bonusů na desce (type 1 je, že se násobí celé složené slovo, type 0, že se násobí pouze písmeno)
letterValue(letter) { var tileScore = { 0: '?', 1: 'a,e,i,l,n,o,r,s,t,u', 2: 'd,g', 3: 'b,c,m,p', 4: 'f,h,v,w,y', 5: 'k', 8: 'j,x', 10: 'q,z' }; if (letter.length === 1) { for (var v in tileScore) { if (tileScore[v].indexOf(letter.toLowerCase()) >= 0) { return v; } } } return null; } static bonuses = [ /*První řádek*/ {x:0,y:0,multiplier:3,type:1}, {x:3,y:0,multiplier:2,type:0}, {x:7,y:0,multiplier:3,type:1}, {x:11,y:0,multiplier:2,type:0}, {x:14,y:0,multiplier:3,type:1}, /*Druhý řádek */ {x:1,y:1,multiplier:2,type:1}, {x:5,y:1,multiplier:3,type:0}, {x:9,y:1,multiplier:3,type:0}, {x:13,y:1,multiplier:2,type:1}, /*Třetí řádek */ {x:2,y:2,multiplier:2,type:1}, {x:6,y:2,multiplier:2,type:0}, {x:8,y:2,multiplier:2,type:0}, {x:12,y:2,multiplier:2,type:1}, /*Čtvrtý řádek */ {x:0,y:3,multiplier:2,type:0}, {x:3,y:3,multiplier:2,type:1}, {x:7,y:3,multiplier:2,type:0}, {x:11,y:3,multiplier:2,type:1}, {x:14,y:3,multiplier:2,type:0}, /*Pátý řádek*/ {x:4,y:4,multiplier:2,type:1}, {x:10,y:4,multiplier:2,type:1}, /*Šestý řádek*/ {x:1,y:5,multiplier:3,type:0}, {x:5,y:5,multiplier:3,type:0}, {x:9,y:5,multiplier:3,type:0}, {x:13,y:5,multiplier:3,type:0}, /*Sedmý řádek*/ {x:2,y:6,multiplier:2,type:0}, {x:6,y:6,multiplier:2,type:0}, {x:8,y:6,multiplier:2,type:0}, {x:12,y:6,multiplier:2,type:0}, /*Osmý řádek*/ {x:0,y:7,multiplier:3,type:1}, {x:3,y:7,multiplier:2,type:0}, {x:11,y:7,multiplier:2,type:0}, {x:14,y:7,multiplier:3,type:1}, /*Devátý řádek*/ {x:2,y:8,multiplier:2,type:0}, {x:6,y:8,multiplier:2,type:0}, {x:8,y:8,multiplier:2,type:0}, {x:12,y:8,multiplier:2,type:0}, /*Desátý řádek*/ {x:1,y:9,multiplier:3,type:0}, {x:5,y:9,multiplier:3,type:0}, {x:9,y:9,multiplier:3,type:0}, {x:13,y:9,multiplier:3,type:0}, /*Jedenáctý řádek*/ {x:4,y:10,multiplier:2,type:1}, {x:10,y:10,multiplier:2,type:1}, /*Dvanáctý řádek */ {x:0,y:11,multiplier:2,type:0}, {x:3,y:11,multiplier:2,type:1}, {x:7,y:11,multiplier:2,type:0}, {x:11,y:11,multiplier:2,type:1}, {x:14,y:11,multiplier:2,type:0}, /*Třináctý řádek */ {x:2,y:12,multiplier:2,type:1}, {x:6,y:12,multiplier:2,type:0}, {x:8,y:12,multiplier:2,type:0}, {x:12,y:12,multiplier:2,type:1}, /*Čtrnáctý řádek */ {x:1,y:13,multiplier:2,type:1}, {x:5,y:13,multiplier:3,type:0}, {x:9,y:13,multiplier:3,type:0}, {x:13,y:13,multiplier:2,type:1}, /*Patnáctý řádek*/ {x:0,y:14,multiplier:3,type:1}, {x:3,y:14,multiplier:2,type:0}, {x:7,y:14,multiplier:3,type:1}, {x:11,y:14,multiplier:2,type:0}, {x:14,y:14,multiplier:3,type:1} ];
A pro testování příklad desky před a po tahu, které jsou vstupem funkce pro výpočet skóre v tahu. Je to vždy jen 2D pole představující desku, a položená/nepoložená písmena
static boardOld = [ ["A","B","O","P","S","","","","","","","","","",""], ["","","A","","","","","","","","","","","",""], ["","","M","","","","","","","","","","","",""], ["","","C","","","","","","","","","","","",""], ["","","","","","","","","","","","","","",""], ["","","","","","","","","","","","","","",""], ["","","","","","","","","","","","","","",""], ["","","","","","","","","","","","","","",""], ["","","","","","","","","","","","","","",""], ["","","","","","","","","","","","","","",""], ["","","","","","","","","","","","","","",""], ["","","","","","","","","","","","","","",""], ["","","","","","","","","","","","","","",""], ["","","","","","","","","","","","","","",""], ["","","","","","","","","","","","","","",""] ] static boardNew = [ ["A","B","O","P","S","","","","","","","","","",""], ["","","A","C","D","","","","","","","","","",""], ["","","M","","","","","","","","","","","",""], ["","","C","","","","","","","","","","","",""], ["","","","","","","","","","","","","","",""], ["","","","","","","","","","","","","","",""], ["","","","","","","","","","","","","","",""], ["","","","","","","","","","","","","","",""], ["","","","","","","","","","","","","","",""], ["","","","","","","","","","","","","","",""], ["","","","","","","","","","","","","","",""], ["","","","","","","","","","","","","","",""], ["","","","","","","","","","","","","","",""], ["","","","","","","","","","","","","","",""], ["","","","","","","","","","","","","","",""] ]
Link to comment
Share on other sites
7 odpovědí na tuto otázku
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now