```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