He aquí una implementación en Ada con la intención de ser un primer contacto.