2014-12-19 5 views
2

Допустим, у меня есть слово «приятель»Нарезка массив на основе значений другого массива

первый массив разбивает слово вверх по слогам например. ['bud','dy']

второй массив по их разрыву фонограммы, например. ['b','u','dd',y']

сейчас моя проблема заключается в том, что фонограмма «dd» должна быть «d», «d», потому что там есть слог, но я не могу представить эффективный способ разобрать оба массива и разбить фонограммы так, чтобы это ['b','u','d','d',y']

вот некоторые другие примеры

слово: подъездной

слоги: ['drive','way']

фонограммы: ['d','r','i','ew','ay']

должен быть: ['d','r','i','v','e','w','ay']

слова: получения

слогов: ['get','ting']

фонограммы: ['g','e','tt','i','ng']

должен быть: ['g','e','t','t','i','ng']

Кто-нибудь знает, как я могу это сделать?

+1

Это не про JavaScript на самом деле. Должен отмечать _natural language processing_, _nlp_ или что-то относительное. Тем не менее это интересный вопрос для парней JS, таких как я. – Leo

+0

'daily' не содержит слоги' ['drive', 'way'] ', вы можете очистить этот пример. Каковы неэффективные способы, с которыми вы столкнулись, для разбора обоих массивов и нарушения фонограмм? – adamdc78

+0

это потому, что я пытаюсь написать сценарий для сравнения двух массивов и разработки, если они будут разделены или нет. – Ardenexal

ответ

0

Я хотел бы попробовать это [псевдокод]

given i = 0, word = "" 
for phono in phonograms  //loop over all phonograms 
     word += phonograms[phono] //and try to assemble the current syllable 
     if word === syllable[i]     //we may have found a sullable 
      i++ 
      word = "" 
      continue 
     if not the syllable[i] starts with word //if not syllable starts with word, 
               //then we have a phono that 
               //breaks our rules 
      phonos = phonograms[phono].split("") //so let's split that into characters 
      for j in phonos 
       phonograms.splice(phono++, 0, phonos[j]) //and insert to 
                 //the list of phonograms 
      i++ 
Смежные вопросы