في سوقٍ لبيع المستعملات، تجد آلة كاتبة قديمة أنيقة بسعر زهيد! وبكل حماس، تسرع إلى المنزل، وتُدخل ورقة، وتبدأ الكتابة. لكن حماسك يخبو عندما تتفقد الناتج: كل الكلمات مشوّشة! فعلى سبيل المثال، تطبع "stop" بدل "post" و"least" بدل "stale". وتحاول مرة أخرى بعناية، لكنها الآن تطبع "spot" و"slate". وبعد بعض التجارب، تكتشف أن هناك تأخيرًا عشوائيًا قبل طباعة كل حرف، وهو ما يُفسد الترتيب. الآن تفهم لماذا باعوها بهذا الثمن البخس!
وتُدرك أن هذه الخصلة الغريبة تتيح لك توليد الأناغرام، وهي كلمات تتكوّن بإعادة ترتيب حروف كلمة أخرى. وسعيدًا باكتشافك، تقضي بقية يومك في توليد مئات الأناغرامات.
بالنظر إلى كلمة مستهدفة وكلمة مرشّحة واحدة أو أكثر، مهمتك هي إيجاد الكلمات المرشّحة التي تكون أناغرامات للكلمة المستهدفة.
الأناغرام هو إعادة ترتيب الحروف لتكوين كلمة جديدة: على سبيل المثال، "owns" أناغرام لكلمة "snow".
الكلمة ليست أناغرامًا لنفسها: على سبيل المثال، "stop" ليست أناغرامًا لكلمة "stop".
تتكوّن الكلمة المستهدفة والكلمات المرشّحة من حرف أبجدي واحد أو أكثر بترميز ASCII (A-Z وa-z).
الحروف الصغيرة والحروف الكبيرة متكافئة: على سبيل المثال، "PoTS" أناغرام لكلمة "sTOp"، لكن "StoP" ليست أناغرامًا لكلمة "sTOp".
ينبغي أن تُؤخذ الكلمات التي تحتاج إلى إيجادها من الكلمات المرشّحة، مع الحفاظ على حالة الأحرف كما هي.
بالنظر إلى الكلمة المستهدفة "stone" والكلمات المرشّحة "stone" و"tones" و"banana" و"tons" و"notes" و"Seton"، فإن كلمات الأناغرام التي تحتاج إلى إيجادها هي "tones" و"notes" و"Seton".
يضيف مسار Crystal اختبارًا اختياريًا للتحقق مما إذا كان يمكن أن تكون الحروف أي محرف يونيكود، وليس فقط حروفًا أبجدية من أسكي. لا يمكن الوصول إلى هذه الاختبارات من محرر الويب، لكنها مفعّلة افتراضيًا عند التشغيل محليًا.
لتعطيل هذه الاختبارات، عند استدعاء مشغّل الاختبارات، أضف العلامة التالية: --tag "~optional"
سجّل في Exercism لتتعلّم وتتقن Crystal عبر 26 مفهومًا142 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.