Codeforces Unknown Language Round #1 G "Path Canonization"

問題:http://codeforces.com/contest/64/problem/G

参加形式:本番

ファイルのパスの文字列が与えられる.カレントディレクトリ(.)や親ディレクトリ(..)などが含まれているため,これらを取り除いた形で正しいパスで表される文字列を求める.

カレントディレクトリ表記は単に削除.親ディレクトリ表記は直前のディレクトリを削除するだけ.削除は「lreplace 文字列 開始位置 終了位置」でできる.

コード

set path [split [gets stdin] "/"]
while {1} {
	if {[lsearch $path "."]>=0} {
		set j [lsearch $path "."]
	} else {
		break
	}
	set path [lreplace $path [expr $j] [expr $j]]
}
while {1} {
	if {[lsearch $path ".."]>=0} {
		set i [lsearch $path ".."]
	} else {
		if {[llength $path]==1} {
			puts "/"
		} else {
			puts [join $path "/"]
		}
		break
	}
	if {$i<2} {
		puts "-1"
		break
	}
	set path [lreplace $path [expr $i-1] [expr $i]]
}