انتقل إلى المحتوى

وحدة:anagrams

من ويكاموس، القاموس الحر
local p = {}

-- دالة لتوليد جميع الأنيجرامات لكلمة معينة
local function generateAnagrams(word)
    local anagrams = {}
    local function permute(prefix, str)
        local n = #str
        if n == 0 then
            table.insert(anagrams, prefix)
        else
            for i = 1, n do
                local rem = str:sub(1, i - 1) .. str:sub(i + 1)
                permute(prefix .. str:sub(i, i), rem)
            end
        end
    end
    permute("", word)
    return anagrams
end

-- دالة للتحقق مما إذا كانت الكلمة موجودة في ويكيشنري
local function checkWiktionary(word)
    -- هنا يجب عليك تنفيذ المنطق للتحقق من وجود الكلمة في ويكيشنري
    -- هذا هو المكان الذي تحتاج فيه إلى استخدام واجهة برمجة التطبيقات (API) أو أي طريقة أخرى للتحقق
    -- كمثال، يمكنك استخدام mw.wikibase.getEntity(word) للتحقق
    -- في هذا المثال، سأعيد قيمة وهمية
    local validWords = {
        ["table"] = true,
        ["bat"] = true,
        ["eat"] = true,
        ["tea"] = true,
        ["ate"] = true,
        -- أضف المزيد من الكلمات الصحيحة هنا
    }
    return validWords[word] or false
end

-- الدالة الرئيسية للحصول على الأنيجرامات الصحيحة
function p.getAnagrams(word)
    local anagrams = generateAnagrams(word)
    local validAnagrams = {}

    for _, anagram in ipairs(anagrams) do
        if checkWiktionary(anagram) then
            table.insert(validAnagrams, anagram)
        end
    end

    -- إذا لم توجد أي أنيجرامات صحيحة، يمكن إرجاع رسالة بدلاً من جدول فارغ
    if #validAnagrams == 0 then
        return "لا توجد أنيجرامات صحيحة."
    end

    return validAnagrams
end

return p