بازرس لستراد که از تعداد پروندههای زیاد اسکاتلند یارد خسته شده برای حل برخی از آنها با شرلوک تماس میگیرد. شرلوک از بازرس لستراد میخواهد که پروندهها را در ساختار مشخصی برای او ارسال کند اما به دلیل بینظمیهای اسکاتلند یارد و نامشخص بودن ساختار پروندههای آنها، بازرس لستراد توانایی انجام این کار را ندارد.
با نوشتن یک اسکریپت شل به بازرس لستراد کمک کنید که با گرفتن فایل *CSV* پروندهها، آنها را در فولدرهای مختلف مرتب کرده و برای شرلوک ارسال کند.
در حال حاضر پروندههای اسکاتلند یارد در یک فایل *CSV* بزرگ با ساختار زیر قرار گرفتهاند:
```csv
<mark title="نام فرد مرتبط با پرونده">Name</mark>,<mark title="نوع پرونده">Type</mark>,<mark title="وضعیت پرونده">Status</mark>,<mark title="متن توضیحات پرونده">Description</mark>
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.
```
شرلوک از بازرس لستراد خواسته که تمامی پروندهها در پوشه `Cases` قرار بگیرند. به این صورت که در این پوشه برای هر نوع پرونده یک پوشه خاص ایجاد شده و سپس برای هر پرونده، یک فایل در پوشه نوع آن پرونده با نام فرد مرتبط با پرونده ایجاد شده و توضیحات پرونده در این فایل قرار بگیرند.
از آنجا که امنیت پروندههای اسکاتلند یارد نیز از اهمیت بالایی برخوردار است، باید دسترسی افراد به هر پرونده با توجه به وضعیت آن تغییر پیدا کند.
+ برای پروندههای با وضعیت `Solved` همه افراد باید توانایی خواندن پرونده را داشته باشند اما فقط صاحب پرونده امکان نوشتن بر روی آن را داشته باشد.
+ برای پروندههای با وضعیت `In Progress` صاحب پرونده و گروه آن باید توانایی خواندن پرونده را داشته باشند اما فقط صاحب پرونده امکان نوشتن بر روی آن را داشته باشد.
+ برای پروندههای با وضعیت `Not Started` فقط صاحب پرونده توانایی خواندن آن را داشته باشد.
دقت کنید که در هیچ حالتی، هیچکس **نباید** بتواند فایل پرونده را **اجرا** کند.
دقت داشته باشید که ممکن است در نام افراد کاراکتر اسپیس وجود داشته باشد. در اینصورت باید اسپیسهای موجود در نام را با کاراکتر `_` جایگزین کنید.
# مثال
```csv
<mark title="نام فرد مرتبط با پرونده">Name</mark>,<mark title="نوع پرونده">Type</mark>,<mark title="وضعیت پرونده">Status</mark>,<mark title="متن توضیحات پرونده">Description</mark>
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.
```
با دریافت و پردازش این فایل باید پوشهبندی پروندهها به شکل زیر ایجاد شود:
```
Cases
├── Arson
│ ├ (-rw-r-----) ── Billy_Stewart
│ ├ (-rw-r--r--) ── Kimberly_Murray
└── Vice
├ (-r--------) ── Chelsea_Johnson
├ (-rw-r--r--) ── Lisa_Eaton
```
محتوای هر فایل نیز باید با ستون `Description` مربوط به آن پرونده پر شده باشد. برای مثال محتوای درون فایل `Lisa_Eaton` باید متن زیر باشد:
```
Tend close bar crime president particular table possible. Seek keep purpose. Drug cultural industry maintain.
```
# پروژه اولیه
ساختار فایلی پروژه اولیه به شکل زیر است:
```
CaseSort
├── cases.csv
└── solution.sh
```
و شما باید راهحل خود را درون فایل `solution.sh` پیادهسازی کنید.
# نحوه ارسال
برای ارسال جواب، دستورات خواسته شده را در فایلی با نام `solution.sh` بنویسید و سپس آن را انتخاب و ارسال کنید.
ارسال پاسخ برای این سؤال
در حال حاضر شما دسترسی ندارید.