[Programming Basics] Задача 6 от изпита на 07 Май 2017 - възможна грешна интерпретация на условието
Здравейте,
след като изкарах Programming Basics на Java, реших да си реша изпита и на C#. Стигайки до задача 6 реших да я реша по друг начин от този, който използвах на изпита и установих, че е възможно условието да бъде подвеждащо за някой. Там пише "Да се напише програма, която прочита от конзолата три цели числа – M, N и L, и генерира всички числа в диапазона от MNL до 111".
Нека вземем за пример числата в първият нулев тест - М = 9, N = 7 и L = 3. Четейки буквално условието трябва да генерираме числата от 973 до 111. Можем да го направим като преобразуваме входните 3 числа до 1 трицифрено (в случая 973) и пуснем един обратен (намаляващ) for-цикъл от трицифреното число (в случая 973) до 111. Това ще генерира следната поредица от числа: 973, 972, 971, 970, 969 и т.н., върху които със if-проверки да извършим останалите манипулации описани в условието.
Това решение, макар и следващо условието цитирано по-горе се счита за грешно от judge. За да стигнем до верните отговори трябва да направим 3 цикъла, които съответно броят от М до 1, от N до 1 и от L до 1. Това обаче генерира следната поредица от числа (пак спрямо горния пример): 973, 972, 971, 963 , 962, 961, 953, 952, 951 и т.н., което може да се счете за не много отговарящо на цитираното условие, защото пропуска доста от числата между 973 и 111.
Та това е, ако автора на задачата прочете това може да реши, че условието трябва да се поправи, а може и аз да не го тълкувам правилно сега, след като на изпита си го реших по правилния за judge начин и даже не ми хрумна другото тълкование.
Приятна вечер
И това е вярно - ако използваме 1 for-цикъл генерираме числа, които съдържат 0, което не отговаря на условието. Тоест, и двата подхода нарушават условието.
Може би трябва да е нещо като "Да се напише програма, която прочита от конзолата три цифри – M, N и L, и генерира всички трицифрени числа в диапазона от M(стотици)N(десетици)L(единици) до 111, получени чрез намаляване на М, N и L до 1". (така май стана съвсем забатачено).
Карай, нали я решихме на изпита .
Колега vkachanov бях направил тема за тази задача заради неясното условие.
Махнаха я от форума защото беше неудобна.
Затова спрях да пиша във форума.
Не знаех за другата тема, но не виждам какво и е неудобното - просто размишления върху условието на една задача. Както казах на изпита си я реших без въобще да ми хрумне друга интерпретация.