Делать пока ложно
Сегодня на работе один из моих коллег описывал вариант использования для do while (false). Человек, с которым он разговаривал, думал, что это глупо и так просто, если заявления будут намного лучше. Затем мы потратили впустую половину нашего дня, обсуждая лучший способ написать что-то эквивалентное:
do
{
//some code that should always execute...
if ( condition )
{
//do some stuff
break;
}
//some code that should execute if condition is not true
if ( condition2 )
{
//do some more stuff
break;
}
//further code that should not execute if condition or condition2 are true
}
while(false);
Это идиома, которая встречается в c довольно часто. Ваша программа должна выдавать тот же вывод, что и приведенный ниже псевдокод, в зависимости от условий.
do
{
result += "A";
if ( C1)
{
result += "B";
break;
}
result += "C"
if ( C2 )
{
result += "D";
break;
}
result += "E";
}
while(false);
print(result);
Поэтому вход может быть:
1. C1 = true, C2 = true
2. C1 = true, C2 = false
3. C1 = false, C2 = true
4. C1 = false, C2 = false
и вывод должен быть:
1. "AB"
2. "AB"
3. "ACD"
4. "ACE"
Это код-гольф, поэтому ответы будут оцениваться по байтам. Стандартные лазейки запрещены.
Да, это простой вопрос, но, надеюсь, мы увидим креативные ответы. Надеюсь, простота побудит людей использовать языки, в которых они менее уверены.
return result
вместо break
. Тогда вы получаете бонусы за повторное использование и упрощение кода вызова. Но, возможно, я что-то упустил.
goto
использовать goto
это плохо :)
do{}while(false)
, было внутри макросов. Простого if
недостаточно, потому что оно плохо взаимодействует else
с окружающими, которые могут присутствовать. Без макроса вы можете также удалить do
и while
.