في سوقٍ لبيع المستعملات، تجد آلة كاتبة قديمة أنيقة بسعر زهيد! وبكل حماس، تسرع إلى المنزل، وتُدخل ورقة، وتبدأ الكتابة. لكن حماسك يخبو عندما تتفقد الناتج: كل الكلمات مشوّشة! فعلى سبيل المثال، تطبع "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".
تستقبل الدالة سلسلة نصية واحدة من الكلمات، يتبع كل كلمة منها فاصل سطر.
الكلمة الأولى هي الكلمة التي يُفترض أن تكون الكلمات المتبقية جناسًا لها.
أرجِع سلسلة نصية تضم جميع كلمات الجناس الصحيحة، يتبع كلًّا منها فاصل سطر.
يستخدم المخزن المؤقت الخاص بسلسلة الإدخال البايتات من 64 إلى 319 من الذاكرة الخطية.
يمكنك تعديل هذا المخزن المؤقت في مكانه إن أردت تجنّب تخصيصات ذاكرة إضافية.
سجّل في Exercism لتتعلّم وتتقن WebAssembly عبر 87 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.