(495)240-8280ПН-СБ с 12:00 до 20:00
We speak English

Урок 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}