Начну с описания задачи, а потом приведу код - так будет сразу всем все понятно.
И так у нас с вами есть строка такого вида: 6396147273566661237497561616536
Это просто строка и является массивом по умолчанию.
Задача простая - нам надо сложить числа по формуле: первое+второе второе+третье третье+четвертое ....
При этом результат должен быть приведет в диапазон от 1 до 9, т.е. есть у нас результат равен 10 то следующий шаг мы складываем 1+0=1 или результат равен 17, тогда 1+7=8
Соответственно последнее число мы не складываем, так как оно одно и в формулу не попадает.
Что вышло:
6396147273566661237497561616536
936752991823337351247327777289
И так нам надо делать уменьшая все строки к 8 или 6 параметрам. НО это в общем не важно - хоть к одному.
Вот пример массива и 10 строк:
6396147273566661237497561616536
936752991823337351247327777289
39437291915661186362159555918
3471921116237295998365511519
728123227851925598292162661
91935549646127158122378837
1138194611739864934516721
242914172813851437967493
66215589194246571764243
3836148114661238841667
229753925137352735734
Да, это я считаю не руками (я же не они). Это считает небольшой код.
Теперь к проблеме.
$words = 6396147273566661237497561616536;
//////////////////// СЧИТАЕМ ПЕРВУЮ СТРОКУ
$countWords = strlen($words);
if ($countWords >$_POST["size"]) {
for($k=0;$k < $countWords-1;$k++) {
$sum=$words[$k]+$words[$k+1];
$countSum = strlen($sum);
if ($countSum ==2) {
$sum1 = substr("$sum", 0, 1);
$sum2 = substr("$sum", 1, 1);
$sum = $sum1+$sum2;
}
// СОЗДАЕМ МАССИВ СТРОКИ
$massiv[$k] = $sum;
}
$string1 = implode("", $massiv);
//////////////////// ВЫВОДИМ ПЕРВУЮ СТРОКУ
print $string1."<br>";
}
И так у нас вышла строка 936752991823337351247327777289
Я называю ее ПЕРВОЙ строкой - потому что это первая расчетная строка. Так то она у нас по факту вторая.
Что мы получили в итоге? Получили массив $string1
Зачем он нам нужен как массив? Что бы работать дальше с расчетами:
//////////////////// СЧИТАЕМ СТРОКУ 2
$countString1 = strlen($string1);
if ($countString1 >$_POST["size"]) {
for($k=0;$k < $countString1-1;$k++) {
$sum=$string1[$k]+$string1[$k+1];
$countSum = strlen($sum);
if ($countSum ==2) {
$sum1 = substr("$sum", 0, 1);
$sum2 = substr("$sum", 1, 1);
$sum = $sum1+$sum2;
}
// СОЗДАЕМ МАССИВ СТРОКИ
$massiv1[$k] = $sum;
}
$string2 = implode("", $massiv1);
//////////////////// ВЫВОДИМ СТРОКУ 2
print $string2."<br>";
}
И так, вот моя проблема. Я никак не пойму (т.е. где то рядом летает мысль, но реализовать не могу) как мне циклом не только считать строку но сами строки ввести в цикл. Сейчас я просто сделал 10 таких вот расчетов, просто для проверки работы. Но это не по нашему совсем.
А если у меня будет 100 строк? Я же не буду копировать код, менять параметры и радоваться.
В чем проблема - массив с которым надо работать формируется после расчетов, который основан на этом массиве!