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

64 lines
3.7 KiB
Markdown

# تمرین ۸: یادداشتِ مریخی
## صورت سؤال
در یک آزمایشگاه فضایی، فقط یک فایل به نام `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` دستور را پردازش کند.
## نمونه
**ورودی نمونه**
```text
6
touch
> Hello Mars
>> Day 2
touch
>> Day 3
touch
```
**خروجی نمونه**
```text
Hello Mars
Day 2
Day 3
```