File tree Expand file tree Collapse file tree 2 files changed +40
-11
lines changed Expand file tree Collapse file tree 2 files changed +40
-11
lines changed Original file line number Diff line number Diff line change 63
63
VALID_ASSOC = {"left" , "right" , "either" }
64
64
65
65
66
- def char_from_number (number ) :
67
- """Convert numbers to strings by rendering it in base 26 using capital letters as digits."""
66
+ def char_from_number (number : int ) -> str :
67
+ """Convert a number to a string.
68
68
69
- base = 26
69
+ It renders it in base 26 using capital letters as digits.
70
+ For example: 3·26² + 2·26¹ + 0·26⁰ → "DCA"
70
71
71
- rval = ""
72
+ Parameters
73
+ ----------
74
+ number : int
75
+ The number to be converted.
72
76
73
- if number == 0 :
74
- rval = "A"
77
+ Returns
78
+ -------
79
+ str
80
+ The converted string.
81
+ """
82
+
83
+ base = 26
84
+
85
+ remainders = []
75
86
76
87
while number != 0 :
77
- remainder = number % base
78
- new_char = chr (ord ("A" ) + remainder )
79
- rval = new_char + rval
80
- number //= base
88
+ number , remainder = number // base , number % base
89
+ remainders .append (remainder )
81
90
82
- return rval
91
+ if not remainders :
92
+ remainders = [0 ]
93
+
94
+ return "" .join (chr (ord ("A" ) + r ) for r in remainders [::- 1 ])
83
95
84
96
85
97
@singledispatch
Original file line number Diff line number Diff line change 17
17
PatternPrinter ,
18
18
PPrinter ,
19
19
Print ,
20
+ char_from_number ,
20
21
debugprint ,
21
22
default_printer ,
22
23
get_node_by_id ,
30
31
from tests .graph .utils import MyInnerGraphOp , MyOp , MyVariable
31
32
32
33
34
+ @pytest .mark .parametrize (
35
+ "number,s" ,
36
+ [
37
+ (0 , "A" ),
38
+ (1 , "B" ),
39
+ (25 , "Z" ),
40
+ (26 , "BA" ),
41
+ (27 , "BB" ),
42
+ (3 * 26 ** 2 + 2 * 26 + 0 , "DCA" ),
43
+ (42421337 , "DOVPLX" ),
44
+ ],
45
+ )
46
+ def test_char_from_number (number : int , s : str ):
47
+ assert char_from_number (number ) == s
48
+
49
+
33
50
@pytest .mark .skipif (not pydot_imported , reason = "pydot not available" )
34
51
def test_pydotprint_cond_highlight ():
35
52
# This is a REALLY PARTIAL TEST.
You can’t perform that action at this time.
0 commit comments