Unidirectional error control codes and related combinatorial problems