左の山・中央の山・右の山をそれぞれL,C,Rと呼び、
たとえば、見えている状態が L:空、C:1、R:3である状況を[013]のように表す。
また、山の左右はつながっているとみなし、Lの左隣はR、Rの右隣はLと捉える。

以下、手順。上から順に優先。

[210]or[201]のとき‥‥1をLに。→この操作直後[100]になったらそこで終了。
[312]or[321]のとき‥‥2をLに。
[1枚見えているとき] ‥見えている1枚を左隣に。
[2枚見えているとき] ‥空の山の左隣を空の山に。
[3枚見えているとき] ‥3の右隣を3の左隣に。

これで3枚はいけると思う。
もっと簡便なアルゴリズムはないかな?