-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path24_game_solver.cpp
114 lines (95 loc) · 2.75 KB
/
24_game_solver.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
#include<bits/stdc++.h>
#include<conio.h>
using namespace std;
int angka[4];
int urutanangka[4];
char tanda[3], simbol[] = {'+','-','*','/'};
bool check;
int hitung(int x, int y, char z)
{
if(z == '+')
return x+y;
else if(z == '-')
return x-y;
else if(z == '*')
return x*y;
else if(z == '/')
{
if(y == 0)
return 999;
else if(x % y != 0)
return 999;
else return x/y;
}
}
void operation()
{
if(hitung(hitung(hitung(urutanangka[0], urutanangka[1], tanda[0]), urutanangka[2], tanda[1]), urutanangka[3], tanda[2]) == 24.0){
check = true;
cout<<"(("<<urutanangka[0]<<tanda[0]<<urutanangka[1]<<')'<<tanda[1]<<urutanangka[2]<<')'<<tanda[2]<<urutanangka[3]<<" = 24"<<endl;
}
if(hitung(hitung(urutanangka[0], urutanangka[1], tanda[0]), hitung(urutanangka[2], urutanangka[3], tanda[2]), tanda[1]) == 24.0){
check = true;
cout<<"("<<urutanangka[0]<<tanda[0]<<urutanangka[1]<<')'<<tanda[1]<<'('<<urutanangka[2]<<tanda[2]<<urutanangka[3]<<") = 24"<<endl;
}
if(hitung(hitung(urutanangka[0], hitung(urutanangka[1], urutanangka[2], tanda[1]), tanda[0]), urutanangka[3], tanda[2]) == 24.0){
check = true;
cout<<"("<<urutanangka[0]<<tanda[0]<<'('<<urutanangka[1]<<tanda[1]<<urutanangka[2]<<"))"<<tanda[2]<<urutanangka[3]<<" = 24"<<endl;
}
if(hitung(urutanangka[0], hitung(hitung(urutanangka[1], urutanangka[2], tanda[1]), urutanangka[3], tanda[2]), tanda[0]) == 24.0){
check = true;
cout<<urutanangka[0]<<tanda[0]<<"(("<<urutanangka[1]<<tanda[1]<<urutanangka[2]<<')'<<tanda[2]<<urutanangka[3]<<") = 24"<<endl;
}
if(hitung(urutanangka[0], hitung(urutanangka[1], hitung(urutanangka[2], urutanangka[3], tanda[2]), tanda[1]), tanda[0]) == 24.0){
check = true;
cout<<urutanangka[0]<<tanda[0]<<'('<<urutanangka[1]<<tanda[1]<<'('<<urutanangka[2]<<tanda[2]<<urutanangka[3]<<")) = 24"<<endl;
}
}
void random_urutan_angka()
{
for(int a=0; a<4; a++)
for(int b=0; b<4; b++)
{
if(b==a) continue;
for(int c=0; c<4; c++)
{
if(c==a or c==b) continue;
for(int d=0; d<4; d++)
{
if(d==a or d==b or d==c) continue;
urutanangka[0] = angka[a];
urutanangka[1] = angka[b];
urutanangka[2] = angka[c];
urutanangka[3] = angka[d];
operation();
}
}
}
}
void menentukan_tanda_operasi_hitung()
{
for(int a=0; a<4; a++)
for(int b=0; b<4; b++)
for(int c=0; c<4; c++)
{
tanda[0] = simbol[a];
tanda[1] = simbol[b];
tanda[2] = simbol[c];
random_urutan_angka();
}
}
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
cout<<"Input 4 numbers :"<<endl;
while(cin>>angka[0]>>angka[1]>>angka[2]>>angka[3])
{
check = false;
menentukan_tanda_operasi_hitung();
if(check == false)
cout<<"No solution found"<<endl;
cout<<endl;
cout<<"Input 4 numbers :"<<endl;
}
}