پرونده‌های نامرتب


بازرس لستراد که از تعداد پرونده‌های زیاد اسکاتلند یارد خسته شده برای حل برخی از آن‌ها با شرلوک تماس می‌گیرد. شرلوک از بازرس لستراد می‌خواهد که پرونده‌ها را در ساختار مشخصی برای او ارسال کند اما به دلیل بی‌نظمی‌های اسکاتلند یارد و نامشخص بودن ساختار پرونده‌های آن‌ها، بازرس لستراد توانایی انجام این کار را ندارد. با نوشتن یک اسکریپت شل به بازرس لستراد کمک کنید که با گرفتن فایل CSV پرونده‌ها، آن‌ها را در فولدرهای مختلف مرتب کرده و برای شرلوک ارسال کند.

در حال حاضر پرونده‌های اسکاتلند یارد در یک فایل CSV بزرگ با ساختار زیر قرار گرفته‌اند:

Name,Type,Status,Description
Lisa Eaton,Vice,Solved,Tend close bar crime president particular table possible. Seek keep purpose. Drug cultural industry maintain.
Chelsea Johnson,Vice,Not Started,Manager she prove authority. Office physical describe student social. Peace age real contain always wind dream activity. Bring well ask team.
Kimberly Murray,Arson,Solved,Sign whether throw now company full. Perhaps television take may suggest particularly. Happy tax our role. Carry charge ball which expect your.
Billy Stewart,Arson,In Progress,Thank else stay budget media require book tell. Relationship face clear song will. Region whose kind them.
CSV

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

از آنجا که امنیت پرونده‌های اسکاتلند یارد نیز از اهمیت بالایی برخوردار است، باید دسترسی افراد به هر پرونده با توجه به وضعیت آن تغییر پیدا کند.

  • برای پرونده‌های با وضعیت Solved همه افراد باید توانایی خواندن پرونده را داشته باشند اما فقط صاحب پرونده امکان نوشتن بر روی آن را داشته باشد.

  • برای پرونده‌های با وضعیت In Progress صاحب پرونده و گروه آن باید توانایی خواندن پرونده را داشته باشند اما فقط صاحب پرونده امکان نوشتن بر روی آن را داشته باشد.

  • برای پرونده‌های با وضعیت Not Started فقط صاحب پرونده توانایی خواندن آن را داشته باشد.

دقت کنید که در هیچ حالتی، هیچکس نباید بتواند فایل پرونده را اجرا کند.

دقت داشته باشید که ممکن است در نام افراد کاراکتر اسپیس وجود داشته باشد. در اینصورت باید اسپیس‌های موجود در نام را با کاراکتر _ جایگزین کنید.

مثال🔗

Name,Type,Status,Description
Lisa Eaton,Vice,Solved,Tend close bar crime president particular table possible. Seek keep purpose. Drug cultural industry maintain.
Chelsea Johnson,Vice,Not Started,Manager she prove authority. Office physical describe student social. Peace age real contain always wind dream activity. Bring well ask team.
Kimberly Murray,Arson,Solved,Sign whether throw now company full. Perhaps television take may suggest particularly. Happy tax our role. Carry charge ball which expect your.
Billy Stewart,Arson,In Progress,Thank else stay budget media require book tell. Relationship face clear song will. Region whose kind them.
CSV

با دریافت و پردازش این فایل باید پوشه‌بندی پرونده‌ها به شکل زیر ایجاد شود:

Cases
├── Arson
│   ├ (-rw-r-----) ── Billy_Stewart
│   ├ (-rw-r--r--) ── Kimberly_Murray
└── Vice
    ├ (-r--------) ── Chelsea_Johnson
    ├ (-rw-r--r--) ── Lisa_Eaton
Plain text

محتوای هر فایل نیز باید با ستون Description مربوط به آن پرونده پر شده باشد. برای مثال محتوای درون فایل Lisa_Eaton باید متن زیر باشد:

Tend close bar crime president particular table possible. Seek keep purpose. Drug cultural industry maintain.
Plain text

پروژه اولیه🔗

ساختار فایلی پروژه اولیه به شکل زیر است:

CaseSort
├── cases.csv
└── solution.sh
Plain text

و شما باید راه‌حل خود را درون فایل solution.sh پیاده‌سازی کنید.

نحوه ارسال🔗

برای ارسال جواب، دستورات خواسته شده را در فایلی با نام solution.sh بنویسید و سپس آن را انتخاب و ارسال کنید.