يتم إعطاؤك مقتطف رمز يحتوي على دالة `unvec(x, Shape)` والتي تأخذ مدخلين:
- `x` (مصفوفة أحادية الأبعاد من أرقام الفاصلة العائمة): تمثل متجهًا يحتاج إلى إعادة تشكيله إلى مصفوفة ثنائية الأبعاد.
- `الشكل` (صف مكون من عددين صحيحين موجبين): يمثل الشكل المطلوب للمصفوفة ثنائية الأبعاد.

مهمتك هي تنفيذ الدالة `unvec(x, Shape)` بطريقة تعيد تشكيل متجه الإدخال `x` إلى مصفوفة ثنائية الأبعاد للشكل المحدد. يجب أن تتم إعادة التشكيل بترتيب فورتران.

ترتيب فورتران هو وسيلة لتخزين صفائف متعددة الأبعاد بشكل تسلسلي في الذاكرة. في ترتيب فورتران، يتغير الفهرس الموجود في أقصى اليمين بشكل أسرع، يليه الفهرس الثاني الموجود في أقصى اليمين، وهكذا. وهذا يختلف عن ترتيب C، حيث يتغير الفهرس الموجود في أقصى اليسار بشكل أسرع.

يجب أن يقوم برنامجك بإرجاع المصفوفة ثنائية الأبعاد المُعاد تشكيلها كمخرجات.

ملحوظة:
- يجب أن يكون عدد العناصر في متجه الإدخال `x` مساوياً لمنتج الأبعاد في صف `الشكل`.
- يمكنك افتراض أن متجه الإدخال `x` سيحتوي دائمًا على عناصر كافية لملء المصفوفة ثنائية الأبعاد للشكل المحدد.

اكتب دالة `unvec(x, Shape)` لحل المشكلة.

توقيع الوظيفة: **def unvec(x: List[float], Shape: Tuple[int, int]) -> List[List[float]]:**

**مدخل**
تأخذ الدالة معلمتين:
- `x` (1 <= len(x) <= 10^6) - قائمة أحادية البعد لأرقام الفاصلة العائمة.
- `shape` (shape[0] * Shape[1] = len(x)) - صف مكون من عددين صحيحين موجبين يمثلان الشكل المطلوب للمصفوفة ثنائية الأبعاد.

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

**مثال**
```
unvec([1, 2, 3, 4, 5, 6], (2, 3)) => [[1, 3, 5], [2, 4, 6]]
unvec([1, 2, 3, 4, 5, 6, 7, 8], (4, 2)) => [[1, 5], [2, 6], [3, 7], [4, 8]]
unvec([1, 2, 3, 4, 5, 6, 7, 8], (2, 4)) => [[1, 3, 5, 7], [2, 4, 6, 8]]
```
{"source": "argilla/DistiCoder-dpo-binarized", "kind": "synthetic", "evolved_from": null}