Робіть у той час як помилковим
Сьогодні на роботі один з моїх колег описував приклад використання для доки (помилково). Людина, з якою він розмовляв, думав, що це дурне і просте, якщо твердження будуть набагато кращими. Тоді ми переходили витрачати половину дня, обговорюючи найкращий спосіб написати щось еквівалентне:
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
s навколо, що може бути присутнім. Без макросу ви також можете видалити do
і while
.