function Find<T>(self: array of T; p: T->boolean): T; extensionmethod; Выполняет поиск первого элемента в массиве, удовлетворяющего предикату. Если не найден, возвращается нулевое значение соответствующего типа
Теперь переведем это на общепонятный язык. Во-первых, не существует процедуры Find в языке PascalABC.NET. Во-вторых, имеется функция Find, реализующая так называемое расширение, т.е. которая в тексте программы следует непосредственно за точкой. Если имеется одномерный массив А, содержащий элементы некоторого типа, то конструкция A.Find(лямбда-выражение типа boolean) позволяет найти в массиве А первый в порядке следования элемент, подстановка значения которого в лямбда-выражение сделает это выражение истинным. Не знаете, что такое лямбда-выражение? Ну что же, я не могу в ответе рассказывать теорию "лямбд", да и вопрос был не об этом.
1. Определим наибольшее натуральное число, куб которого не превышает 2019. ∛2019 ≈ 12.6; отбрасывая дробную часть, получаем 12. 2. Выпишем набор натуральных чисел от 1 до 12 и их кубов: 1-1, 2-8, 3-27, 4-64, 5-125, 6-216, 7-343, 8-512, 9-729, 10-1000, 11-1331, 12-1728 3. Определим при "жадного" алгоритма набор кубов, дающий в сумме 2019 (из 2019 поочередно вычитаем.максимально возможные кубы): 2019-1728=291, 291-216=75, 75-64=11, 11-8=3, а 3 - это три раза по 1. Получаются кубы чисел 12, 6, 4, 2, 1, 1, 1 - всего СЕМЬ чисел. 4. Попытаемся улучшить найденное решение, отбрасывая те, которые найдут семь и более чисел.
Если взять число 11³=1331, то 2019-1331=688 и нужно составить его из кубов не более, чем 5 чисел. 688-512=176, 176-125=51, 51-27=24 ... и слишком длинно. 688-2×343=2, 2-1=1, 1-1=0 - 4 числа. Улучшенное решение: 2019 = 11³+7³+7³+1³+1³
function Find<T>(self: array of T; p: T->boolean): T; extensionmethod;
Выполняет поиск первого элемента в массиве, удовлетворяющего предикату. Если не найден, возвращается нулевое значение соответствующего типа
Теперь переведем это на общепонятный язык.
Во-первых, не существует процедуры Find в языке PascalABC.NET.
Во-вторых, имеется функция Find, реализующая так называемое расширение, т.е. которая в тексте программы следует непосредственно за точкой.
Если имеется одномерный массив А, содержащий элементы некоторого типа, то конструкция A.Find(лямбда-выражение типа boolean) позволяет найти в массиве А первый в порядке следования элемент, подстановка значения которого в лямбда-выражение сделает это выражение истинным. Не знаете, что такое лямбда-выражение? Ну что же, я не могу в ответе рассказывать теорию "лямбд", да и вопрос был не об этом.
2. Выпишем набор натуральных чисел от 1 до 12 и их кубов:
1-1, 2-8, 3-27, 4-64, 5-125, 6-216, 7-343, 8-512, 9-729, 10-1000, 11-1331, 12-1728
3. Определим при "жадного" алгоритма набор кубов, дающий в сумме 2019 (из 2019 поочередно вычитаем.максимально возможные кубы):
2019-1728=291, 291-216=75, 75-64=11, 11-8=3, а 3 - это три раза по 1. Получаются кубы чисел 12, 6, 4, 2, 1, 1, 1 - всего СЕМЬ чисел.
4. Попытаемся улучшить найденное решение, отбрасывая те, которые найдут семь и более чисел.
Если взять число 11³=1331, то 2019-1331=688 и нужно составить его из кубов не более, чем 5 чисел.
688-512=176, 176-125=51, 51-27=24 ... и слишком длинно.
688-2×343=2, 2-1=1, 1-1=0 - 4 числа.
Улучшенное решение: 2019 = 11³+7³+7³+1³+1³
Лучшего решения нет.