Random.Next(4) для получения фигурки
Поиск/обход матрицы в глубину/ширину по форме фигурки - т.е. будет 4 реализации, как вхреначить фигурку в матрицу
Проверки на крайние значения, чтобы если осталась одна линия - то фигурки выбираются из первых трех, если 3,2,1 ячейки остались последними.
Начинать с позиции 0,0 и дальше вправо двигаться (алгоритм обхода должен иметь правила куда и как прижиматься, например вправо+вверх.)
Этого должно хватить.