Binary digits: Difference between revisions
Content added Content deleted
(Add min) |
(→{{header|Python}}: Added a variant using a more general showIntAtBase function) |
||
Line 2,898: | Line 2,898: | ||
=={{header|Python}}== |
=={{header|Python}}== |
||
===String.format() method=== |
|||
{{works with|Python|3.X and 2.6+}} |
{{works with|Python|3.X and 2.6+}} |
||
<lang python>>>> for i in range(16): print('{0:b}'.format(i)) |
<lang python>>>> for i in range(16): print('{0:b}'.format(i)) |
||
Line 2,917: | Line 2,918: | ||
1110 |
1110 |
||
1111</lang> |
1111</lang> |
||
===Built-in bin() function=== |
|||
{{works with|Python|3.X and 2.6+}} |
{{works with|Python|3.X and 2.6+}} |
||
<lang python>>>> for i in range(16): print(bin(i)) |
<lang python>>>> for i in range(16): print(bin(i)) |
||
Line 2,957: | Line 2,960: | ||
1110 |
1110 |
||
1111</lang> |
1111</lang> |
||
===Custom functions=== |
|||
Defined in terms of a more general '''showIntAtBase''' function: |
|||
<lang python>'''Binary strings for integers''' |
|||
# showBinary :: Int -> String |
|||
def showBinary(n): |
|||
'''Binary string representation of an integer.''' |
|||
def binaryChar(n): |
|||
return '1' if n != 0 else '0' |
|||
return showIntAtBase(2)(binaryChar)(n)('') |
|||
# TEST ------------------------------------------------- |
|||
# main :: IO() |
|||
def main(): |
|||
'''Test''' |
|||
print(unlines( |
|||
map(showBinary, enumFromTo(0)(16)) |
|||
)) |
|||
# GENERIC ------------------------------------------------- |
|||
# enumFromTo :: (Int, Int) -> [Int] |
|||
def enumFromTo(m): |
|||
'''Integer enumeration from m to n.''' |
|||
return lambda n: list(range(m, 1 + n)) |
|||
# showIntAtBase :: Int -> (Int -> String) -> Int -> String -> String |
|||
def showIntAtBase(base): |
|||
'''String representing a non-negative integer |
|||
using the base specified by the first argument, |
|||
and the character representation specified by the second. |
|||
The final argument is a (possibly empty) string to which |
|||
the numeric string will be prepended.''' |
|||
def wrap(toChr, n, rs): |
|||
def go(nd, r): |
|||
n, d = nd |
|||
r_ = toChr(d) + r |
|||
return go(divmod(n, base), r_) if 0 != n else r_ |
|||
return 'unsupported base' if 1 >= base else ( |
|||
'negative number' if 0 > n else ( |
|||
go(divmod(n, base), rs)) |
|||
) |
|||
return lambda toChr: lambda n: lambda rs: ( |
|||
wrap(toChr, n, rs) |
|||
) |
|||
# unlines :: [String] -> String |
|||
def unlines(xs): |
|||
'''A single string derived by the intercalation |
|||
of a list of strings with the newline character.''' |
|||
return '\n'.join(xs) |
|||
if __name__ == '__main__': |
|||
main()</lang> |
|||
=={{header|Racket}}== |
=={{header|Racket}}== |