Hacer mientras sea falso
Hoy, en el trabajo, uno de mis colegas describía el caso de uso de do while (falso). La persona con la que estaba hablando pensó que esto era una tontería y que si las declaraciones serían mucho mejores. Luego procedimos a perder la mitad de nuestro día discutiendo la mejor manera de escribir algo equivalente a:
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);
Este es un idioma que se encuentra en c con bastante frecuencia. Su programa debe producir el mismo resultado que el pseudocódigo siguiente, según las condiciones.
do
{
result += "A";
if ( C1)
{
result += "B";
break;
}
result += "C"
if ( C2 )
{
result += "D";
break;
}
result += "E";
}
while(false);
print(result);
Por lo tanto, la entrada podría ser:
1. C1 = true, C2 = true
2. C1 = true, C2 = false
3. C1 = false, C2 = true
4. C1 = false, C2 = false
y la salida debería ser:
1. "AB"
2. "AB"
3. "ACD"
4. "ACE"
Este es el código de golf, por lo que las respuestas se juzgarán por bytes. Las lagunas estándar están prohibidas.
Sí, esta es simple, pero esperamos ver algunas respuestas creativas, espero que la simplicidad aliente a las personas a usar idiomas con los que tienen menos confianza.
return resulten lugar de break. Luego obtienes los bonos de reutilización y simplifica el código de llamada también. Pero tal vez me estoy perdiendo algo.
gotoporque usar gotoes una mala forma :)
do{}while(false)es dentro de macros. Un simple ifno es suficiente, porque interactúa mal con elses alrededor que pueden estar presentes. Sin una macro, también puede eliminar el doy while.