package main

import "slices"

type character interface {
	int | rune
}

// Returns all elements in slice A that are NOT in slice B
func setDifference[T comparable](s1 []T, s2 []T) []T {
	toReturn := make([]T, 0, len(s1))
	for _, val := range s1 {
		if !slices.Contains(s2, val) {
			toReturn = append(toReturn, val)
		}
	}
	return toReturn
}

// Generate numbers in a range - start (inclusive) to end (exclusive)
func genRange[T character](start, end T) []T {
	toRet := make([]T, end-start)
	for i := start; i < end; i++ {
		toRet[i-start] = i
	}
	return toRet
}