Module:Combcon
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