Избавиться от условия в выражении

Избавиться от условия в выражении

Необходимо избавиться от условного оператора «Если» в алгоритме:

Если А = 0 Тогда
    Б = 2;
Иначе
    Б = 1;
КонецЕсли;

Нельзя использовать ЛЮБЫЕ условные конструкции, в т.ч. ?(А = 0, 2, 1). Переменной А может быть присвоено значение 0 или 1.

Решение

Б = 2 - А;

 

Если Вы знаете другое решение задачи, пишите в комментариях.

Другие задачи с собеседований:

Поиск одинаковых табличных частей
Получение курсов валют для каждого документа
Загадка про альпиниста и веревку

10 комментариев

  1. Еще задача из той же серии: Б = ?(А=0, -1, 10). А может принимать значения 0 или -1.

  2. Решение корректно, даже с точки зрения асемблериста

  3. Можно еще А записать обратным порядком байт и сложить с 2

  4. А вот вариант решения для любого значения переменной «А»:
    Попытка
    В = А/А;
    Исключение
    В = 2;
    КонецПопытки;

  5. Для любого неотрицательного А без Попытка/Исключение

    Б = 2 — ((А+2)%(А+1));

  6. Для любого неположительного А следует поменять местами делимое и делитель

  7. А вот и общий случай для любого А, чет потупил сначала:

    Б = 2 — (А*А+2)%(А*А+1);

  8. Соответствие = Новый Соответствие;
    Соответствие.Вставить(0,2);
    Соответствие.Вставить(1,1);

    Возврат Соответствие.Получить(A);

Добавить комментарий

Ваш e-mail не будет опубликован.