Module:Combcon

Une page de Wikiversité, la communauté pédagogique libre.

Ce module est utilisé dans ?


-- Ce module vise à fournir les outils nécessaire à la génération des 
-- combinaisons de consonnes.

local prog = {}



local function kombinu(literaroj, kombinadlongo)
    local kombinoj = {}
--	print('ba',kombinadlongo)	
	-- haltkazo
	if kombinadlongo == 1 then
		for indekso, ultimlitero in ipairs(literaroj) do
--			print('bu',indekso, ultimlitero)
			kombinoj[indekso] = ultimlitero
		end
		return kombinoj
	end
	
	for indekso1, prefikso in ipairs(literaroj) do
--		print('be', 'indekso', 'pref', 'vorto')
		for indekso2, vorto in ipairs( kombinu( literaroj, kombinadlongo - 1 ) ) do
			local ko = table.getn(kombinoj)
			ko = ko * (ko-1)
			local lo = kombinadlongo - 1
			-- linea indekso
			local indekso = (indekso1 * ko + indekso2) - ko 
			--local indekso = lo * ((indekso1 * ko + indekso2) - ko ) - lo 
--			print('bi', indekso, prefikso, vorto, kombinadlongo)
			kombinoj[indekso] = prefikso .. vorto
--			if not mw.ustring.find(vorto, prefikso) then
--				kombinoj[indekso] = prefikso .. vorto
--				--print(indekso, kombinoj[indekso])
--			else
--				--print('by', 'pas bon!!!!!!!!!')
--			end
		end
	end
	return kombinoj
end

    

-- Construit une entrée de tableau pour les consonnes données
function build_entry(consonnes)
    comp = ''
    for i,c in ipairs(consonnes) do
        comp = comp .. c
    end
    return '|-\n|' .. comp .. '|| <!-- difficulté --> || <!-- exemple -->  \n'
end


-- Retourne un tableau composé des différents éléments séparés
-- par des espaces dans la chaîne passée en paramètre
function split(str)
    r = {}
    for e in string.gmatch(str, "%S+") do
        r[#r+1] = e
    end
    return r
end

--TODO, comprendre pourquoi cet appel ne fonctionne pas
--phonemes = mw.text.split('n J N g k m b p v f d t Z S z s R l h ? j ɥ w', '%s')
local phonemes = split('n ɲ ŋ ɡ k m b p v f d t ʒ ʃ z s ʁ l h ʔ j ɥ w')

function prog.kombintestu(n)
    liniaro = ''
    for nenio, linio in pairs(kombinu(phonemes, n)) do
		liniaro = liniaro .. linio .. '\n'
	end
    return liniaro
end

-- génére successivement les combinaisons de taille_combi phonèmes
function prog.build_table(taille_combi)
    
end

-- Retourne les lignes d’un tableau au format wiki, où chaque ligne correspond
-- à une combinaison de nb_phonemes phonèmes, plus deux champs vides pour la difficulté
-- d'élocution et un exemple
-- À faire:
-- * rendre le code générique pour effectivenement renvoyer les combinaisons du 
--   nombre de phonèmes demandé
-- * ajouter un paramètre nb_colonnes pour indiquer le nombre d’entrées par ligne
function prog.build_table(taille_combi)
    local combi = ''
    --[[
    for c in get_next_combi(taille_combi) do
        combi = combi .. build_entry( cons )
    end
    --]]
    ---[[
    for a,ba in ipairs(phonemes) do
        for e,be in ipairs(phonemes) do
            if ba ~= be then
                cons = {ba, be}
                combi = combi .. build_entry( cons )
            end
            
        end
    end
    --]]
    return combi
end

return prog