المسارات
/
Julia
Julia
/
التمارين
/
اسم الروبوت
اسم الروبوت

اسم الروبوت

متوسط

التعليمات

أدِر إعدادات مصنع الروبوتات.

عندما يخرج روبوت من المصنع، لا يكون له اسم.

في المرة الأولى التي تشغّل فيها روبوتًا، يُولَّد له اسم عشوائي بصيغة حرفين كبيرين يتلوهما ثلاثة أرقام، مثل RX837 أو BC811.

بين الحين والآخر نحتاج إلى إعادة ضبط روبوت على إعدادات المصنع، ما يعني محو اسمه. وفي المرة التالية التي تسأل فيها، سيستجيب ذلك الروبوت باسم عشوائي جديد.

يجب أن تكون الأسماء عشوائية: فلا يجوز أن تتبع تسلسلًا يمكن التنبؤ به. واستخدام الأسماء العشوائية يحمل خطر التصادم. يجب أن يضمن حلك أن يكون لكل روبوت موجود اسم فريد.

لا تولّد مجموعة الاختبارات سوى نحو 100 اسم بشكل افتراضي. هناك نحو 700k اسم صالح، لذا لن تعطي سوى فرصة ضئيلة لحدوث التصادمات. فكّر في اختبار حلّك بحثًا عن التصادمات بطريقة أخرى، بالإضافة إلى مجموعة الاختبارات.

يواصل هذا التمرين استكشافنا لـنظام الأنواع في Julia، وهذه المرة مع الأنواع القابلة للتغيير، ويعرّفنا على توليد الأعداد العشوائية.

سنتخيّل أن إعادة ضبط الروبوت إلى إعدادات المصنع تشبه عملية جراحية: فهي تُجري تغييرات على الكائن، لكنها لا تستبدله. كان بإمكاننا أيضًا نمذجة المسألة بحيث تؤدي إعادة ضبط الروبوت إلى إنشاء روبوت جديد، لكن ليس كل مسألة يمكن نمذجتها بهياكل بيانات غير قابلة للتغيير وحدها (فحتى اللغات الدالية المحضة تتعامل مع التغيير داخل بيئات تنفيذها!).

في Julia، تُلحق الدوال التي تعدّل وسائطها لاحقة ! بحكم العُرف. لذا ستُسمى طريقتنا للقيام بذلك reset!.

هذا مجرد عُرف، لكن جميع أكواد Julia المنشورة تقريبًا تتبعه، وربما تصل إلى قناعة بأنه مفيد للغاية!

تلميحات

ستحتاج إلى تعريف طريقة لتوليد أسماء فريدة، وبنية لوصف الروبوتات، وطريقة لإعادة ضبط الروبوت، وطريقة للحصول على اسم الروبوت.

قد تجد من المفيد أن تصمّم برنامجك أولًا بحيث يولّد اسمًا عشوائيًا للروبوت فقط (دون القلق بشأن التصادمات)، ثم تفكّر لاحقًا في تصميم مخطط يتجنّب إصدار أسماء مكررة أبدًا. وفي تصميمك، أنعم النظر في كيفية تغيّر زمن التشغيل لتوليد الأسماء مع نفاد الأسماء المتاحة. ما الضمانات التي تريد تقديمها للمستدعي؟


المصدر

جلسة تصحيح أخطاء مع Paul Blackwell في gSchool.
تعديل عبر GitHub يفتح الرابط في نافذة أو علامة تبويب جديدة
Julia Exercism

مستعد لبدء اسم الروبوت؟

سجّل في Exercism لتتعلّم وتتقن Julia عبر 35 مفهومًا128 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.