Module to handle spacemaps

Hex Artifact Content
anonymous

Hex Artifact Content

Artifact 9cc8316bf6c5bfe049ccbcaeab2925b369b9cf306971c25f6a93264de666474e:


0000: 66 72 6f 6d 20 5f 5f 66 75 74 75 72 65 5f 5f 20  from __future__ 
0010: 69 6d 70 6f 72 74 20 70 72 69 6e 74 5f 66 75 6e  import print_fun
0020: 63 74 69 6f 6e 2c 20 75 6e 69 63 6f 64 65 5f 6c  ction, unicode_l
0030: 69 74 65 72 61 6c 73 0a 0a 66 72 6f 6d 20 73 70  iterals..from sp
0040: 61 63 65 6d 61 70 20 69 6d 70 6f 72 74 20 53 70  acemap import Sp
0050: 61 63 65 4d 61 70 0a 0a 64 65 66 20 74 65 73 74  aceMap..def test
0060: 28 29 3a 0a 09 64 65 66 20 63 68 65 63 6b 28 64  ():..def check(d
0070: 65 73 63 2c 20 63 6f 72 72 65 63 74 2c 20 72 65  esc, correct, re
0080: 73 75 6c 74 29 3a 0a 09 09 69 66 20 63 6f 72 72  sult):...if corr
0090: 65 63 74 20 3d 3d 20 72 65 73 75 6c 74 3a 0a 09  ect == result:..
00a0: 09 09 70 72 69 6e 74 28 27 50 41 53 53 45 44 3a  ..print('PASSED:
00b0: 27 2c 20 64 65 73 63 2c 20 27 3d 3d 27 20 2c 20  ', desc, '==' , 
00c0: 72 65 73 75 6c 74 2c 20 27 3d 3d 27 2c 20 63 6f  result, '==', co
00d0: 72 72 65 63 74 29 0a 09 09 65 6c 73 65 3a 0a 09  rrect)...else:..
00e0: 09 09 70 72 69 6e 74 28 27 46 41 49 4c 45 44 3a  ..print('FAILED:
00f0: 27 2c 20 64 65 73 63 2c 20 27 3d 3d 27 20 2c 20  ', desc, '==' , 
0100: 72 65 73 75 6c 74 2c 20 27 21 3d 27 2c 20 63 6f  result, '!=', co
0110: 72 72 65 63 74 29 0a 0a 09 63 68 65 63 6b 28 27  rrect)...check('
0120: 5b 34 3a 38 29 20 2d 20 5b 30 3a 32 29 2c 5b 33  [4:8) - [0:2),[3
0130: 3a 35 29 27 2c 20 53 70 61 63 65 4d 61 70 28 7b  :5)', SpaceMap({
0140: 35 3a 38 7d 29 2c 20 53 70 61 63 65 4d 61 70 28  5:8}), SpaceMap(
0150: 7b 34 3a 38 7d 29 20 2d 20 53 70 61 63 65 4d 61  {4:8}) - SpaceMa
0160: 70 28 7b 30 3a 32 2c 20 33 3a 35 7d 29 29 0a 09  p({0:2, 3:5}))..
0170: 63 68 65 63 6b 28 27 5b 34 3a 38 29 2c 5b 38 3a  check('[4:8),[8:
0180: 39 30 29 27 2c 20 53 70 61 63 65 4d 61 70 28 7b  90)', SpaceMap({
0190: 34 3a 39 30 7d 29 2c 20 53 70 61 63 65 4d 61 70  4:90}), SpaceMap
01a0: 28 7b 34 3a 38 2c 20 38 3a 39 30 7d 29 29 0a 09  ({4:8, 8:90}))..
01b0: 63 68 65 63 6b 28 27 5b 34 3a 38 29 2c 5b 38 30  check('[4:8),[80
01c0: 3a 39 30 29 20 2d 20 5b 30 3a 32 29 27 2c 20 53  :90) - [0:2)', S
01d0: 70 61 63 65 4d 61 70 28 7b 34 3a 38 2c 20 38 30  paceMap({4:8, 80
01e0: 3a 39 30 7d 29 2c 20 53 70 61 63 65 4d 61 70 28  :90}), SpaceMap(
01f0: 7b 34 3a 38 2c 20 38 30 3a 39 30 7d 29 20 2d 20  {4:8, 80:90}) - 
0200: 53 70 61 63 65 4d 61 70 28 7b 30 3a 32 7d 29 29  SpaceMap({0:2}))
0210: 0a 09 63 68 65 63 6b 28 27 5b 34 3a 38 29 2c 5b  ..check('[4:8),[
0220: 38 30 3a 39 30 29 20 2d 20 5b 30 3a 31 30 29 27  80:90) - [0:10)'
0230: 2c 20 53 70 61 63 65 4d 61 70 28 7b 38 30 3a 39  , SpaceMap({80:9
0240: 30 7d 29 2c 20 53 70 61 63 65 4d 61 70 28 7b 34  0}), SpaceMap({4
0250: 3a 38 2c 20 38 30 3a 39 30 7d 29 20 2d 20 53 70  :8, 80:90}) - Sp
0260: 61 63 65 4d 61 70 28 7b 30 3a 31 30 7d 29 29 0a  aceMap({0:10})).
0270: 09 63 68 65 63 6b 28 27 5b 34 3a 38 29 2c 5b 38  .check('[4:8),[8
0280: 30 3a 39 30 29 20 2d 20 5b 31 30 3a 32 30 29 27  0:90) - [10:20)'
0290: 2c 20 53 70 61 63 65 4d 61 70 28 7b 34 3a 38 2c  , SpaceMap({4:8,
02a0: 20 38 30 3a 39 30 7d 29 2c 20 53 70 61 63 65 4d   80:90}), SpaceM
02b0: 61 70 28 7b 34 3a 38 2c 20 38 30 3a 39 30 7d 29  ap({4:8, 80:90})
02c0: 20 2d 20 53 70 61 63 65 4d 61 70 28 7b 31 30 3a   - SpaceMap({10:
02d0: 32 30 7d 29 29 0a 09 63 68 65 63 6b 28 27 5b 34  20}))..check('[4
02e0: 3a 38 29 2c 5b 38 30 3a 39 30 29 20 2d 20 5b 31  :8),[80:90) - [1
02f0: 30 3a 32 30 29 27 2c 20 53 70 61 63 65 4d 61 70  0:20)', SpaceMap
0300: 28 7b 34 3a 38 7d 29 2c 20 53 70 61 63 65 4d 61  ({4:8}), SpaceMa
0310: 70 28 7b 34 3a 38 2c 20 38 30 3a 39 30 7d 29 20  p({4:8, 80:90}) 
0320: 2d 20 53 70 61 63 65 4d 61 70 28 7b 31 30 3a 31  - SpaceMap({10:1
0330: 30 30 7d 29 29 0a 09 63 68 65 63 6b 28 27 5b 32  00}))..check('[2
0340: 3a 39 29 20 2d 20 5b 31 30 3a 31 35 29 2c 5b 32  :9) - [10:15),[2
0350: 30 3a 34 38 29 2c 5b 36 30 3a 31 30 30 29 27 2c  0:48),[60:100)',
0360: 20 53 70 61 63 65 4d 61 70 28 7b 34 38 3a 20 36   SpaceMap({48: 6
0370: 30 2c 20 32 3a 20 31 30 2c 20 31 35 3a 20 32 30  0, 2: 10, 15: 20
0380: 7d 29 2c 20 53 70 61 63 65 4d 61 70 28 7b 32 3a  }), SpaceMap({2:
0390: 39 30 7d 29 20 2d 20 53 70 61 63 65 4d 61 70 28  90}) - SpaceMap(
03a0: 7b 31 30 3a 31 35 2c 20 32 30 3a 34 38 2c 20 36  {10:15, 20:48, 6
03b0: 30 3a 31 30 30 7d 29 29 0a 09 63 68 65 63 6b 28  0:100}))..check(
03c0: 27 5b 32 3a 35 29 20 61 6e 64 20 5b 31 30 3a 31  '[2:5) and [10:1
03d0: 35 29 27 2c 20 53 70 61 63 65 4d 61 70 28 7b 32  5)', SpaceMap({2
03e0: 3a 20 35 2c 20 31 30 3a 20 31 35 7d 29 2c 20 53  : 5, 10: 15}), S
03f0: 70 61 63 65 4d 61 70 28 7b 32 3a 20 35 7d 29 20  paceMap({2: 5}) 
0400: 61 6e 64 20 53 70 61 63 65 4d 61 70 28 7b 31 30  and SpaceMap({10
0410: 3a 20 31 35 7d 29 29 0a 09 72 65 74 75 72 6e 28  : 15}))..return(
0420: 4e 6f 6e 65 29 0a 0a 09 70 72 69 6e 74 28 53 70  None)...print(Sp
0430: 61 63 65 4d 61 70 28 7b 34 3a 38 7d 29 20 2d 20  aceMap({4:8}) - 
0440: 53 70 61 63 65 4d 61 70 28 7b 30 3a 34 7d 29 29  SpaceMap({0:4}))
0450: 0a 09 70 72 69 6e 74 28 53 70 61 63 65 4d 61 70  ..print(SpaceMap
0460: 28 7b 34 3a 38 7d 29 20 2d 20 53 70 61 63 65 4d  ({4:8}) - SpaceM
0470: 61 70 28 7b 30 3a 35 7d 29 29 0a 09 70 72 69 6e  ap({0:5}))..prin
0480: 74 28 53 70 61 63 65 4d 61 70 28 7b 34 3a 38 7d  t(SpaceMap({4:8}
0490: 29 20 2d 20 53 70 61 63 65 4d 61 70 28 7b 30 3a  ) - SpaceMap({0:
04a0: 38 7d 29 29 0a 09 70 72 69 6e 74 28 53 70 61 63  8}))..print(Spac
04b0: 65 4d 61 70 28 7b 34 3a 38 7d 29 20 2d 20 53 70  eMap({4:8}) - Sp
04c0: 61 63 65 4d 61 70 28 7b 30 3a 31 30 7d 29 29 0a  aceMap({0:10})).
04d0: 09 70 72 69 6e 74 28 53 70 61 63 65 4d 61 70 28  .print(SpaceMap(
04e0: 7b 34 3a 38 7d 29 20 2d 20 53 70 61 63 65 4d 61  {4:8}) - SpaceMa
04f0: 70 28 7b 34 3a 34 7d 29 29 0a 09 70 72 69 6e 74  p({4:4}))..print
0500: 28 53 70 61 63 65 4d 61 70 28 7b 34 3a 38 7d 29  (SpaceMap({4:8})
0510: 20 2d 20 53 70 61 63 65 4d 61 70 28 7b 34 3a 35   - SpaceMap({4:5
0520: 7d 29 29 0a 09 70 72 69 6e 74 28 53 70 61 63 65  }))..print(Space
0530: 4d 61 70 28 7b 34 3a 38 7d 29 20 2d 20 53 70 61  Map({4:8}) - Spa
0540: 63 65 4d 61 70 28 7b 34 3a 38 7d 29 29 0a 09 70  ceMap({4:8}))..p
0550: 72 69 6e 74 28 53 70 61 63 65 4d 61 70 28 7b 34  rint(SpaceMap({4
0560: 3a 38 7d 29 20 2d 20 53 70 61 63 65 4d 61 70 28  :8}) - SpaceMap(
0570: 7b 34 3a 31 30 7d 29 29 0a 09 70 72 69 6e 74 28  {4:10}))..print(
0580: 53 70 61 63 65 4d 61 70 28 7b 34 3a 38 7d 29 20  SpaceMap({4:8}) 
0590: 2d 20 53 70 61 63 65 4d 61 70 28 7b 35 3a 35 7d  - SpaceMap({5:5}
05a0: 29 29 0a 09 70 72 69 6e 74 28 53 70 61 63 65 4d  ))..print(SpaceM
05b0: 61 70 28 7b 34 3a 38 7d 29 20 2d 20 53 70 61 63  ap({4:8}) - Spac
05c0: 65 4d 61 70 28 7b 35 3a 38 7d 29 29 0a 09 70 72  eMap({5:8}))..pr
05d0: 69 6e 74 28 53 70 61 63 65 4d 61 70 28 7b 34 3a  int(SpaceMap({4:
05e0: 38 7d 29 20 2d 20 53 70 61 63 65 4d 61 70 28 7b  8}) - SpaceMap({
05f0: 35 3a 31 30 7d 29 29 0a 09 70 72 69 6e 74 28 53  5:10}))..print(S
0600: 70 61 63 65 4d 61 70 28 7b 34 3a 38 7d 29 20 2d  paceMap({4:8}) -
0610: 20 53 70 61 63 65 4d 61 70 28 7b 38 3a 38 7d 29   SpaceMap({8:8})
0620: 29 0a 09 70 72 69 6e 74 28 53 70 61 63 65 4d 61  )..print(SpaceMa
0630: 70 28 7b 34 3a 38 7d 29 20 2d 20 53 70 61 63 65  p({4:8}) - Space
0640: 4d 61 70 28 7b 38 3a 31 30 7d 29 29 0a 09 70 72  Map({8:10}))..pr
0650: 69 6e 74 28 53 70 61 63 65 4d 61 70 28 7b 34 3a  int(SpaceMap({4:
0660: 38 7d 29 20 2d 20 53 70 61 63 65 4d 61 70 28 7b  8}) - SpaceMap({
0670: 31 30 3a 31 30 7d 29 29 0a                       10:10})).