Skip to content

Commit d00e419

Browse files
authored
Merge pull request #1 from Axelrod-Python/janga1997-SelfSteem
Fix strategy.
2 parents f7654bc + 04ed431 commit d00e419

File tree

2 files changed

+23
-25
lines changed

2 files changed

+23
-25
lines changed

axelrod/strategies/selfsteem.py

Lines changed: 14 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
from axelrod.actions import Action, Actions
22
from axelrod.player import Player
3+
from axelrod.random_ import random_choice
34

45
from math import pi, sin
5-
import random
66

77
C, D = Actions.C, Actions.D
88

@@ -12,21 +12,21 @@ class SelfSteem(Player):
1212
This strategy is based on the feeling with the same name.
1313
It is modeled on the sine curve(f = sin( 2* pi * n / 10 )), which varies
1414
with the current iteration.
15-
15+
1616
If f > 0.95, 'ego' of the algorithm is inflated; always defects.
1717
If 0.95 > abs(f) > 0.3, rational behavior; follows TitForTat algortithm.
1818
If 0.3 > f > -0.3; random behavior.
1919
If f < -0.95, algorithm is at rock bottom; always cooperates.
20-
20+
2121
Names:
22-
22+
2323
- SelfSteem: [Andre2013]_
2424
"""
2525

2626
name = 'SelfSteem'
2727
classifier = {
28-
'memory_depth': 1,
29-
'stochastic': False,
28+
'memory_depth': float("inf"),
29+
'stochastic': True,
3030
'makes_use_of': set(),
3131
'long_run_time': False,
3232
'inspects_source': False,
@@ -36,18 +36,15 @@ class SelfSteem(Player):
3636

3737
def strategy(self, opponent: Player) -> Action:
3838
turns_number = len(self.history)
39-
sine_value = sin( 2 * pi * turns_number / 10 )
40-
39+
sine_value = sin(2 * pi * turns_number / 10)
40+
4141
if sine_value > 0.95:
4242
return D
43-
44-
elif abs(sine_value) < 0.95 and abs(sine_value) > 0.3:
43+
44+
if abs(sine_value) < 0.95 and abs(sine_value) > 0.3:
4545
return opponent.history[-1]
46-
47-
elif sine_value < 0.3 and sine_value > -0.3:
46+
47+
if sine_value < 0.3 and sine_value > -0.3:
4848
return random_choice()
49-
50-
else:
51-
return C
52-
53-
49+
50+
return C

axelrod/tests/unit/test_selfsteem.py

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ class TestSelfSteem(TestPlayer):
1111
name = "SelfSteem"
1212
player = axelrod.SelfSteem
1313
expected_classifier = {
14-
'memory_depth': 1,
15-
'stochastic': False,
14+
'memory_depth': float("inf"),
15+
'stochastic': True,
1616
'makes_use_of': set(),
1717
'inspects_source': False,
1818
'manipulates_source': False,
@@ -21,17 +21,18 @@ class TestSelfSteem(TestPlayer):
2121

2222
def test_strategy(self):
2323
# Check for f > 0.95
24-
self.responses_test([D], [C] * 2 , [C] * 2 )
24+
self.responses_test([D], [C] * 2 , [C] * 2)
2525
self.responses_test([D], [C] * 13, [C] * 13)
26-
26+
2727
# Check for f < -0.95
2828
self.responses_test([C], [C] * 7, [C] * 7)
2929
self.responses_test([C], [C] * 18, [D] * 18)
30-
30+
31+
# Check for -0.3 < f < 0.3
32+
self.responses_test([C], [C] * 20, [C] * 20, seed=6)
33+
self.responses_test([D], [C] * 20, [D] * 20, seed=5)
34+
3135
# Check for 0.95 > abs(f) > 0.3
3236
self.responses_test([C], [C], [C])
3337
self.responses_test([D], [C] * 16, [D] * 16)
3438
self.responses_test([C], [D] * 9, [C] * 9)
35-
36-
37-

0 commit comments

Comments
 (0)