10.10.2012, 14:27
|
|
✔
|
|
Регистрация: 04.06.2012
Сообщений: 513
|
|
а, всё, я понял вторую задачу)))
__________________
★ ²º¹³ ☆
|
|
10.10.2012, 14:48
|
|
司会
|
|
Регистрация: 29.02.2012
Сообщений: 198
|
|
подсказка: Столбиком уже не считается да)?
|
|
10.10.2012, 23:21
|
|
√₋̅₁̅
|
|
Регистрация: 18.06.2012
Сообщений: 385
|
|
Сообщение от Maxmaxmахimus
|
Задача № 1
Составить функцию, которая продолжала бы числовую последовательность (арифметическую).
|
Мое решение через полином Лагранжа.
function throwError (fname, error) { throw new Error(fname + ": " + error); }
function lagrangePoly (points) {
if (points.length % 2) { throwError("lagrangePoly", "bad number of elements"); }
var result = [];
var degree = points.length / 2;
var i, j, t, cn, c, c0, c1;
for (i=0, t=[]; i<points.length; i++) {
if (!isFinite(points[i])) { throwError("lagrangePoly", "non-finite value encountered"); }
if (!(i % 2)) { t.push(points[i]); }
}
t.sort(function (a, b) { return a - b; });
for (i=0; i<degree-1; i++) { if (t[i] == t[i+1]) { return false; } }
for (i=0, c1=[]; i<degree; i++) {
c1.push(points[i*2 + 1]);
for (j=1, t=1; j<degree; j++) { t *= points[i*2]; c1.push(-t); }
}
c = [c1];
for (cn=degree; cn>1; cn--) {
c0 = c1;
c1 = [];
for (i=0; i<cn-1; i++) {
t = c0[i * cn + 1] - c0[(i+1) * cn + 1];
for (j=0; j<cn; j++) {
if (j == 1) { continue; }
c1.push(-(c0[i * cn + j] - c0[(i+1) * cn + j]) / t);
}
}
c.push(c1);
}
for (cn=degree-1; cn>-1; cn--) {
result[cn] = c[cn][0];
for (i=1; i<degree-cn; i++) { result[cn] += c[cn][i] * result[cn+i]; }
}
return result;
}
function polyFunction (poly) {
var _poly = [].concat(poly);
return function (x) {
var i, e, y;
for (i=0, e=1, y=0; i<_poly.length; i++) {
y += e * _poly[i];
e *= x;
}
return y;
}
}
function continueSequence (sequence) {
var points = [], polyfn, i;
for (i=0; i<sequence.length; i++) { points.push(i, sequence[i]); }
polyfn = polyFunction(lagrangePoly(points));
return function () { return polyfn(i++); }
}
function maxFraction (value, digits) {
if (!isFinite(value) || !isFinite(digits)) { throwError("maxFraction", "bad argument(s)"); }
var fixed = (+value).toFixed(digits);
var i = fixed.length - 1;
loop: while (true) {
switch (fixed.charAt(i)) {
case "0": i--; continue;
case ".": i--; break loop;
}
break;
}
return fixed.slice(0, i+1);
}
function test (sequence, iterations) {
var generator = continueSequence(sequence);
var result = sequence.join(", ") + "...\n";
while (iterations--) { result += maxFraction(generator(), 6) + (iterations? ", ": "...\n\n"); }
return result;
}
var result = "";
result += test([ 0, 1, 4, 7, 10], 15);
result += test([-2, 1, 4, 7, 10], 15);
result += test([ 0, 1, 3, 6, 10], 15);
result += test([0, 1, 4, 9], 15);
result += test([0, 1, 8, 27], 15);
result += test([9, 8, 7, 6, 5, 4, 3, 2, 1], 15);
result += test([9, 8, 7, 6, 5, 4, 3, 2, 2, 2, 10], 15);
alert(result);
__________________
Гейзенберг, возможно, читал этот тред.
Последний раз редактировалось Дзен-трансгуманист, 11.10.2012 в 01:55.
|
|
11.10.2012, 06:00
|
Профессор
|
|
Регистрация: 20.03.2008
Сообщений: 1,183
|
|
Сообщение от melky
|
это уже было (сортировка слов по количеству повторений в строке) ... ту тему снесли.
|
это что-то не то
__________________
.ня
|
|
11.10.2012, 06:32
|
sinistral
|
|
Регистрация: 28.03.2011
Сообщений: 5,418
|
|
Сообщение от tenshi
|
это что-то не то
|
тогда поподробней, пожалуйста
Сообщение от tenshi
|
есть пачка текстов, нужно реализовать по ним нескольких произвольных слов в произвольном порядке. отранжировать по количеству найденных слов.
|
|
|
11.10.2012, 06:42
|
Профессор
|
|
Регистрация: 20.03.2008
Сообщений: 1,183
|
|
поисковой индекс, только локально на клиенте. например, я делал хтмл документацию, распространяющуюся на cd, где требовался поиск по содержимому.
__________________
.ня
|
|
11.10.2012, 13:09
|
Профессор
|
|
Регистрация: 04.02.2011
Сообщений: 1,815
|
|
Как вам вот такая задача ?
for i=1 to 6 step 2
alert(i)
next i;
распарсите пример на бейсике в вид пригодный для компиляции
о бэйсике - for начало тела цикла, next -конец, шаг это значение которое прибавляется к i
должно получится что то вроде
{
command:"for",
varname:"i",
start:"1",
end:6,
step:2,
code:[
{
command:"call",
functionName:"alert",
params:["i"]
}
]
}
__________________
Лучше калымить в гандурасе чем гандурасить на колыме
Последний раз редактировалось DjDiablo, 11.10.2012 в 13:50.
|
|
11.10.2012, 15:37
|
|
junior
|
|
Регистрация: 29.11.2011
Сообщений: 3,924
|
|
DjDiablo,
For i = 1 To 6 [step 2]
alert(i)
Next
step - может быть опушен. При этом, оба варианта ниже являются правильными
For i = 1 To 6 [step 2]
For j = 1 To 6 [step 2]
alert(i)
Next
Next
For i = 1 To 6 [step 2]
For j = 1 To 6 [step 2]
alert(i)
Next j, i
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Последний раз редактировалось nerv_, 11.10.2012 в 15:39.
|
|
11.10.2012, 16:51
|
|
司会
|
|
Регистрация: 29.02.2012
Сообщений: 198
|
|
Тогда уж напишите синтаксический анализатор кода на javascript)))
Чтобы можно было настраивать токены )) таким образом он был бы универсальным)
|
|
11.10.2012, 17:00
|
Интересующийся
|
|
Регистрация: 14.08.2012
Сообщений: 26
|
|
№ 0, пожалуй самое смешное решение
for ( var i = 0; i < 10; i++ ){
var ololo = i; // сделать так чтобы ololo был виден только в блоке с циклом
....//somecode
ololo = undefined;//или null, кому как нравится
}
// но не тут
window.ololo // undefined
|
|
|
|