```html <!DOCTYPE html> <html> <body> <p>عداد بخطوة وإعادة تعيين عبر الإغلاق (Closure)</p> </body> </html> ```

JavaScript Medium closures

مهمة «```html <!DOCTYPE html> <html> <body> <p>عداد بخطوة وإعادة تعيين عبر الإغلاق (Closure)</p> </body> </html> ```»

نفذ الدالة `createCounter` التي تأخذ قيمة ابتدائية `start` وخطوة `step`. يجب أن تعيد الدالة كائنًا بثلاث دوال فرعية: `increment()` — تزيد القيمة الحالية بمقدار `step` وتعيدها، `decrement()` — تنقص بمقدار `step` وتعيدها، `reset()` — تعيد تعيين القيمة إلى القيمة الابتدائية `start`. استخدم الإغلاقات (closures) لتخزين الحالة. القيمة الابتدائية `start` والخطوة `step` هما عددان صحيحان.

تنسيق الإدخال

السطر الأول: start (عدد صحيح). السطر الثاني: step (عدد صحيح). السطر الثالث: عدد الاستدعاءات n (عدد صحيح، 1 ≤ n ≤ 20). بعد ذلك، n من الأسطر، كل سطر يحتوي على أمر واحد: 'increment'، 'decrement' أو 'reset'.

تنسيق الإخراج

لكل أمر، اطبع القيمة الحالية للعداد بعد تنفيذ الأمر، كل قيمة في سطر جديد.

أمثلة

مثال 1

الإدخال
10 3 3 increment increment decrement
الإخراج
13 16 13

مثال 2

الإدخال
-5 2 4 decrement decrement increment reset
الإخراج
-7 -9 -7 -5

مثال 3

الإدخال
5 4 6
الإخراج
78.54 24.00
main.js