手に入れた順に上に詰めるのは素直に手に入れた時に一番下に格納する、道具を使ったり捨てた場合は隙間が出来るので上から隙間が出来てないかチェックしてあった場合は詰めるという地味な処理を作る必要がありますね。 簡単なのは同じ大きさの配列をもう一つ作って隙間が無いようにコピーしたあと元の配列に戻すという方法です。