Урок 3.2. Команды REPEAT, CONCAT
Программа ULAM
Алгорит ULAM: берет целое число n. Если n четное число, поделить его на 2. Если n нечетное число, умножить его на 3 и прибавить 1. ULAM считает, сколько предпринято шагов, чтобы n стало 1.
Команда REPEAT: выполняет команду(ы) ПОКА тест верен.
Доступ: (Loop)(REPEAT)
Команда CONCAT(list1, list2): Соединяет "список1" и "список2" в один.
Доступ: ,& (List)(Concatenate)
Код:
EXPORT ULAM(N)
BEGIN
LOCAL C := 1, L0 := {N};
REPEAT
IF FP(N/2) == 0 THEN
N := N/2;
ELSE
N := 3*N+1;
END;
C := C+1;
L0 := CONCAT(L0, {N});
UNTIL N == 1;
MSGBOX("NO. OF STEPS = "+C);
RETURN L0;
END;
Примеры:
ULAM(5) выдает:
Сообщение: "Кол-во попыток=6"
Список: {5, 16, 8, 4, 2, 1}
ULAM(22) выдает:
Сообщение: "Кол-во попыток =16"
Список: {22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1}