2015-05-05 3 views
-3

Если у меня есть ряд писем:Как я могу составить список групп букв?

a, b, d, e, f, g, h, i, l, u, ü 

Как я могу получить их группируют и варьировались так, что someMagicFunction ('а, б, г, д, е, ж, з, я, л, и, ü ')

возвращает что-то вроде этого:

[ 
    "a-b" 
    "d-g" 
    "h-i" 
    "l", 
    "u-ü" 
] 

Является ли это легко сделать?

NB: Там может быть также символы, как: ö, ä, ü, ß и т.д.

+3

что логика этого вывода? – renakre

+0

Мне нужно сделать это для проекта, который я делаю –

+1

нормально, но что решает, как вы группируете буквы. Первая группа - 2 символа, вторая - 4, затем 2, затем 1. Что управляет этим? –

ответ

0

я могу предложить элементарную "волшебная функция" решение. Я бы хотел, чтобы вы отправили немного больше о том, что вы пробовали, или, по крайней мере, о каком-то направлении мышления относительно решения. Я также не понимаю, как должны работать специальные персонажи, например, они должны быть включены как часть обычного алфавита?

В любом случае, мое предложение состоит в том, чтобы создать массив, содержащий все буквы алфавита, в том числе специальные, в которых они нужны/нужны. Затем вы перебираете массив «рядов букв» (назовите его test), и для каждого символа в нем проверьте, находится ли его индекс в массиве alphabet сразу после индекса символа, который предшествует ему в массиве test. Если нет, вы можете переместить его в новое пространство в другой массив (назовите его grouped).

Если (как, если символ приходит после того, как тот же предыдущий элемент в обоих alphabet и test), вы делаете еще один чек, чтобы увидеть, если характер после его в test массиве также приходит после него в alphabet массив. Если это так, это означает, что вы можете просто продолжить следующую итерацию цикла test, иначе это означает, что следующий символ в test будет прерывистым символом, поэтому вы можете изменить последнюю строку, которую вы ввели в grouped, чтобы включить "-"+test[i].

function someMagicFunction(test){ 
    var alphabet = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o", "ö","p","q","r","s","t","u","ü","v","w","x","y","z"]; 
    var grouped = []; 

    for(var i=0; i<test.length; i++){ 
     if (grouped.length && alphabet.indexOf(test[i]) - alphabet.indexOf(test[i-1])==1){ 
      if(alphabet.indexOf(test[i+1])-alphabet.indexOf(test[i])==1) 
       continue; 
      else grouped[grouped.length-1] += "-"+test[i]; 
     } 
     else 
      grouped.push(test[i]); 
    } 
    return grouped; 
} 

var series = ["a", "b", "d", "e", "f", "g", "h", "i", "l", "u", "ü"]; 
console.log(someMagicFunction(series)); 

Вы можете просмотреть результаты на JSBin: http://jsbin.com/kigozelaji/1/edit?js,console

Смежные вопросы