Uma implementação muito boba do jogo Pedra-Papel-Tesoura

function game(guess){
return (Math.round(guess.charCodeAt()%110/1.2)+1-~~(Math.random()*3))%3-1
}

function gameDebuggable(g, debug){
var b = ~~(Math.random()*3)
, g = Math.round(g.charCodeAt()%110/1.2)-2
, result = (g-b+3)%3-1

if (debug){ debug(b,g,result) }
return result

}

function test(debug){
var n = debug ? 100 : 100000
, i = n
, won = 0
, lost = 0
, g
, opts = ['paper','rock', 'scissors']

function d(b,g,r){
console
.log('comp', opts[b])
console
.log('player', opts[g])
console
.log('result', r)
console
.log('------------------' )
}

while(--i>0){
g
= gameDebuggable(opts[~~(Math.random()*3)], debug&&d)
if ( g > 0 ){
won
++
} else if (g == 0) {
lost
++
}
}
return won/n
}

console
.log('should be very close to 0.33:',test(1))

Observe que eu estava apenas brincando com isso, então provavelmente existem muitas versões mais curtas da mesma funcionalidade. Eu não estava tentando encontrar esses.

As duas funções do jogo são essencialmente iguais, a única diferença é que uma delas aceita uma função para depuração.