Давай представим, что мы гуляем по папкам на компьютере. Нам нужно найти, где мы были изначально, зная, где оказались и что делали.
С:\Мои_занятия.Теперь попробуем пойти в обратном направлении от результата:
С:\Мои_занятияМои_занятия. Это может быть С:\ или С:\Что-то.С:\Мои_занятия.Давай рассмотрим варианты:
С:\Мои_занятия\Спорт\Фото. Если мы начнем здесь:С:\Мои_занятия\СпортС:\Мои_занятияС:\Мои_занятия\Фото (не совпадает с результатом С:\Мои_занятия).С:\Мои_занятия\Фото. Если мы начнем здесь:С:\Мои_занятияС:\С:\Фото (не совпадает с результатом С:\Мои_занятия).С:\Мои_занятия\Спорт\Фото\Сентябрь. Если мы начнем здесь:С:\Мои_занятия\Спорт\ФотоС:\Мои_занятия\СпортС:\Мои_занятия\Спорт\Фото (не совпадает с результатом С:\Мои_занятия).С:\Фото. Если мы начнем здесь:С:\(нет такого уровня, считаем, что остаемся на диске C:\)С:\Какой-то_каталог (не совпадает с результатом С:\Мои_занятия).Хм, похоже, нужно переосмыслить. Давай еще раз:
Известно:
С:\Мои_занятия (спустился вниз)Значит, Z — это каталог, внутри которого находится С:\Мои_занятия. Таким образом, Z может быть С:\Мои_занятия\Что-то. Но так как мы спускаемся вниз, то Z должен быть родительским каталогом для С:\Мои_занятия.
Давай пойдем от конца:
С:\Мои_занятияМои_занятия. Например, С:\ (если Мои_занятия находится прямо на диске C:) или С:\Мои_папки (если Мои_занятия находится в Мои_папки).Смотрим варианты:
С:\Мои_занятия\Спорт\Фото.С:\Мои_занятия\Спорт\ФотоС:\Мои_занятия\СпортС:\Мои_занятияС:\Мои_занятия\Фото. Получилось С:\Мои_занятия\Фото. Это не совпадает с результатом С:\Мои_занятия.С:\Мои_занятия\Фото.С:\Мои_занятия\ФотоС:\Мои_занятияС:\С:\Фото. Получилось С:\Фото. Это не совпадает с результатом С:\Мои_занятия.С:\Мои_занятия\Спорт\Фото\Сентябрь.С:\Мои_занятия\Спорт\Фото\СентябрьС:\Мои_занятия\Спорт\ФотоС:\Мои_занятия\СпортС:\Мои_занятия\Спорт\Фото. Получилось С:\Мои_занятия\Спорт\Фото. Это не совпадает с результатом С:\Мои_занятия.С:\Фото.С:\ФотоС:\(остаемся на C:\)С:\Фото\Какой-то_каталог. Это не совпадает с результатом С:\Мои_занятия.Давай попробуем еще раз, логически:
Мы оказались в С:\Мои_занятия.
Перед этим мы спустились на один уровень вниз. Значит, мы были в каталоге, который содержит Мои_занятия. Это может быть С:\, если Мои_занятия находится прямо на диске. Или это может быть каталог, например, С:\(\UserFiles\), и тогда полный путь был С:\(\UserFiles\)\Мои_занятия.
Перед этим мы поднялись на один уровень вверх. Значит, мы были в каталоге, который содержит С:\Мои_занятия (если это был вариант С:\) или С:\(\UserFiles\) \(если это был вариант С:\UserFiles\).
Перед этим мы поднялись еще на один уровень вверх. Значит, мы были в каталоге, который содержит предыдущий каталог.
Давайте попробуем пойти от первого варианта:
Если начинали с: С:\Мои_занятия\Спорт\Фото
С:\Мои_занятия\СпортС:\Мои_занятияС:\Мои_занятия\Фото. Это не результат.Если начинали с: С:\Мои_занятия\Фото
С:\Мои_занятияС:\С:\Фото. Это не результат.Если начинали с: С:\Мои_занятия\Спорт\Фото\Сентябрь
С:\Мои_занятия\Спорт\ФотоС:\Мои_занятия\СпортС:\Мои_занятия\Спорт\Фото. Это не результат.Если начинали с: С:\Фото
С:\С:\Фото\Какой-то_каталог. Это не результат.Давайте попробуем другой подход:
Оказались в С:\Мои_занятия.
Перед этим спустились на один уровень вниз. Это значит, что мы были в каталоге, внутри которого находится Мои_занятия. Например, если бы мы были в С:\Мои_занятия\История, то, спустившись, оказались бы в С:\Мои_занятия. Но это не подходит, так как Мои_занятия - это конечный результат.
Значит, мы спустились в С:\Мои_занятия из родительского каталога. Значит, С:\Мои_занятия - это и есть тот каталог, куда мы спустились.
Перед этим мы поднялись на два уровня вверх. Значит, мы были в каталоге, который находится на два уровня ниже, чем С:\Мои_занятия.
Пусть начальный каталог - это X.
X -> Parent(X) -> Parent(Parent(X)) -> С:\Мои_занятия.
Теперь посмотрим на варианты:
С:\Мои_занятия\Спорт\Фото.X = С:\Мои_занятия\Спорт\ФотоParent(X) = С:\Мои_занятия\СпортParent(Parent(X)) = С:\Мои_занятия.С:\Мои_занятия. Это совпадает!Значит, мы начинали с каталога С:\Мои_занятия\Спорт\Фото.
Проверим:
С:\Мои_занятия\Спорт\Фото.С:\Мои_занятия\Спорт.С:\Мои_занятия.С:\Мои_занятия\Фото.Ага, тут ошибка в формулировке задания или в моем понимании. Давайте еще раз.
Правильная логика:
Пусть начальный путь - StartPath.
1. Path1 = Parent(StartPath) (поднялись вверх)
2. Path2 = Parent(Path1) (поднялись еще раз вверх)
3. FinalPath = Path2 + \(\SomeFolder\) (спустились вниз)
Нам дано, что FinalPath = С:\Мои_занятия.
Значит, Path2 - это родительский каталог для С:\Мои_занятия. Это может быть С:\ (если Мои_занятия находится прямо на диске C:) или какой-то другой каталог, например, С:\(\MyStuff\), если бы путь был С:\(\MyStuff\)\Мои_занятия.
Теперь рассмотрим варианты:
С:\Мои_занятия\Спорт\ФотоStartPath = С:\Мои_занятия\Спорт\ФотоPath1 = Parent(StartPath) = С:\Мои_занятия\СпортPath2 = Parent(Path1) = С:\Мои_занятияFinalPath = Path2 + \(\SomeFolder\) = С:\Мои_занятия\???. Нам нужно, чтобы FinalPath был С:\Мои_занятия. Значит, \(\SomeFolder\) должно быть пустым, а Path2 должно быть С:\Мои_занятия.Это значит, что Path2 (каталог, из которого мы спустились) должен быть С:\Мои_занятия. Но это противоречит условию, что мы поднимались вверх, чтобы оказаться в Path2.
Давайте переформулируем: Пользователь был в каталоге X. Он вышел из него (поднялся вверх), вышел еще раз (поднялся вверх). Затем он зашел внутрь какого-то каталога и оказался в С:\Мои_занятия.
Следовательно:
С:\Мои_занятия - это каталог, куда мы спустились.С:\Мои_занятия, и мы должны были в него спуститься.С:\Мои_занятия - это не конечный каталог, куда мы спустились, а тот, из которого мы поднялись.Новая попытка:
Мы оказались в С:\Мои_занятия.
Это результат последней операции: спустились на один уровень вниз.
Значит, перед этим мы были в каталоге, который содержит Мои_занятия. И этот каталог мы можем назвать ParentOfMyZanyatiya.
ParentOfMyZanyatiya
...
С:\Мои_занятия
Перед этим мы поднялись на один уровень вверх. Значит, мы были в каталоге, который находится на два уровня ниже ParentOfMyZanyatiya.
Перед этим мы поднялись еще на один уровень вверх. Значит, мы были в каталоге, который находится на три уровня ниже ParentOfMyZanyatiya.
Пусть начальный каталог - Start.
Start -> Parent(Start) -> Parent(Parent(Start)). И вот этот последний каталог Parent(Parent(Start)) - это наш ParentOfMyZanyatiya.
Теперь посмотрим на варианты:
С:\Мои_занятия\Спорт\ФотоStart = С:\Мои_занятия\Спорт\ФотоParent(Start) = С:\Мои_занятия\СпортParent(Parent(Start)) = С:\Мои_занятия.Теперь проверяем последние шаги:
С:\Мои_занятия.Мои_занятия. Этот каталог - Parent(Parent(Start)), то есть С:\Мои_занятия.С:\Мои_занятия, и потом спустились вниз, то мы должны были оказаться в каком-то подкаталоге, а не в С:\Мои_занятия.Давайте пойдем от конца к началу, без вариантов, просто по условию:
С:\Мои_занятияС:\Мои_занятия. Пусть это будет P. И мы вошли из P в С:\Мои_занятия.P. Пусть это будет GP.GP. Пусть это будет GGP.Таким образом, наш начальный путь - GGP, откуда мы поднимались вверх до P, а затем спустились в С:\Мои_занятия.
Условие: