Bug 308175 - The Solver sometimes incorrectly displays "no longer winnable" in status bar
Summary: The Solver sometimes incorrectly displays "no longer winnable" in status bar
Status: RESOLVED DUPLICATE of bug 198016
Alias: None
Product: kpat
Classification: Applications
Component: solver (other bugs)
Version First Reported In: 3.6
Platform: Ubuntu Linux
: NOR normal
Target Milestone: ---
Assignee: Stephan Kulow
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2012-10-10 12:03 UTC by Uli Bellgardt
Modified: 2012-11-09 13:57 UTC (History)
3 users (show)

See Also:
Latest Commit:
Version Fixed/Implemented In:
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Uli Bellgardt 2012-10-10 12:03:20 UTC
Playing game "Simple Simon",  sometimes when I move a card, the status bar display changes from "Solver: This game is winnable." to "Solver: This game is no longer winnable", even if this last move was e.g. shifting a "9" from one "10" to another "10" on a different stack, so that it is a perfectly legal move to put the card back so that the status line changes again to "Solver: This game is winnable". 

I would expect that if the display is "... no longer winnable", there is no legal move to change the condition back to "... winnable" (except 'undo', which I do not consider as a legal move in this context).
This is because I think if a situation has a "winnable" successor, the situation itself is "winnable", and if a situation is "not winnable", there is no "winnable" successor.

Reproducible: Sometimes

Steps to Reproduce:
1. Start kpat and load following example - it is a saved Game:

<!DOCTYPE kpat>
<dealer options="" started="1" number="842956548" moves="36" id="9">
 <pile z="0" index="1"/>
 <pile z="0" index="2"/>
 <pile z="0" index="3"/>
 <pile z="0" index="4"/>
 <pile z="0" index="5">
  <card faceup="1" value="1" suit="0"/>
  <card faceup="1" value="6" suit="2"/>
  <card faceup="1" value="5" suit="0"/>
  <card faceup="1" value="12" suit="2"/>
  <card faceup="1" value="6" suit="0"/>
  <card faceup="1" value="2" suit="2"/>
  <card faceup="1" value="8" suit="1"/>
  <card faceup="1" value="1" suit="2"/>
 </pile>
 <pile z="0.01" index="6">
  <card faceup="1" value="9" suit="2"/>
  <card faceup="1" value="3" suit="2"/>
  <card faceup="1" value="2" suit="0"/>
  <card faceup="1" value="9" suit="3"/>
 </pile>
 <pile z="0.02" index="7">
  <card faceup="1" value="12" suit="3"/>
  <card faceup="1" value="9" suit="0"/>
  <card faceup="1" value="7" suit="2"/>
  <card faceup="1" value="5" suit="1"/>
  <card faceup="1" value="11" suit="2"/>
  <card faceup="1" value="11" suit="1"/>
  <card faceup="1" value="3" suit="0"/>
  <card faceup="1" value="13" suit="2"/>
  <card faceup="1" value="12" suit="1"/>
  <card faceup="1" value="11" suit="3"/>
  <card faceup="1" value="10" suit="3"/>
 </pile>
 <pile z="0.03" index="8">
  <card faceup="1" value="13" suit="0"/>
  <card faceup="1" value="12" suit="0"/>
  <card faceup="1" value="7" suit="1"/>
  <card faceup="1" value="1" suit="1"/>
  <card faceup="1" value="11" suit="0"/>
  <card faceup="1" value="10" suit="0"/>
 </pile>
 <pile z="0.04" index="9">
  <card faceup="1" value="7" suit="3"/>
  <card faceup="1" value="13" suit="1"/>
  <card faceup="1" value="4" suit="0"/>
  <card faceup="1" value="4" suit="3"/>
  <card faceup="1" value="3" suit="1"/>
  <card faceup="1" value="8" suit="0"/>
  <card faceup="1" value="7" suit="0"/>
  <card faceup="1" value="6" suit="3"/>
  <card faceup="1" value="5" suit="3"/>
  <card faceup="1" value="4" suit="2"/>
  <card faceup="1" value="3" suit="3"/>
  <card faceup="1" value="2" suit="3"/>
 </pile>
 <pile z="0.05" index="10">
  <card faceup="1" value="8" suit="3"/>
  <card faceup="1" value="2" suit="1"/>
  <card faceup="1" value="1" suit="3"/>
 </pile>
 <pile z="0.06" index="11">
  <card faceup="1" value="5" suit="2"/>
  <card faceup="1" value="4" suit="1"/>
  <card faceup="1" value="6" suit="1"/>
  <card faceup="1" value="10" suit="2"/>
  <card faceup="1" value="9" suit="1"/>
 </pile>
 <pile z="0.07000000000000001" index="12">
  <card faceup="1" value="8" suit="2"/>
 </pile>
 <pile z="0.08" index="13">
  <card faceup="1" value="13" suit="3"/>
 </pile>
 <pile z="0.09" index="14">
  <card faceup="1" value="10" suit="1"/>
 </pile>
</dealer>





2. See the status line is "Solver: This game is winnable".
3. Move the "Diamonds 9" onto the "Diamonds 10". 
4. See the status line now is "Solver: This game is no longer winnable".
5. Move the "Diamonds 9" back onto the "Heats 10".
6. See the status line is "Solver: This game is winnable" again.
Actual Results:  
Just with legal card moves, I can switch the state from "winnable" to "not winnable" and back to "winnable".

Expected Results:  
In this situation, I would not expect that the status line changes to "...no longer winnable" because there is a way back to "winnable".
Comment 1 peter.maloney 2012-11-02 21:43:19 UTC
I have a similar problem; I didn't know I could save xml at the time, but I saved screenshots. Also version 3.6.
Comment 2 Parker Coates 2012-11-09 13:57:11 UTC
Thank you for the detailed report and example save file, but the issue has already been reported.

*** This bug has been marked as a duplicate of bug 198016 ***