Czyń fałszywie
W pracy dzisiaj jeden z moich kolegów opisywał przypadek użycia do while (fałsz). Osoba, z którą rozmawiał, pomyślała, że to głupie i proste, jeśli stwierdzenia byłyby znacznie lepsze. Następnie zmarnowaliśmy połowę naszego dnia, omawiając najlepszy sposób napisania czegoś równoważnego do:
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);
Jest to idiom, który dość często występuje w c. Twój program powinien generować takie same wyniki, jak poniższy pseudo-kod, w zależności od warunków.
do
{
result += "A";
if ( C1)
{
result += "B";
break;
}
result += "C"
if ( C2 )
{
result += "D";
break;
}
result += "E";
}
while(false);
print(result);
Dlatego dane wejściowe mogą być:
1. C1 = true, C2 = true
2. C1 = true, C2 = false
3. C1 = false, C2 = true
4. C1 = false, C2 = false
i wynik powinien być:
1. "AB"
2. "AB"
3. "ACD"
4. "ACE"
To jest golf golfowy, więc odpowiedzi będą oceniane według bajtów. Standardowe luki są zabronione.
Tak, to jest proste, ale mam nadzieję, że zobaczymy kilka kreatywnych odpowiedzi. Mam nadzieję, że prostota zachęci ludzi do używania języków, z którymi są mniej pewni.
return resultzamiast break. Następnie otrzymasz bonusy za ponowne użycie i uproszczenie kodu wywoławczego. Ale może coś mi umknęło.
gotoponieważ używanie gotojest złej formie :)
do{}while(false)to makra. Proste ifnie wystarcza, ponieważ źle współdziała z elseotoczeniem, które może być obecne. Bez makra równie dobrze możesz usunąć doi while.