Задания по javascript
Помогите пожалуйста решить последние 2 задания, решил все кроме этих двух, только начинаю осваивать js, буду очень благодарен
1. Напишите скрипт, доказывающий или проверяющий, что для множества натуральных чисел выполняется равенство: 1+2+...+n = n(n+1)/2, где n - любое натуральное число. 2. Расстояние между двумя словами равной длины - количество букв, в которых различаются эти слова. В заданном предложении найти пару наиболее далеко удаленных слов заданной длины. |
Первое:
function func(n){
let sum=0,
i=1;
while(i<=n)
sum+=i++;
return sum===n*(n+1)/2;
};
alert(func(5));
|
function distance(word1, word2) {
if(word1.length !== word2.length) throw new Error("слова разной длины");
return [...word1].reduce((m, v, i) => v !== word2[i] ? m + 1 : m, 0);
}
function* pairs(xs) {
for(const [x, ...ys] of tails(xs))
for(const y of xs)
yield { pair: [x, y], distance: distance(x, y) };
}
function* tails(xs) {
const a = [...xs];
while(a.length) {
yield [...a];
a.shift();
}
}
function findFurthestPair(sentence, wordLength) {
const words = sentence.split(/[–—̶˗“”„ _\-.()'",!?:;\r\n\t]+/).filter(word => word.length === wordLength);
let match = { pair: null, distance: -1 };
for(const { pair, distance } of pairs(words)) {
if(distance > match.distance)
match = { pair, distance };
}
return match.pair;
}
var pair = findFurthestPair(`
Помогите пожалуйста решить последние 2 задания, решил все кроме этих двух, только
начинаю осваивать js, буду очень благодарен
1. Напишите скрипт, доказывающий или проверяющий, что для множества натуральных чисел
выполняется равенство: 1+2+...+n = n(n+1)/2, где n - любое натуральное число.
2. Расстояние между двумя словами равной длины - количество букв, в которых различаются эти
слова. В заданном предложении найти пару наиболее далеко удаленных слов заданной длины.
`, 10);
alert(pair);
|
Malleys,
:thanks: и как вариант ...
function distance(word1, word2) {
if(word1.length !== word2.length) throw new Error("слова разной длины");
return [...word1].filter((v, i) => v !== word2[i]).length;
}
|
Cпасибо Большое!!!!
|
Новая, но не хипстерская(!) фича языка. Пример этого вашего lookbehind в регексах:
var sentence = 'a bb ccc dddd eee _ff g';
var wordLength = 2;
var words = sentence.match(RegExp('(?<![a-z])[a-z]{' + wordLength + '}(?![a-z])', 'ig'));
alert(words.join('\n'));
|
Цитата:
|
| Часовой пояс GMT +3, время: 01:27. |