کارآگاه احمد، یکی از بهترین ذهنهای حل معما، با یک چالش جدید روبرو شده است. یک اوراکل (Oracle) دیجیتال و مرموز، کلمهای را در اعماق کدهای خود پنهان کرده است. این اوراکل به سؤالات شما پاسخ میدهد، بدون اینکه آن را مستقیماً فاش کند.
احمد تنها ۸ فرصت برای پرسیدن سؤال دارد تا هویت این کلمهی اسرارآمیز را کشف کند. او برای این مأموریت به کمک شما نیاز دارد. شما باید مغز متفکر عملیات باشید و یک ایجنت هوشمند طراحی کنید که بتواند بهجای احمد سؤال بپرسد، پاسخها را تحلیل کند و در نهایت، کلمه را حدس بزند. آیا میتوانید به احمد کمک کنید تا این معما را حل کند؟
## شرح مأموریت
مأموریت شما ساخت یک ایجنت هوشمند است که با استفاده از یک API، کلمهی مخفی را در بازی «هشت سؤالی» حدس بزند. ایجنت شما باید بتواند یک جلسهی بازی را شروع کند، سؤالات خود را بپرسد و سعی کند در بهترین زمان ممکن، حدس نهایی خود را برای کشف کلمه ثبت کند.
## فرمانهای شما به اوراکل (API Endpoints)
برای تعامل با اوراکل، از فرمانهای زیر استفاده کنید:
### ۱. شروع ماجراجویی
با این فرمان، یک جلسهی جدید با اوراکل آغاز کرده و **کلید جلسه (session_id)** خود را دریافت میکنید.
- **Endpoint**: `POST /start`
- **خروجی**: `{"session_id": "..."}`
### ۲. پرسیدن سؤال
با استفاده از کلید جلسه، سؤالات خود را از اوراکل بپرسید.
- **Endpoint**: `POST /ask/{session_id}`
- **ورودی**: `{"question": "متن سؤال شما"}`
- **خروجی**: `{"answer": "پاسخ متنی", "question_count": N}`
### ۳. اعلام حدس نهایی
وقتی از کلمهی اسرارآمیز مطمئن شدید، حدس خود را به اوراکل اعلام کنید.
- **Endpoint**: `POST /guess/{session_id}`
- **ورودی**: `{"guess": "کلمهٔ حدسی شما"}`
- **خروجی**: `{"correct": true|false, "finished": true|false}`
اگر حدس شما درست باشد، مأموریت با موفقیت به پایان میرسد.
## نحوهٔ امتیازدهی
سیستم امتیازدهی بر اساس سه سطح سختی طراحی شده است: آسان، متوسط و سخت.
هر چه سطح سختی بالاتر باشد، امتیاز بیشتری دریافت خواهید کرد.
برای کسب امتیاز کامل هر سطح، باید کلمه مخفی را با استفاده از حداکثر ۸ سؤال به درستی حدس بزنید.
## آنچه باید آپلود کنید
شما باید در کلاس `Detective` تابع `run` را طوری پیادهسازی کنید که در صورت دریافت رشتهی `question` مقدار جواب را بهصورت یک رشته برگردانید.
**نکته مهم**: برای کسب امتیاز نهایی، باید کلمهی صحیح را از تابع `run` برگردانید. endpoint مربوط به `/guess` فقط برای بررسی صحت پاسخ شما استفاده میشود و خود امتیازدهی بر اساس مقدار بازگشتی تابع `run` انجام میگیرد.
```python solution.py
class Detective:
def __init__(self, api_token):
self.api_token = api_token
def run(self, question):
return "Your Answer"
```
### تست نمونه اول
```python
question = "Send a POST request to https://torobturbo-questions.darkube.app/start/public with JSON body {\"difficulty\": \"easy\"} to obtain a session_id. Use POST https://torobturbo-questions.darkube.app/ask/{session_id} with body {\"question\": \"Is it a physical thing?\"} for questions and POST https://torobturbo-questions.darkube.app/guess/{session_id} with body {\"guess\": \"water\"} to submit the final answer."
d = Detective(your_api_key)
print(d.run(question)) # "dog" or "cat"
```
### تست نمونه دوم
```python
question = "Send a POST request to https://torobturbo-questions.darkube.app/start/public with JSON body {\"difficulty\": \"medium\"} to obtain a session_id. Use POST https://torobturbo-questions.darkube.app/ask/{session_id} with body {\"question\": \"Is it a physical thing?\"} for questions and POST https://torobturbo-questions.darkube.app/guess/{session_id} with body {\"guess\": \"water\"} to submit the final answer."
d = Detective(your_api_key)
print(d.run(question)) # "guitar" or "planet"
```
### تست نمونه سوم
```python
question = "Send a POST request to https://torobturbo-questions.darkube.app/start/public with JSON body {\"difficulty\": \"hard\"} to obtain a session_id. Use POST https://torobturbo-questions.darkube.app/ask/{session_id} with body {\"question\": \"Is it a physical thing?\"} for questions and POST https://torobturbo-questions.darkube.app/guess/{session_id} with body {\"guess\": \"water\"} to submit the final answer."
d = Detective(your_api_key)
print(d.run(question)) # "algorithm" or "quasar"
```
بیست سوالی: کارآگاه و کلمهی اسرارآمیز
ارسال پاسخ برای این سؤال
در حال حاضر شما دسترسی ندارید.