Files
nearology 99fb7f0e82 Add sitemap and styles for Persian font integration
- Created a new sitemap.xml file for better SEO.
- Added a compressed version of the sitemap as sitemap.xml.gz.
- Introduced extra.css for custom styles, including Persian font support (IRANSansX).
- Defined font-face rules for regular and bold styles of IRANSansX.
- Implemented various text styles and layout adjustments for better readability.
- Enhanced Mermaid diagram styles to support Persian text rendering.
2026-04-28 15:27:18 +03:30

3.7 KiB

تمرین ۸: یادداشتِ مریخی

صورت سؤال

در یک آزمایشگاه فضایی، فقط یک فایل به نام mars.txt داریم و چند دستور به‌ترتیب اجرا می‌شود. شما باید با یک اسکریپت Bash این دستورها را از ورودی بخوانید و در پایان، محتوای نهایی فایل را چاپ کنید.

هدف تمرین این است که از چیزهایی که تا این‌جا در فصل ۳ یاد گرفته‌اید استفاده کنید: read، متغیرها، if و حلقه‌ها (به‌خصوص while یا for).

رفتار دستورها:

  • touch اگر فایل وجود نداشته باشد، آن را ایجاد می‌کند و خالی است؛ اگر فایل از قبل وجود داشته باشد، هیچ تغییری در محتوا ایجاد نمی‌شود.
  • > s محتوای فایل را کامل بازنویسی می‌کند و بعد از آن فایل دقیقاً فقط شامل همان یک خط s است. (اگر فایل وجود نداشته باشد، این دستور آن را ایجاد می‌کند.)
  • >> s یک خط s را به انتهای فایل اضافه می‌کند. (اگر فایل وجود نداشته باشد، این دستور آن را ایجاد می‌کند و همان یک خط را داخلش می‌گذارد.)

هدف این است که بعد از اجرای همهٔ دستورها، محتوای نهایی mars.txt را چاپ کنید.

اگر در پایان فایل وجود نداشت یا خالی بود، باید دقیقاً EMPTY چاپ شود.

نکته: لازم نیست واقعاً روی سیستم فایل بسازید؛ می‌توانید فقط «محتوا» را در یک متغیر نگه دارید و شبیه‌سازی کنید.

ورودی

در خط اول عدد q تعداد دستورها آمده است.
در q خط بعدی، هر خط یکی از حالت‌های زیر است:

  • touch
  • > s (یک متن s که همان یک خط است)
  • >> s (یک متن s که همان یک خط است)

s می‌تواند شامل فاصله باشد و تا انتهای خط ادامه دارد. (اما با فاصله شروع نمی‌شود.)

خروجی

محتوای نهایی mars.txt را دقیقاً همان‌طور که هست چاپ کنید (هر خط جداگانه).
اگر فایل وجود نداشت یا خالی بود، فقط EMPTY چاپ کنید.

محدودیت‌ها

  • 1 ≤ q ≤ 200
  • طول s حداقل 1 و حداکثر 100 کاراکتر است.

راهنمایی (چند تریک کوچک)

  • به‌جای پارس‌کردن دستی، می‌توانید هر خط را با read -r OP TEXT بخوانید؛ در این حالت OP یکی از touch یا > یا >> می‌شود و TEXT بقیهٔ خط خواهد بود (حتی اگر وسطش فاصله داشته باشد).
  • با یک متغیر مثل CONTENT محتوای فایل را نگه دارید:
    • برای > s کافی است CONTENT را برابر s کنید.
    • برای >> s اگر CONTENT خالی نبود، اول یک خط جدید اضافه کنید و بعد s را بچسبانید.
  • یک متغیر دیگر مثل EXISTS هم داشته باشید تا تشخیص دهید فایل اصلاً ساخته شده یا نه.
  • حلقهٔ while با شمارنده (i=$((i+1))) یا یک حلقهٔ for می‌تواند q دستور را پردازش کند.

نمونه

ورودی نمونه

6
touch
> Hello Mars
>> Day 2
touch
>> Day 3
touch

خروجی نمونه

Hello Mars
Day 2
Day 3