NHacker Next
  • new
  • past
  • show
  • ask
  • show
  • jobs
  • submit
Show HN: Brain Frog – Can you be random enough for 11 lines of JavaScript? (brainfrog.lol)
hash0 2 days ago [-]
I got 50 hits in 100 tries. That being said, I did not particularly like hitting that poor frog :'( Yes, I am the kind of player who would never choose the rude option when talking to an NPC.
15 hours ago [-]
escanor 18 hours ago [-]
pure random player:

  (async function(punch, delay) {
    async function sleep(ms) {
      return new Promise((resolve, _) => {
        setTimeout(resolve, ms)
      })
    }
    
    for (let i = 0; i < 100; i++) {
      punch(['L', 'R'][(Math.random() * 2) | 0])
      await sleep(delay)
    }
  })(punch, 150)
  
"cheating" player:

  (async function(oracle, punch, delay) {
    async function sleep(ms) {
      return new Promise((resolve, _) => {
        setTimeout(resolve, ms)
      })
    }
    
    for (let i = 0; i < 100; i++) {
      punch((i + 1) < oracle.minForPrediction ? ['L', 'R'][(Math.random() * 2) | 0] : oracle.predictNextPunch() === 'L' ? 'R' : 'L')
      
      await sleep(delay)
    }
  })(oracle, punch, 150)

is it possible to do any better? i haven't fully read frog/oracle code
emrtnn 15 hours ago [-]
Less fancy hack here, intercept the prediction function on every punch and force the frog to take the opposite side. const realPunch = punch;

punch = function(myMove) {

  oracle.predictNextPunch = function() {
    return myMove === 'L' ? 'R' : 'L'; 
  };
  
  realPunch(myMove);
};
escanor 18 hours ago [-]
it is:

  (async function(oracle, punch, delay) {
    async function sleep(ms) {
      return new Promise((resolve, _) => {
        setTimeout(resolve, ms)
      })
    }
    
    for (let i = 0; i < 100; i++) {
      const state = oracle._state
      const block = oracle.predictNextPunch()
      oracle._state = state
      
      punch(block === 'L' ? 'R' : 'L')
      
      await sleep(delay)
    }
  })(oracle, punch, 150)
krussikas 4 hours ago [-]
I once coded a rock-paper-scissors game that you can play against a tree based matcher/learner, with symmetry between the options accounted for. Pretty similar idea-wise. To be honest, it was pretty hard to get a better than random score.
mike_hock 19 hours ago [-]
You should make one where you can play against the branch predictors of various processors.
rllj 19 hours ago [-]
I was just about to comment the same! Sadly, branch predictors are incredibly well guarded secrets, mostly.
user- 21 hours ago [-]
I am briefly in the top ten after completely misunderstanding the rules nicee
thih9 15 hours ago [-]
The ultimate unpredictability.
subarctic 11 hours ago [-]
Curious how a couple people got >100 hits on 100 punches
IdiotSavage 19 hours ago [-]
If you want to see what a random distribution looks like:

  jot -r 100 0 1 | rs -t 10
I noticed my "fake randomness" is lacking long sequences of the same key. I feel like I'm "predictable" when I press the same key 5 times in a row, yet that happens a lot in a truly random distribution.
brtkwr 20 hours ago [-]
Would be fairer if the frog occasionally got to throw a punch or two...
pjio 18 hours ago [-]
In the first round I struggled to notice if I missed. The frog punching back would be a good indicator. And I wouldn't feel so guilty for punching a pacifist frog.
sscaryterry 7 days ago [-]
That was fun, got up to 79 :)
AlexanderZ 7 days ago [-]
practice mode? the record for ranked matches is 64
sscaryterry 6 days ago [-]
Yes
momoraul 6 days ago [-]
46 and that was my ceiling. frogs smarter than me.
andai 4 days ago [-]
Woah, neat. Is this like, a Markov chain?
AlexanderZ 3 days ago [-]
a variation of Aaronson Oracle
digitalWestie 4 days ago [-]
Just wanted to give the little guy a hug
jmpavlec 19 hours ago [-]
Looks like the leaderboard was hacked unfortunately. Fun little concept.
ramon156 18 hours ago [-]
Leaderboard has been overtaken :(
19 hours ago [-]
jv22222 4 days ago [-]
How many pixels wide is the hit zone?
AlexanderZ 3 days ago [-]
you don't have to aim
vyrotek 4 days ago [-]
Bam! 50 on the first try. Fun.
AlexanderZ 3 days ago [-]
nice! try playing it the first thing every morning, it really wakes up your brain
ozyschmozy 3 days ago [-]
Why does a silly little online game need my email to send a one-time login code? What a strange experience
AlexanderZ 3 days ago [-]
because it doesn't? practice mode requires no login. if you want to play a ranked match then you'll need an account, how else could it work?
applfanboysbgon 21 hours ago [-]
> how else could it work?

Username+password. There is zero reason to require e-mail for account creation.

xorgun 20 hours ago [-]
[dead]
ozyschmozy 3 days ago [-]
Practice mode also has a popup telling you what to do which seems to negate the point of the game?
AlexanderZ 2 days ago [-]
it's the coach mode telling you which biases you have so you can fix them in a ranked match
uberex 6 days ago [-]
Free?!. Is there a "call us" SSO enabled plan?
Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact
Rendered at 01:50:57 GMT+0000 (Coordinated Universal Time) with Vercel.