Lazarus — открытая среда разработки программного обеспечения на языке Object Pascal для компилятора Free Pascal. Основная цель — предоставление кроссплатформенных и свободных средств разработки в Delphi-подобном окружении (по аналогии с Harbour для Clipper).
Позволяет переносить Delphi-программы с графическим интерфейсом в различные операционные системы: Linux, FreeBSD, Mac OS X, Microsoft Windows, Android[1].
В отличие от MSE — фокус на преобразование проектов Delphi. Библиотека визуальных компонентов — близкая к VCL Lazarus Component Library (LCL), практически полностью поддерживает виджеты Win32, GTK1, GTK2, Carbon[en], Qt, fpGUI, Cocoa, частично — виджеты WinCE[2]. Реализован основной набор элементов управления, редактор форм и инспектор объектов максимально приближены к Delphi; однако полной совместимости с Delphi нет. Интерфейс отладки реализован через GDB. Редактор — с системой подсказок, гипертекстовой навигацией по исходным текстам, автозавершением, автоформатированием (на механизмах Jedi Code Format), поддержкой рефакторинга. Интерфейс и редактор полностью юникодные (UTF-8).
Для компиляции поддерживаются два стиля ассемблера: Intel и AT&T. Также со стороны компилятора поддерживаются различные паскаль-стили: Object Pascal, Turbo Pascal, Mac Pascal, Delphi. Реализован собственный формат управления пакетами. Обеспечивается автосборка среды (под новую библиотеку виджетов). Поддерживаемые для компиляции операционные системы: Linux, Microsoft Windows (Win32, Win64), Mac OS X, FreeBSD, WinCE, OS/2.
Распространяется на условиях GNU General Public License, а значительная часть библиотек, в том числе LCL — на условиях модифицированной GNU Lesser General Public License. Альтернативная сборки среды — CodeTyphon, включает ряд дополнительных пакетов и компонентов, в частности, OpenGL-движок GLScene.
Среди программ, написанных с использованием Lazarus — двухпанельные файловые менеджеры Total Commander и Double Commander, аудиоредактор easyMP3Gain, аналог GNOME для Windows Greengnome, архиватор PeaZip, панель управления дистрибутива Ubuntu, САПР ZCad.
Объяснение:
Так как язык не указан, приведу пример на SWI-Prolog.
Код:
read_int(Int) :- read(Int), integer(Int).split_int_by_numbers(0, []) :- !.split_int_by_numbers(N, [Number|Ints]) :- Number is mod(N, 10), RestN is div(N, 10), split_int_by_numbers(RestN, Ints).test_to_div(_, []).test_to_div(N, [Number|Ints]) :- mod(N, Number) =:= 0, test_to_div(N, Ints). test(Int) :- split_int_by_numbers(Int, Numbers), test_to_div(Int, Numbers), write(Int), write(" - Yes!"), nl.test(Int) :- write(Int), write(" - No!"), nl.?- read_int(Int), test(Int).