а еще убрать (игла == null) в условии цикла
а, да, это же я скопировал вариант ilobv, а не Петра. Пётр, кстати, зачем Вы картинку вставили вместо текста?
Вобщем как-то так должно быть
while i < сундуки.Length {
заяц = ЗАЯЦ(сундуки[i]);
if (заяц != null) {
утка = УТКА(заяц);
if (утка != null) {
яйцо = ЯЙЦО(утка);
if (яйцо != null) {
игла = ИГЛА(яйцо);
i = сундуки.Length;
}
}
}
i = i + 1
}
Ну что вы, это изврат.
Не наш метод.
Да ладно Вам, у каждого свои тараканы, одному нужны инварианты, другой носится с циклом Дейкстры, третьему нужна выразительность, четвертому "только хардкор", пятому эффективное решение, ...
Так что и этот вариант ничуть не более извращенный, чем другие.
Вы же видите, что обе, т. н., "задачи" по своей сути тривиальны до крайности. Тут "решать"-то нечего. Профессионал не может позволить себе роскошь задумываться над такой ерундой.
Конечно, задача простейшая, и каждый решает её действительно не задумываясь, по своему, в соответствии со своим представлении о прекрасном.
Но я не согласен, что не стоит и "задумываться над такой ерундой" - сколько раз замечал, что новый подход к решению даже тривиальных задач существенно упрощает решение сложных, ибо большая сложная всегда разбивается на тривиальные.
А вот с точки зрения использования выразительных средств это - да, задачи.
Мы живем в реальном мире и вынуждены ограничивать свои фантазии, ибо иначе они переходят в область вакуумных сфероидов.
В этом смысле последний вариант ничуть не хуже варианта с andwhile, хотя бы потому, что реален.