تم تكليفك بتنفيذ وظيفة تسمى "binary_search"، والتي تقوم بإجراء بحث ثنائي على قائمة مرتبة من الأعداد الصحيحة وإرجاع فهرس القيمة المستهدفة إذا تم العثور عليها، أو -1 إذا كانت القيمة المستهدفة غير موجودة في القائمة.

يجب أن تحتوي الوظيفة على التوقيع التالي:
```بيثون
تعريف ثنائي_البحث (الأعداد: قائمة [int]، الهدف: int) -> int:
    يمر
```

**مدخل:**
- يتكون الإدخال من معلمتين:
  - `nums`: قائمة الأعداد الصحيحة (1 <= len(nums) <= 10^5) بترتيب تصاعدي، حيث تكون عناصر القائمة فريدة.
  - `الهدف`: قيمة عددية للبحث عنها في القائمة.

**انتاج:**
- يجب أن تقوم الدالة بإرجاع عدد صحيح يمثل فهرس القيمة المستهدفة في القائمة، أو -1 إذا لم يكن الهدف موجودا.

**ملحوظة:**
- غير مسموح لك باستخدام الوظيفة المضمنة `list.index()`.
- يجب عليك تنفيذ الوظيفة باستخدام نهج تكراري وليس العودية.

**أمثلة:**
```
ثنائي_البحث([1, 3, 5, 7, 9], 3) => 1
ثنائي_البحث([1, 3, 5, 7, 9], 2) => -1
ثنائي_البحث([1, 3, 5, 7, 9], 9) => 4
```
{"source": "argilla/DistiCoder-dpo-binarized", "kind": "synthetic", "evolved_from": null}