Ad
  • Custom User Avatar

    So the random test as per my calc.. there are 4 rounds: 1st pong winner 2nd ping winner 3rd pong winner 4th ping winner since the result is even.

    Wrong.

    Rallies are:

    1. ping-pong-ping-pong-ping-pong-ping-ding-plik-funk-
      where ping serves, but eventually misses ==> no point ==> score ping=0:pong=0

    2. pong-ping-pong-ping-pong-ting-pang-bonk-
      where pong serves, but eventually misses ==> no point ==> score ping=0:pong=0

    3. pong-ping-pong-ping-pong-ping-pong-ping-boof-bong-ting-
      where pong serves, but eventually ping misses ==> 1 point to Mr Pong ==> score ping=0:pong=1

    4. pong-ping-pong-whak-wang
      where pong serves, but eventually misses ==> no point ==> score ping=0:pong=1

    RESULT -
    score: ping=0:pong=1 ==> Mr Pong is winner.

    ~

    AFAICT you seem to be going wrong for this Kata rule:

    To score a point the same player must both serve and win the rally.

  • Custom User Avatar

    Hmmm. I am confused. For Javascript there was no such "edge_cases_and_bugs" test having the noises like you gave, so I don't know why you mentioned that test name in your original mail. But, I have now just added that extra test case to "edge_cases and bugs" but it gave the expected answer as "pong".

    I suspect you have just fooled yourself (and then fooled me). I tried using your solution but importantly I added an extra console.log(sounds) to display what input it was processing. Doing this you can now see your solution has failed on one of the EXISTING "edge_cases_and_bugs" test.

    Log
    pong-ping-bink-pong-ping-donk-pong-ping-pong-bang
    ping-pong-bink-ping-pong-donk-pong-ping-pong-ping-bang
    ping-pong-aaaa-ping-pong-ping-aaaa
    expected 'pong' to equal 'ping'
    

    Here the expected answer was "ping" because:

    • ping-pong-aaaa - Ping serves and wins. Score ping=1:pong=0
    • ping-pong-ping-aaaa - Ping serves and hits last bad shot. Score is unchanged.
    • Final score is ping=1:pong=0; Ping is winner.

    IMO your code is flawed somewhere.

  • Custom User Avatar

    Hmmm... at the end I think the scores are even (1:1)

    • ping-pong-ping-voom-wizz -> ping serves, ping misses; no point; score: ping=0,pong=0
    • ping-wizz -> ping serves and misses; no point; score=ping=0,pong=0
    • ping-pong-ping-pong-ping-pong-foom-bang-plop -> ping serves, pong misses; ping scores a point; score: ping=1,pong=0
    • pong-ping-pong-ping-pong-ping-pong-ping-pong-ping-klak-bing -> pong serves. ping misses; pong scores a point; score: ping=1,pong=1;

    So the rule is:

    If scores are even, then the winner is the player who did NOT hit the final bad shot.

    Since "ping" hit that last bad shot so "pong" should be winner.

    Maybe it is a bug. Please tell me what language this is.