Способ мышления-Форт


Глава 4. Детализированная разработка/решение задачи - часть 32


Блок # 22 0 \ Римские цифры ... 8/18/83 1 : ПО-РИМСКИ ( число -- ) 1000 /MOD ТЫСЯЧИ ЦИФРА 2 100 /MOD СОТНИ ЦИФРА 3 10 /MOD ДЕСЯТКИ ЦИФРА 4 ЕДИНИЦЫ ЦИФРА ;

ИТОГИ

В этой главе мы научились разрабатывать отдельные компоненты, начав с размышлений над их синтаксисом, затем продолжив определением их алгоритма(ов) и структур данных, и завершив все реализацией на Форте.

Этой главой мы завершаем обсуждение стадии проектирования. В оставшейся части книги мы рассмотрим стиль и технику программирования.

ЛИТЕРАТУРА

1. G. Polya. `How To Solve It: A New Aspect of Mathematical Method,` (Princeton, New Jersey, Princeton University Press). 2. Leslie A. Hart, `How the Brain Works,` (c) 1975 by Leslie A. Hart, (New York, Basic Books, Inc., 1975). 3. Evan Rosen, "High Speed, Low Memory Consuption Structures," `1982 FORML Conference Proceedings,` p.191. 4. Michael Stolowitz, "A Compiler for Programmable Logic in FORTH," `1982 FORML Conference Proceedings,` p.257.

ДЛЯ ДАЛЬНЕЙШИХ РАЗМЫШЛЕНИЙ

Спроектируйте компонент и опишите алгоритм(ы), необходимые для имитации тасования колоды карт. Этот алгоритм должен давать массив чисел от 0 до 51, сформированный случайным образом.

Разумеется, специальным ограничением здесь является то, что ни одна карта не может встречаться в колоде дважды.

Можно положить, что у Вас имеется генератор случайных чисел по имени CHOOSE. Он берет со стека аргумент "n" и дает случайное число в диапазоне от нуля до n-1 включительно. (См. "Генератор бессмысленных сообщений", глава 10 из "Начального курса...")

Сможете ли Вы спроектировать алгоритм перетасовки так, чтобы избежать утомительных проверок неопределенного количества ячеек памяти при каждом прохождении цикла? Можете ли Вы этого достичь, используя всего один массив?




Начало  Назад