Lakukan Saat Salah
Di tempat kerja hari ini salah seorang rekan saya menggambarkan use case untuk do while (false). Orang yang diajaknya bicara berpikir bahwa ini konyol dan sesederhana itu jika pernyataan akan jauh lebih baik. Kami kemudian menghabiskan setengah hari kami untuk membahas cara terbaik untuk menulis sesuatu yang setara dengan:
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);
Ini adalah ungkapan yang sering ditemukan di c. Program Anda harus menghasilkan output yang sama dengan pseudo-code di bawah ini tergantung pada kondisinya.
do
{
result += "A";
if ( C1)
{
result += "B";
break;
}
result += "C"
if ( C2 )
{
result += "D";
break;
}
result += "E";
}
while(false);
print(result);
Karena itu inputnya bisa:
1. C1 = true, C2 = true
2. C1 = true, C2 = false
3. C1 = false, C2 = true
4. C1 = false, C2 = false
dan hasilnya harus:
1. "AB"
2. "AB"
3. "ACD"
4. "ACE"
Ini adalah kode-golf sehingga jawaban akan dinilai berdasarkan byte. Celah standar dilarang.
Ya ini sederhana, tapi semoga kita akan melihat beberapa jawaban kreatif, saya berharap kesederhanaan akan mendorong orang untuk menggunakan bahasa yang kurang mereka percayai.
return resultmenggantikan break. Kemudian Anda mendapatkan bonus kegunaan ulang dan menyederhanakan kode panggilan juga. Tapi mungkin aku kehilangan sesuatu.
gotokarena menggunakan gotobentuk yang buruk :)
do{}while(false)adalah di dalam makro. Sederhana iftidak cukup, karena berinteraksi buruk dengan elsesekitar yang mungkin ada. Tanpa makro Anda juga dapat menghapus dodan while.