(1) Needless to say, the dictionary order based on the ASCII order is not what a real-world indexing software
wants. So, we want to implement the dictionary order of strings in the standard way (as opposed to the ASCII
way). I.e., we want the character order to be
(1.a) Write a function stdord(ch), where the value of ch is a digit ‘0’ – ‘9’ or a letter ‘A’ – ‘Z’, ‘a’ –
‘z’. The function should return the standard ordinal (non-negative integer) of ch in the range [0;61]. So, for a
digit d, stdord returns the mathematical value of d, and for ‘A’ it returns 10, for ‘a’ it’s 11, etc., for ‘Z’ it’s
60, and for ‘z’ it’s 61. The only Python functions allowed are ord(.) and chr(.). [Hint: Use the function
x 7! x when x is a digit. And map the upper-case letters to the even numbers in the range 10 – 60; to do this,
rst map ‘A’ – ‘Z’ to 0 – 25, then multiply by 2, then add 10. For the minuscules, proceed similarly to get
the odd numbers in the range 11 – 61.]
(1.b) Write a function stdcomp(s1, s2) which compares the strings s1 and s2 in the standard dictionary
order (as opposed to the ASCII-based dictionary order). We assume the strings contain only digits and letters.
The only auxiliary functions allowed for this are stdord(.) above, and len(.). [Hint: All you need to do is
implement the dictionary order (in the same way as we implemented the lexical order of lists), but we order
letters according to their stdord(.)-value, not according to their ascii value.]

Source link

Leave a Reply

Your email address will not be published. Required fields are marked *