مسیر نسبی


  • محدودیت زمان: ۱ ثانیه
  • محدودیت حافظه: ۲۵۶ مگابایت

در سیستم‌های کامپیوتری داده‌ها در قالب فایل در حافظه ذخیره می‌شوند. هر فایل ممکن است درون یک دایرکتوری باشد و هر دایرکتوری ممکن است درون دایرکتوری‌های دیگر باشد. یک مسیر نشان دهنده‌ی یک فایل یا دایرکتوری خاص در این ساختار است. اکثر سیستم عامل‌های شبه یونیکس یک دایرکتوری ریشه دارند که شامل تمام فایل‌ها و دایرکتوری‌های دیگر به صورت مستقیم یا غیر مستقیم می‌شود. در این سیستم عامل‌ها ساختار زیر برای آدرس دهی فایل‌ها استفاده می‌شود:

/<directory-name>/<directory-name>/.../<directory-name>/<file-name>
Plain text

همچنین ساختار زیر برای آدرس دهی دایرکتوری‌ها استفاده می‌شود:

/<directory-name>/<directory-name>/.../<directory-name>
Plain text

برای مثال /etc/passwd فایلی به نام passwd در دایرکتوری etc در دایرکتوری ریشه را نشان می‌دهد. آدرس‌های صحیح دیگر /home/user/pictures/digikala و یا فقط /file هستند. در این سوال ما فقط فایل‌ها و دایرکتوری‌هایی را در نظر می‌گیریم که نامشان متشکل از حروف کوچک انگلیسی (a تا z) است.

دایرکتوری ریشه حالت خاصی است که با / نشان داده می‌شود.

هنگامی که کاربر در حال کارکردن با چنین سیستم عاملیست یک دایرکتوری به عنوان دایرکتوری فعلی در نظر گرفته می‌شود. اینگونه کاربر می‌تواند بدون مشخص کردن مسیر کامل دایرکتوری فعلی به فایل‌های درون آن دسترسی پیدا کند. به این روش آدرس دهی، آدرس دهی نسبی گفته می‌شود. برای مثال اگر دایرکتوری فعلی /home/user/pictures باشد، کاربر می‌تواند به فایل /home/user/pictures/digikala از طریق آدرس digikala دسترسی داشته باشد. توجه کنید که به دلیل عدم وجود / در ابتدای آدرس، مشخص می‌شود که مسیر از دایرکتوری فعلی شروع می‌شود. همچنین دایرکتوری‌های داخلی نیز می‌توانند اینگونه آدرس دهی شوند. برای مثال /home/user/pictures/others/digipay می‌تواند به صورت others/digipay آدرس دهی شود.

نکته‌ی جالب‌تر این است که می‌توانیم با این روش به فایل‌های خارج از دایرکتوری فعلی نیز دسترسی داشته باشیم. به طور دقیق‌تر آدرس .. به معنی دایرکتوری‌ای است که یک سطح از دایرکتوری فعلی بالاتر است. همچنین ../.. به معنی دایرکتوری دو سطح بالاتر از دایرکتوری فعلی است. حال اگر دایرکتوری فعلی /home/user/pictures باشد و شما می‌خواهید به /home/top/data/file دسترسی پیدا کنید می‌توانید آدرس را به صورت ../../top/data/file بیان کنید.

به شما آدرس یک فایل که می‌خواهید به آن دسترسی پیدا کنید و آدرس دایرکتوری فعلی داده می‌شود. شما باید کوتاه‌ترین آدرس نسبی برای دسترسی به آن فایل را پیدا کنید. برای مثال اگر دایرکتوری فعلی /home/user/pictures باشد شما باید ../movies/title را به ../../user/movies/title در هنگام دسترسی به فایل /home/user/movies/title‍ ترجیح دهید.

بعضی از فایل‌ها و دایرکتوری‌ها ممکن است نام‌های مشترک داشته باشند، اما غیر ممکن است که دو فایل یا دو دایرکتوری یا یک فایل و یک دایرکتوری، با نام یکسان درون یک دایرکتوری وجود داشته باشد. پس کلیه‌ی آدرس‌ها یکتا هستند. ورودی‌های مساله آدرس‌های درست هستند و در مسیرهای داده شده تناقض وجود نخواهد داشت. برای مثال آدرس فعلی /home/user/digikala/other و فایل /home/user/digikala با هم در تناقض هستند. زیرا همزمان یک دایرکتوری و فایل با نام digikala در دایرکتوری user وجود دارد.

ورودی🔗

در سطر اول ورودی آدرس فایل مورد نظر و در سطر دوم آدرس دایرکتوری فعلی داده شده است. طول هیچ آدرسی بیشتر از ۵۰ کاراکتر نخواهد بود. تضمین می‌شود آدرس‌ها درست و دارای تناقض نخواهند بود. نام فایل‌ها و دایرکتوری‌ها نیز فقط از حروف کوچک انگلیسی (a تا z) تشکیل شده است.

خروجی🔗

در تنها خط خروجی آدرس نسبی فایل مورد نظر را از دایرکتوری فعلی چاپ کنید.

مثال🔗

ورودی نمونه ۱🔗

/home/top/data/file
/home/user/pictures
Plain text

خروجی نمونه ۱🔗

../../top/data/file
Plain text

مثال صورت سوال.

ورودی نمونه ۲🔗

/home/user/movies/title
/home/user/pictures
Plain text

خروجی نمونه ۲🔗

../movies/title
Plain text

مثال دیگر صورت سوال.

ورودی نمونه ۳🔗

/file
/
Plain text

خروجی نمونه ۳🔗

file
Plain text

دایرکتوری ریشه را فراموش نکنید.

ورودی نمونه ۴🔗

/a/b/a/b/a/b
/a/b/a/a/b/a/b
Plain text

خروجی نمونه ۴🔗

../../../../b/a/b
Plain text

نام برخی فایل‌ها و دایرکتوری‌ها ممکن است یکسان باشد.

ورودی نمونه ۵🔗

/root/root/root
/root
Plain text

خروجی نمونه ۵🔗

root/root
Plain text

نام فایل‌ها یا دایرکتوری‌ها ممکن است root باشد و به این معنی نیست که دایرکتوری ریشه هستند.

ارسال پاسخ برای این سؤال
در حال حاضر شما دسترسی ندارید.