Saturday, September 30, 2023
HomeSoftware EngineeringMethods to Convert Integer to Whitespace format in Python

Methods to Convert Integer to Whitespace format in Python


The problem

Hereinafter, [space] refers to " "[tab] refers to "t", and [LF] refers to "n" for illustrative functions. This doesn’t imply that you should use these placeholders in your resolution.

In esoteric language known as Whitespace, numbers are represented within the following format:

  • first character represents the signal: [space] for plus, [tab] for minus;
  • characters after that and till [LF] are the binary illustration of the integer: [space] for 0, [tab] for 1.
  • characters after which might be the binary illustration of absolutely the worth of the quantity, with [space] for 0, [tab] for 1, the rightmost bit is the least significand bit, and no main zero bits.
  • the binary illustration is straight away adopted by [LF].

Notes

  • Legitimate Whitespace quantity should all the time have at the least two characters: an indication and the terminator. In case there are solely two characters, the quantity is the same as zero.
  • For the needs of this problem, zero should all the time be represented as [space][LF].
  • In Whitespace, solely house, tabulation and linefeed are significant characters. All different characters are ignored. Nonetheless, for the needs of this easy problem, please don’t add another characters within the output.
  • On this problem, enter will all the time be a sound adverse or optimistic integer.
  • On your comfort, on this problem we are going to use unbleach() operate when evaluating your outcomes. This operate replaces whitespace characters with [space][tab], and [LF] to make fail messages extra apparent. You may see the way it works in Instance Take a look at Circumstances.

Examples

  • 1 in Whitespace is " tn".
  • “ in Whitespace is " n".
  • -1 in Whitespace is "ttn".
  • 2 in Whitespace is " t n".
  • -3 in Whitespace is "tttn".

The answer in Python code

Choice 1:

from string import maketrans

def whitespace_number(n):
    return (' n' if n == 0 else
        '{:+b}n'.format(n).translate(maketrans('+-01', ' t t')))

Choice 2:

def whitespace_number(n):
    signal = ' t'[n < 0]
    quantity = bin(abs(n))[2:].change('0', ' ').change('1', 't') if n else ''
    return signal + quantity + 'n'

Choice 3:

whitespace_number=lambda n:f"{n:+b}n".translate(str.maketrans("+-01"," t"*2))[n==0:]

Take a look at instances to validate our resolution

def unbleach(ws):
    return ws.change(' ', '[space]').change('t', '[tab]').change('n', '[LF]')

take a look at.assert_equals(unbleach(whitespace_number( 1)), unbleach(   " tn"))
take a look at.assert_equals(unbleach(whitespace_number( 0)), unbleach(     " n"))
take a look at.assert_equals(unbleach(whitespace_number(-1)), unbleach(  "ttn"))
take a look at.assert_equals(unbleach(whitespace_number( 2)), unbleach(  " t n"))
take a look at.assert_equals(unbleach(whitespace_number(-3)), unbleach("tttn"))
RELATED ARTICLES

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Most Popular

Recent Comments