Мы должны решить проблему liars в прологе в нескольких средах с ограничениями (ECLiPSe ic, ECLiPSe fd, SWI-пролог, GNU-пролог, NaxosSolver и т. Д.). Я использовал хвостовую рекурсию (я думаю) и столько сокращений, сколько я мог придумать (таким образом, я думаю, что дерево разрешения не настолько велико, как могло бы быть. По запросу я могу опубликовать свой код.Увеличение размера стека в ECLiPSe/пролог/fd
Когда номер данных становится 10000-50000, я получаю переполнение стека в fd и ic в ECLiPSe, а в SWI-прологе программа выполняется навсегда. Поэтому я хотел бы, чтобы увеличил размер стека в ECLiPSe, но я не вижу , как я попытался написать в 1-й строке моего кода это:
:-set_flag(local_stack_allocated, 512).
, но он говорит, из диапазона
.Посмотрите, что говорит eclipse, что может быть полезно: * Переполнение глобального стека, несмотря на сбор мусора! Вы можете использовать опцию «-g kBytes» (GLOBALSIZE), чтобы иметь больший стек. Пиковые размеры были: глобальный стек 128832 кбайт, стек след 5312 кбайт
Ум ... Вы пытались добавить '-g 512' в командную строку, как это предлагает? –
Как? Я так стараюсь -g 512, readclaims («liars50000.txt», I), лжецы (I, Sol). , но я получаю поток строк 27: синтаксическая ошибка: неожиданный токен – gsamaras
К тому времени, когда вы доберетесь до '? -', Prolog уже запущен, и уже слишком поздно. Вам нужно передать аргументы командной строки Eclipse.Отредактируйте любое меню или значок, которые вы используете для запуска Eclipse, и добавьте там аргументы командной строки. Не в вашей программе. До. –