001/* 002 * $Id$ 003 */ 004 005package edu.jas.poly; 006 007 008import java.io.Serializable; 009 010 011/** 012 * Container for overlap words. 013 * A container of four words l1, r1, l2, r2. 014 * @author Heinz Kredel 015 */ 016 017public class Overlap implements Serializable { 018 019 public final Word l1; 020 public final Word r1; 021 public final Word l2; 022 public final Word r2; 023 024 025 /** 026 * Constructor. 027 */ 028 public Overlap(Word l1, Word r1, Word l2, Word r2) { 029 this.l1 = l1; 030 this.r1 = r1; 031 this.l2 = l2; 032 this.r2 = r2; 033 } 034 035 036 /** 037 * Is word overlap. 038 * @param u word 039 * @param v word 040 * @return true if l1 * u * r1 = l2 * v * r2, else false. 041 */ 042 public boolean isOverlap(Word u, Word v) { 043 Word a = l1.multiply(u).multiply(r1); 044 Word b = l2.multiply(v).multiply(r2); 045 boolean t = a.equals(b); 046 if ( !t ) { 047 System.out.println("a = " + a + " != b = " + b); 048 } 049 return t; 050 } 051 052 053 /** 054 * Get the string representation. 055 * @see java.lang.Object#toString() 056 */ 057 @Override 058 public String toString() { 059 StringBuffer s = new StringBuffer("Overlap["); 060 s.append(l1); 061 s.append(", "); 062 s.append(r1); 063 s.append(", "); 064 s.append(l2); 065 s.append(", "); 066 s.append(r2); 067 s.append("]"); 068 return s.toString(); 069 } 070 071}