Entry 958
Will's make_path function
Submitted by S.Lott
on Aug. 25, 2008 at 3:02 p.m.
Language: Python. Code size: 1.8 KB.
#!/usr/bin/env python """http://www.willmcgugan.com/2008/08/25/a-python-challenge-better-than-rentacoder/""" import os.path def make_path( n ): """Transform file number n into a sequence of numbers in the range 0..99. Then transform the sequence of numbers into a file path. """ base100 = [] while n >= 100: p = n % 100 n = n // 100 base100.append( p ) if n > 0: base100.append( n ) elif len(base100) == 0: base100.append( n ) base100.reverse() return os.path.join( *[ "f%02d" % d for d in base100 ] ) def test(): import unittest class TestMakePath( unittest.TestCase ): def test_0( self ): self.assertEquals( "f00", make_path( 0 ) ) self.assertEquals( "f01", make_path( 1 ) ) self.assertEquals( "f98", make_path( 98 ) ) self.assertEquals( "f99", make_path( 99 ) ) def test_1( self ): self.assertEquals( "f01/f00", make_path( 100 ) ) self.assertEquals( "f01/f01", make_path( 101 ) ) self.assertEquals( "f01/f98", make_path( 198 ) ) self.assertEquals( "f01/f99", make_path( 199 ) ) def test_2( self ): self.assertEquals( "f02/f00", make_path( 200 ) ) self.assertEquals( "f02/f01", make_path( 201 ) ) self.assertEquals( "f02/f98", make_path( 298 ) ) self.assertEquals( "f02/f99", make_path( 299 ) ) def test_10( self ): self.assertEquals( "f99/f98", make_path( 9998 ) ) self.assertEquals( "f99/f99", make_path( 9999 ) ) self.assertEquals( "f01/f00/f00", make_path( 10000 ) ) self.assertEquals( "f01/f00/f01", make_path( 10001 ) ) suite= unittest.makeSuite(TestMakePath) runner= unittest.TextTestRunner() runner.run(suite) if __name__ == "__main__": test()
This snippet took 0.01 seconds to highlight.
Back to the Entry List or Home.