Bueno, quería ver si había soluciones alternativas. Si había una más "bonita" o más directa, entonces no postearía mi solución (ni alguna otra, claro), pero al final resultó que la idea era esencialmente la misma. Aún así me disculpo sinceramente por haber posteado el problema en ese sitio.