export class List {
constructor(public elements: number[] = []) {}
compare(other: List): 'equal' | 'sublist' | 'superlist' | 'unequal' {
const s1 = this.elements.join(',');
const s2 = other.elements.join(',');
if (s1 === s2) return 'equal';
if (this.elements.length === 0) return 'sublist';
if (other.elements.length === 0) return 'superlist';
if (this.isSublist(this.elements, other.elements)) return 'sublist';
if (this.isSublist(other.elements, this.elements)) return 'superlist';
return 'unequal';
}
private isSublist(a: number[], b: number[]): boolean {
if (a.length === 0) return true;
if (a.length > b.length) return false;
for (let i = 0; i <= b.length - a.length; i++) {
let match = true;
for (let j = 0; j < a.length; j++) {
if (a[j] !== b[i + j]) {
match = false;
break;
}
}
if (match) return true;
}
return false;
}
}