From 6e5d1be323f9fbba59a3ba0da2c5e2469bf860c5 Mon Sep 17 00:00:00 2001 From: Tom Ritchford Date: Mon, 23 Dec 2024 19:57:41 +0100 Subject: [PATCH] Modify nmr/nmr.py, test/test_nmr.py, test/test_sign.py --- nmr/nmr.py | 24 ++++++++++++------------ test/test_nmr.py | 2 +- test/test_sign.py | 2 +- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/nmr/nmr.py b/nmr/nmr.py index fade936..7933416 100644 --- a/nmr/nmr.py +++ b/nmr/nmr.py @@ -53,22 +53,11 @@ def __init__( self._count_words = count_words.CountWords(self.n).count self.inverse = {w: i for i, w in enumerate(self.words)} - def _encode_to_name(self, num: int) -> Sequence[str]: - if num < 0: - raise ValueError("Only accepts non-negative numbers") - return [self.words[i] for i in self._to_digits(num)] - - def decode_from_name(self, name: Sequence[str]) -> int: - name = list(name) - _check_dupes(name) - indexes = [self.inverse[w] for w in reversed(name)] - return self._from_digits(list(self._redupe(indexes))[::-1]) - def is_name(self, s: Sequence[str]) -> bool: return all(i in self.inverse for i in s) def name_to_type(self, name: Sequence[str]) -> str: - index = self.decode_from_name(name) + index = self._decode_from_name(name) return types.index_to_type(index) def type_to_name(self, s: str) -> Sequence[str]: @@ -79,6 +68,17 @@ def type_to_name(self, s: str) -> Sequence[str]: def n(self) -> int: return len(self.words) + def _encode_to_name(self, num: int) -> Sequence[str]: + if num < 0: + raise ValueError("Only accepts non-negative numbers") + return [self.words[i] for i in self._to_digits(num)] + + def _decode_from_name(self, name: Sequence[str]) -> int: + name = list(name) + _check_dupes(name) + indexes = [self.inverse[w] for w in reversed(name)] + return self._from_digits(list(self._redupe(indexes))[::-1]) + def _to_digits(self, num: int) -> list[int]: it = (i + 1 for i in range(self.n) if self._count_words(i + 1) > num) if (word_count := next(it, None)) is None: diff --git a/test/test_nmr.py b/test/test_nmr.py index 8bcf27c..91155b1 100644 --- a/test/test_nmr.py +++ b/test/test_nmr.py @@ -56,4 +56,4 @@ def test_stability(number, words): if actual_words != words: print(actual_words) assert actual_words == words - assert nmr.decode_from_name(words) == number + assert nmr._decode_from_name(words) == number diff --git a/test/test_sign.py b/test/test_sign.py index f10af70..9b2ee96 100644 --- a/test/test_sign.py +++ b/test/test_sign.py @@ -11,7 +11,7 @@ def test_all_unsigned(n): for i in range(m): words = N._encode_to_name(i) assert len(words) == len(set(words)) - assert N.decode_from_name(words) == i, str(words) + assert N._decode_from_name(words) == i, str(words) err = "Only accepts non-negative numbers" with pytest.raises(ValueError, match=err):