$ od -c -N 50000 [phylum]<LISP>KOTO>Lispusers>COMPARETEXT.TEDIT!1 0000000 X E R O X \t C O M P A R E T E X 0000020 T \r 2 \r \r 4 \r \r 1 \r \r C O M P A 0000040 R E T E X T \r 1 \r \r 4 \r \r B y : 0000060 M i c h a e l S a n n e l 0000100 l a ( S a n n e l l a . p a @ 0000120 X e r o x ) \r U s e s T E D I 0000140 T . D C O M , G R A P H E R . 0000160 D C O M \r I N T R O D U C T I O 0000200 N \r C O M P A R E T E X T i s 0000220 a r a t h e r n o n - s t 0000240 a n d a r d t e x t f i l e 0000260 c o m p a r i s o n p r o g 0000300 r a m w h i c h t r i e s 0000320 t o a d d r e s s t w o p 0000340 r o b l e m s : ( 1 ) t h e 0000360 p r o b l e m o f d e t e 0000400 c t i n g c e r t a i n t y 0000420 p e s o f c h a n g e s , 0000440 s u c h a s d e t e c t i n 0000460 g w h e n a p a r a g r a 0000500 p h i s m o v e d t o a 0000520 d i f f e r e n t p a r t 0000540 o f a d o c u m e n t ; a 0000560 n d ( 2 ) t h e p r o b l 0000600 e m o f s h o w i n g t h 0000620 e u s e r w h a t c h a n 0000640 g e s h a v e b e e n m a 0000660 d e i n a d o c u m e n t 0000700 . \r T h e t e x t c o m p a 0000720 r i s o n a l g o r i t h m 0000740 i s a n a d a p t a t i o n 0000760 o f t h e o n e d e s c 0001000 r i b e d i n t h e a r t 0001020 i c l e " A T e c h n i q u 0001040 e f o r I s o l a t i n g 0001060 D i f f e r e n c e s B e t w 0001100 e e n F i l e s " b y P a 0001120 u l H e c k e l , i n C A 0001140 C M , V 2 1 , # 4 , A p r 0001160 i l 1 9 7 8 . T h e m a 0001200 i n i d e a i s t o b r 0001220 e a k e a c h o f t h e 0001240 t w o t e x t f i l e s i 0001260 n t o " c h u n k s " ( w o 0001300 r d s , l i n e s , p a r a 0001320 g r a p h s , . . . ) , h a 0001340 s h e a c h c h u n k i n 0001360 t o a h a s h v a l u e , 0001400 a n d m a t c h u p c h 0001420 u n k s w i t h t h e s a 0001440 m e h a s h v a l u e i n 0001460 t h e t w o f i l e s . 0001500 T h i s m e t h o d d e t 0001520 e c t s s w i t c h i n g t 0001540 w o c h u n k s , o r m o 0001560 v i n g a c h u n k a n y 0001600 w h e r e e l s e i n t h 0001620 e d o c u m e n t . \r C O M P 0001640 A R I N G T E X T F I L E S 0001660 \r T w o t e x t f i l e s 0001700 c a n b e c o m p a r e d 0001720 w i t h t h e f o l l o w i 0001740 n g f u n c t i o n : \r ( C O 0001760 M P A R E T E X T N E W F I 0002000 L E N A M E O L D F I L E N A 0002020 M E H A S H . T Y P E G R A 0002040 P H . R E G I O N ) \t [ F u n c 0002060 t i o n ] \r N E W F I L E N A M 0002100 E a n d O L D F I L E N A M 0002120 E a r e t h e n a m e s 0002140 o f t h e t w o f i l e s 0002160 t o c o m p a r e . T h 0002200 e o r d e r i s n o t i 0002220 m p o r t a n t , e x c e p t 0002240 t h a t i n t h e r e s 0002260 u l t i n g g r a p h t h e 0002300 N E W F I L E N A M E i n f 0002320 o r m a t i o n w i l l a p 0002340 p e a r o n t h e l e f t 0002360 , a n d t h e O L D F I L 0002400 E N A M E i n f o o n t h 0002420 e r i g h t . \r H A S H . T Y 0002440 P E d e t e r m i n e s h o 0002460 w " c h u n k s " o f t e 0002500 x t a r e d e f i n e d ; 0002520 h o w f i n e - g r a i n e d 0002540 t h e c o m p a r i s o n 0002560 w i l l b e . T h i s c 0002600 a n b e P A R A t o h a 0002620 s h b y p a r a g r a p h s 0002640 ( d e l i m i t e d b y t 0002660 w o c o n s e c u t i v e C 0002700 R s ) , L I N E t o h a s 0002720 h b y l i n e s ( d e l i 0002740 m i t e d b y o n e C R ) 0002760 , o r W O R D t o h a s 0003000 h w o r d s ( d e l i m i t 0003020 e d b y a n y w h i t e 0003040 s p a c e ) . H A S H . T Y 0003060 P E = N I L d e f a u l t s 0003100 t o P A R A . \r G R A P H . R 0003120 E G I O N i s t h e r e g 0003140 i o n o n t h e d i s p l 0003160 a y s c r e e n u s e d f 0003200 o r t h e f i l e c o m p 0003220 a r i s o n g r a p h . I 0003240 f G R A P H . R E G I O N = N 0003260 I L , t h e s y s t e m a 0003300 s k s t h e u s e r t o 0003320 s p e c i f y a r e g i o n 0003340 . I f G R A P H . R E G I 0003360 O N = T , a r e g i o n i 0003400 n t h e l o w e r l e f t 0003420 c o r n e r i s u s e d . 0003440 \r C O M P A R E T E X T c r e 0003460 a t e s a g r a p h w i t 0003500 h t w o c o l u m n s . 0003520 E a c h c o l u m n c o n t 0003540 a i n s t h e f i l e n a 0003560 m e o f o n e o f t h e 0003600 f i l e s , a n d l i s t 0003620 s t h e c h u n k s f r o 0003640 m t h a t f i l e . E a 0003660 c h c h u n k i s r e p r 0003700 e s e n t e d b y a n a t 0003720 o m N N N : M M M , w h e r 0003740 e N N N i s t h e f i l 0003760 e p o i n t e r o f t h e 0004000 b e g i n n i n g o f t h 0004020 e c h u n k w i t h i n t 0004040 h e f i l e , a n d M M M 0004060 i s t h e l e n g t h o 0004100 f t h e c h u n k . L i 0004120 n e s a r e d r a w n f r 0004140 o m o n e c o l u m n t o 0004160 t h e o t h e r t o s h 0004200 o w w h i c h c h u n k s 0004220 i n o n e f i l e a r e 0004240 t h e s a m e a s t h o s 0004260 e i n t h e o t h e r f 0004300 i l e . C h u n k s w i t 0004320 h n o l i n e s g o i n g 0004340 t o t h e m d o n o t 0004360 e x i s t i n t h e o t h 0004400 e r f i l e . [ N o t e : 0004420 a s e r i e s o f c h u 0004440 n k s i n o n e f i l e 0004460 w h i c h a r e t h e s a 0004500 m e a s a s e r i e s o 0004520 f c h u n k s i n t h e 0004540 o t h e r f i l e a r e m 0004560 e r g e d i n t o o n e b 0004600 i g c h u n k . A s e r 0004620 i e s o f u n c o n n e c t 0004640 e d c h u n k s i s a l s 0004660 o m e r g e d . ] \r P r e s s 0004700 i n g t h e L E F T m o u 0004720 s e b u t t o n o v e r o 0004740 n e o f t h e c h u n k 0004760 n o d e s c a u s e s t h e 0005000 n o d e t o b e b o x e 0005020 d , a n d a T e d i t w 0005040 i n d o w t o b e o p e n 0005060 e d o n t h e f i l e , 0005100 w i t h t h e a p p r o p r 0005120 i a t e t e x t s e l e c t 0005140 e d . I f a T e d i t 0005160 w i n d o w t o t h e f i 0005200 l e i s a l r e a d y a c 0005220 t i v e , t h e s e l e c t 0005240 i o n i s s i m p l y m o 0005260 v e d . \r P r e s s i n g t h 0005300 e M I D D L E m o u s e b 0005320 u t t o n o v e r a c h u 0005340 n k n o d e r a i s e s a 0005360 p o p - u p m e n u w i t 0005400 h t h e i t e m s : P A R 0005420 A , L I N E , a n d W O R 0005440 D . I f o n e o f t h 0005460 e s e i s s e l e c t e d , 0005500 C O M P A R E T E X T i s 0005520 c a l l e d t o c o m p a r 0005540 e t h e s e l e c t e d c 0005560 h u n k w i t h t h e l a 0005600 s t s e l e c t e d c h u n 0005620 k ( t h e o n e t h a t 0005640 i s b o x e d ) , u s i n g 0005660 t h e h a s h t y p e s 0005700 e l e c t e d , a n d c r e 0005720 a t e a n e w g r a p h 0005740 w i n d o w . \r I f t h e m 0005760 o u s e i s b u t t o n e d 0006000 o u t s i d e o f t h e 0006020 P A R A / L I N E / W O R D m 0006040 e n u , n o c o m p a r i s 0006060 o n i s d o n e , b u t 0006100 t h e s e l e c t e d n o d 0006120 e i s b o x e d . T h e 0006140 P A R A / L I N E / W O R D 0006160 m e n u i s a l w a y s b 0006200 r o u g h t u p a l i t t 0006220 l e a w a y f r o m t h e 0006240 c u r s o r , s o p r e s 0006260 s i n g d o u b l e - M I D D 0006300 L E - b u t t o n o v e r a 0006320 c h u n k n o d e i s a 0006340 w a y t o c h a n g e t 0006360 h e b o x e d n o d e w i 0006400 t h o u t c a l l i n g T e 0006420 d i t . \r I m p o r t a n t n 0006440 o t e : w h i t e s p a c 0006460 e ( s p a c e , t a b , C 0006500 R , L F ) i s u s e d t 0006520 o d e l i m i t c h u n k s 0006540 , b u t i s i g n o r e d 0006560 w h e n c o m p u t i n g 0006600 t h e h a s h v a l u e o 0006620 f a c h u n k . T h e r 0006640 e f o r e , i f t w o p a 0006660 r a g r a p h s a r e i d e 0006700 n t i c a l e x c e p t t h 0006720 a t o n e h a s a f e w 0006740 e x t r a C R s a f t e r 0006760 i t , t h e y w i l l b 0007000 e c o n s i d e r e d i d e 0007020 n t i c a l b y C O M P A R 0007040 E T E X T . \r \0 \0 \0 \0 \0 003 ( L I 0007060 S T ( ( P A G E N I L ( F 0007100 O L I O I N F O ( A R A B I C 0007120 ) S T A R T I N G P A G E # 0007140 1 ) ( 0 0 6 1 2 7 9 2 ) 0007160 ( ( F O L I O N I L ( P A 0007200 R A L O O K S ( Q U A D C E 0007220 N T E R E D ) C H A R L O O K 0007240 S ( S U P E R S C R I P T 0 0007260 S I Z E 1 0 F A M I L Y 0007300 M O D E R N O V E R L I N E 0007320 O F F S T R I K E O U T O F 0007340 F U N D E R L I N E O F F 0007360 S L O P E R E G U L A R W E 0007400 I G H T M E D I U M ) F O R 0007420 M A T I N F O ( A R A B I C ) 0007440 ) ( 1 7 4 3 6 2 8 8 3 6 0007460 ) N I L ) ( H E A D I N G 0007500 N I L ( H E A D I N G T Y P E 0007520 R U N N I N G H E A D ) ( 8 0007540 4 7 4 4 4 4 4 3 6 ) N I 0007560 L ) ( T E X T N I L N I L 0007600 ( 8 4 9 6 4 5 6 6 0 0 ) 0007620 N I L ) ) ) ( P A G E N I 0007640 L N I L ( 0 0 6 1 2 7 0007660 9 2 ) ( ( F O L I O N I L 0007700 ( P A R A L O O K S ( Q U A D 0007720 C E N T E R E D ) C H A R L 0007740 O O K S ( S U P E R S C R I P 0007760 T 0 S I Z E 1 0 F A M I 0010000 L Y M O D E R N O V E R L I 0010020 N E O F F S T R I K E O U T 0010040 O F F U N D E R L I N E O 0010060 F F S L O P E R E G U L A R 0010100 W E I G H T M E D I U M ) ) 0010120 ( 2 8 2 4 2 7 2 3 6 ) 0010140 N I L ) ( H E A D I N G N I 0010160 L ( H E A D I N G T Y P E R 0010200 U N N I N G H E A D ) ( 8 4 0010220 7 4 4 4 4 4 3 6 ) N I L ) 0010240 ( T E X T N I L N I L ( 0010260 8 4 9 6 4 5 6 6 0 0 ) N 0010300 I L ) ) ) ( P A G E N I L 0010320 N I L ( 0 0 6 1 2 7 9 2 0010340 ) ( ( F O L I O N I L ( P 0010360 A R A L O O K S ( Q U A D C 0010400 E N T E R E D ) C H A R L O O 0010420 K S ( S U P E R S C R I P T 0010440 0 S I Z E 1 0 F A M I L Y 0010460 M O D E R N O V E R L I N E 0010500 O F F S T R I K E O U T O 0010520 F F U N D E R L I N E O F F 0010540 S L O P E R E G U L A R W 0010560 E I G H T M E D I U M ) ) ( 0010600 2 8 2 4 2 7 2 3 6 ) N I 0010620 L ) ( H E A D I N G N I L 0010640 ( H E A D I N G T Y P E R U N 0010660 N I N G H E A D ) ( 8 4 7 4 0010700 4 4 4 4 3 6 ) N I L ) ( 0010720 T E X T N I L N I L ( 8 4 0010740 9 6 4 5 6 6 0 0 ) N I L 0010760 ) ) ) ) ) \0 \0 \0 \0 \0 005 \0 006 \0 ( \0 0011000 \0 \0 \0 001 310 \0 021 \0 \0 \0 004 002 003 \0 \0 \0 0011020 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 0011040 \0 \0 \0 \0 \0 \0 1 \0 \0 \0 \0 001 310 \0 \v \0 0011060 \0 \0 004 003 004 \0 \0 002 \0 \0 001 001 310 001 \0 \0 0011100 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 0011120 \0 \0 \0 \0 \0 \0 \0 ( \0 212 \0 212 001 8 \0 006 0011140 \0 \0 \0 004 002 003 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 0011160 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 ( 0011200 \0 \0 \0 \0 001 310 \0 \v \0 \0 \0 004 002 004 \0 \0 0011220 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 0011240 \0 \0 \0 \0 \0 \0 \0 ( \0 212 \0 212 001 8 \0 \0 0011260 \0 \0 \0 004 002 004 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 0011300 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 D 0011320 \0 \0 \0 \0 001 310 \0 \0 \0 \0 \0 \0 003 004 \0 \0 0011340 001 001 310 001 \0 \0 \0 \0 \0 \0 \0 \v P A G E 0011360 H E A D I N G \0 \v R U N N I N G 0011400 H E A D \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 0011420 \0 \0 \0 \0 \0 \0 \0 004 \0 \a \0 027 \0 \t H E 0011440 L V E T I C A \0 \n \0 \0 \0 \0 \0 \0 \0 0011460 \0 \0 024 \0 006 M O D E R N \0 \n \0 \0 \0 0011500 \0 \0 \0 002 \0 \0 024 \0 006 M O D E R N \0 0011520 \n \0 \0 \0 \0 \0 \0 \0 \0 \0 024 \0 006 M O D 0011540 E R N \0 \f \0 \0 \0 \0 \0 \0 002 \0 \0 024 \0 0011560 006 M O D E R N \0 006 \0 \0 \0 \0 \0 \0 \0 0011600 \0 \0 024 \0 006 M O D E R N \0 \n \0 \0 \0 0011620 \0 \0 \0 001 \0 \0 022 \0 004 L O G O \0 030 \0 0011640 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 002 \0 006 \0 0011660 \0 \0 005 \0 \0 \0 \0 \a \0 \0 \0 001 \0 \0 \0 \0 0011700 005 \0 \0 \0 \f \0 \0 \0 \0 003 \0 \0 \0 \0 \0 002 0011720 \0 006 \0 \0 \0 002 \0 001 \0 \v H R U L E . 0011740 G E T F N 001 \0 024 \0 006 M O D E R N 0011760 \0 \n \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 001 \0 \0 0012000 \0 \0 003 \0 \0 \0 \0 \0 002 \0 005 \0 \0 \0 002 \0 0012020 001 \0 \v H R U L E . G E T F N 001 \0 0012040 024 \0 006 M O D E R N \0 \n \0 \0 \0 \0 \0 0012060 \0 \0 \0 \0 \0 \0 001 \0 \0 \0 \0 003 \0 \0 \0 \0 0012100 \0 002 \0 005 \0 \0 \0 002 \0 001 \0 \v H R U L 0012120 E . G E T F N 001 \0 024 \0 006 M O D E 0012140 R N \0 \n \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 001 0012160 \0 \0 \0 \0 003 \0 \0 \0 \0 \0 002 \0 003 \0 \0 \0 0012200 \f \0 \0 \0 \0 004 \0 \0 \0 \0 \0 002 \0 003 \0 \0 0012220 \0 002 \0 001 \0 \v H R U L E . G E T F 0012240 N 001 \0 024 \0 006 M O D E R N \0 \f \0 \0 0012260 \0 \0 \0 \0 002 \0 \0 \0 \0 001 \0 \0 \0 \0 004 \0 0012300 \0 \0 \0 \0 002 \0 005 \0 \0 \0 002 \0 001 \0 \v H 0012320 R U L E . G E T F N 001 \0 024 \0 006 M 0012340 O D E R N \0 \f \0 \0 \0 \0 \0 \0 002 \0 \0 0012360 \0 \0 001 \0 \0 \0 \0 004 \0 \0 \0 \0 \0 002 \0 001 0012400 \0 \0 \0 * \0 \0 \0 \0 003 \0 \0 \0 \0 \0 002 \0 0012420 001 \0 \0 \0 036 \0 \0 \0 \0 003 \0 \0 \0 \0 \0 002 0012440 \0 004 \0 \0 \0 \r \0 \0 \0 \0 002 \0 \0 \0 \0 \0 0012460 002 \0 004 \0 \0 001 @ \0 \0 \0 \0 003 \0 \0 \0 \0 0012500 \0 002 \0 004 \0 \0 001 332 \0 \0 \0 \0 003 \0 \0 \0 0012520 \0 \0 002 \0 004 \0 \0 \0 025 \0 \0 \0 \0 002 \0 \0 0012540 \0 \0 \0 002 \0 004 \0 \0 \0 < \0 \0 \0 \0 003 \0 0012560 \0 \0 \0 \0 002 \0 002 \0 \0 \0 016 \0 \0 \0 \0 003 0012600 \0 \0 \0 . \0 \0 \0 \0 006 \0 \0 \0 001 \0 \0 \0 0012620 \0 003 \0 \0 \0 001 \0 \0 \0 \0 001 \0 \0 \0 \v \0 0012640 \0 \0 \0 003 \0 \0 \0 \0 \0 002 \0 004 \0 \0 \0 \v 0012660 \0 \0 \0 \0 006 \0 \0 \0 005 \0 \0 \0 \0 003 \0 \0 0012700 \0 \v \0 \0 \0 \0 006 \0 \0 \0 p \0 \0 \0 \0 003 0012720 \0 \0 \0 \v \0 \0 \0 \0 006 \0 \0 \0 . \0 \0 \0 0012740 \0 003 \0 \0 \0 \v \0 \0 \0 \0 006 \0 \0 \0 024 \0 0012760 \0 \0 \0 003 \0 \0 \0 \0 \0 002 \0 004 \0 \0 \0 \t 0013000 \0 \0 \0 \0 006 \0 \0 001 \a \0 \0 \0 \0 003 \0 \0 0013020 \0 \t \0 \0 \0 \0 006 \0 \0 \0 027 \0 \0 \0 \0 003 0013040 \0 \0 \0 \0 \0 002 \0 004 \0 \0 \0 \f \0 \0 \0 \0 0013060 006 \0 \0 \0 M \0 \0 \0 \0 003 \0 \0 \0 \f \0 \0 0013100 \0 \0 006 \0 \0 \0 8 \0 \0 \0 \0 003 \0 \0 \0 \f 0013120 \0 \0 \0 \0 006 \0 \0 \0 / \0 \0 \0 \0 003 \0 \0 0013140 \0 \0 \0 002 \0 004 \0 \0 002 232 \0 \0 \0 \0 003 \0 0013160 \0 \0 \0 \0 002 \0 004 \0 \0 \0 372 \0 \0 \0 \0 003 0013200 \0 \0 \0 \0 \0 002 \0 004 \0 \0 001 3 \0 \0 \0 \0 0013220 003 \0 \0 \0 \0 \0 002 \0 004 \0 \0 001 - \0 \0 \0 0013240 \0 003 \0 \0 \0 \0 \0 002 \0 004 \0 \0 001 022 \0 \0 0013260 \0 \0 003 \0 \0 \0 \0 \0 002 \0 004 \0 \0 016 ' \0 0013300 J z 272 0013303