source: liacs/pm/qt_test/test.cc@ 5

Last change on this file since 5 was 2, checked in by Rick van der Zwet, 15 years ago

Initial import of data of old repository ('data') worth keeping (e.g. tracking
means of URL access statistics)

  • Property svn:executable set to *
File size: 2.2 KB
RevLine 
[2]1#include <iostream>
2
3using namespace std;
4int stapel[3];
5
6
7//Controleer of er precies 1 stapel is met een waarde lager dan 2
8//Begin standaard met true en controleer op foute waardes
9bool afgelopen() {
10 bool einde = true;
11 int stapelsMetWaarde = 0;
12 int totaalWaarde = 0;
13 for( int ctr=0; ctr < 3; ctr++ ) {
14 if( stapel[ctr] > 0 ) {
15 totaalWaarde = totaalWaarde + stapel[ctr];
16 stapelsMetWaarde++;
17 if( (totaalWaarde > 2) or (stapelsMetWaarde > 1) ) {
18 einde = false;
19 break;
20 } //end if
21 } //end if not 0
22 } //end loop
23 return(einde);
24}
25
26
27//Controleer of een pad zeker winnend is
28bool winstRecur( bool aanBeurt ) {
29 bool winst1 = false;
30 bool winst2 = false;
31 aanBeurt = not(aanBeurt);
32 if( afgelopen() ) {
33 if( aanBeurt ) {
34 return(true);
35 }
36 else {
37 return(false);
38 }
39 }
40 else {
41 for( int ctr=0; ctr < 3; ctr++ ) {
42 if( stapel[ctr] > 0 ) {
43 if( stapel[ctr] > 1 ) {
44 stapel[ctr] = stapel[ctr] - 2;
45 winst2 = winstRecur( aanBeurt );
46 stapel[ctr] = stapel[ctr] + 2;
47 } //end if (test met 2)
48 stapel[ctr] = stapel[ctr] - 1;
49 winst1 = winstRecur( aanBeurt );
50 stapel[ctr] = stapel[ctr] + 1;
51 } //end if (groter dan 0)
52 if( winst1 & winst2 ) {
53 return(true);
54 } //end if (winst test)
55 } //end for loop
56 return(false);
57 }
58}
59
60
61//Deze functie creert alle mogelijk vervolg zetten, en test deze op
62//winnend
63void winnend( int & stapelNummer, int & aantal ) {
64 bool winst;
65 for( int ctr=0; ctr < 3; ctr++ ) {
66 if( stapel[ctr] > 0 ) {
67 if( stapel[ctr] > 1) {
68 stapel[ctr] = stapel[ctr] - 2;
69 winst = winstRecur( "false" );
70 stapel[ctr] = stapel[ctr] + 2;
71 if( winst ) {
72 stapelNummer = ctr;
73 aantal = 2;
74 return;
75 } //winst 2
76 }
77 stapel[ctr] = stapel[ctr] - 1;
78 winst = winstRecur( "false" );
79 stapel[ctr] = stapel[ctr] + 1;
80 if( winst ) {
81 stapelNummer = ctr;
82 aantal = 1;
83 return;
84 } //winst 1
85 } //not null
86 } //loop for
87 stapelNummer = -1;
88 aantal = -1;
89} //end winnnend
90
91
92int main() {
93 stapel[0] = 4;
94 stapel[1] = 0;
95 stapel[2] = 0;
96 int a, t;
97 winnend(a,t);
98 cout << a << " " << t;
99}
100
Note: See TracBrowser for help on using the repository browser.