Skip to content

Commit cf53951

Browse files
committed
-
1 parent 03c2edc commit cf53951

File tree

3 files changed

+21
-14
lines changed

3 files changed

+21
-14
lines changed

source_py3/python_toolbox/math_tools/sequences.py

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,9 @@ def shitfuck(k, recurrence_counter):
6767
recurrence_counter = \
6868
nifty_collections.FrozenCrateCounter(recurrence_counter)
6969
if k == 1:
70-
assert recurrence_counter # Works because `FrozenCounter` implements
71-
# `__bool__`.
70+
assert recurrence_counter
71+
# (Works because `FrozenCrateCounter` has a functioning `__bool__`,
72+
# unlike Python's `Counter`.)
7273
return 1
7374
try:
7475
return _shitfuck_cache[(k, recurrence_counter)]
@@ -80,7 +81,8 @@ def shitfuck(k, recurrence_counter):
8081
while len(levels) < k and current_reccurence_counters:
8182
k_ = k - len(levels)
8283
levels.append(
83-
{recurrence_counter_: recurrence_counter_.get_sub_counters_counter()
84+
{recurrence_counter_: recurrence_counter_.
85+
get_sub_counters_for_one_crate_removed()
8486
for recurrence_counter_ in current_reccurence_counters
8587
if (k_, recurrence_counter_) not in _shitfuck_cache
8688
})
@@ -116,8 +118,9 @@ def catshit(k, recurrence_counter):
116118
recurrence_counter = \
117119
nifty_collections.FrozenCrateCounter(recurrence_counter)
118120
if k == 1:
119-
assert recurrence_counter # Works because `FrozenCounter` implements
120-
# `__bool__`.
121+
assert recurrence_counter
122+
# (Works because `FrozenCrateCounter` has a functioning `__bool__`,
123+
# unlike Python's `Counter`.)
121124
return 1
122125
try:
123126
return _catshit_cache[(k, recurrence_counter)]
@@ -129,24 +132,24 @@ def catshit(k, recurrence_counter):
129132
while len(levels) < k and current_reccurence_counters:
130133
k_ = k - len(levels)
131134
levels.append(
132-
{recurrence_counter_: recurrence_counter_.get_sub_counters_counter()
135+
{recurrence_counter_: recurrence_counter_.
136+
get_sub_counters_for_one_crate_and_previous_piles_removed()
133137
for recurrence_counter_ in current_reccurence_counters
134-
if (k_, recurrence_counter_) not in _catshit_cache
138+
if (k_, recurrence_counter_) not in _shitfuck_cache
135139
})
136140
current_reccurence_counters = \
137141
set(itertools.chain(*levels[-1].values()))
138142

139143
# The last level is calculated. Time to make our way up.
140144
for k_, level in enumerate(reversed(levels), (k - len(levels) + 1)):
141145
if k_ == 1:
142-
for recurrence_counter_, sub_counters_counter in level.items():
143-
_catshit_cache[(k_, recurrence_counter_)] = \
144-
recurrence_counter_.n_elements
146+
for recurrence_counter_, sub_counters in level.items():
147+
_catshit_cache[(k_, recurrence_counter_)] = len(sub_counters)
145148
else:
146-
for recurrence_counter_, sub_counters_counter in level.items():
149+
for recurrence_counter_, sub_counters in level.items():
147150
_catshit_cache[(k_, recurrence_counter_)] = sum(
148151
(_catshit_cache[(k_ - 1, sub_counter)] * factor for
149-
sub_counter, factor in sub_counters_counter.items())
152+
sub_counter, factor in sub_counters.items())
150153
)
151154

152155
return _catshit_cache[(k, recurrence_counter)]

source_py3/python_toolbox/nifty_collections/frozen_crate_counter.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ def get_sub_counters_for_one_crate_and_previous_piles_removed(self):
4848
for i in range(value_of_key_to_reduce):
4949
sub_counters.append(
5050
FrozenCrateCounter(
51-
{key: ((value - i) if key == key_to_reduce else value)
51+
{key: (i if key == key_to_reduce else value)
5252
for key, value in sub_counter_prototype}
5353
)
5454
)

source_py3/test_python_toolbox/test_math_tools/test_sequences.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11

22

3-
from python_toolbox.math_tools import abs_stirling, shitfuck
3+
from python_toolbox.math_tools import abs_stirling, shitfuck, catshit
44

55

66
def test_abs_stirling():
@@ -19,4 +19,8 @@ def test_abs_stirling():
1919

2020
def test_shitfuck():
2121
assert shitfuck(3, (3, 1, 1)) == 13
22+
23+
24+
def test_catshit():
25+
assert catshit(3, (3, 1, 1)) == 13
2226

0 commit comments

Comments
 (0)