Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
ELSE 2 D U P ПЕРВЫЙ ПЕРВЫЙ -
IF ПЕРВЫЙ NIP ELSE ХВОСТ РЕКУРСИЯ THEN Экр # 54 C: PR O L O G.BLK 0 \ ПРИМЕР РЕКУРСИИ: ВЫЧИСЛЕНИЕ ФАКТОРИАЛА 2 ( N М -> ) ФАКТОРИАЛ OVER 0-
I FN IP ELSE OVER * SWAP 1- SWAP РЕКУРСИЯ THEN
IF ДОБАВИТЬ-ЦЕЛИ FALSE ELSE ВОЗВРАТ IF FALSE ELSE FALSE TRUE THEN THEN ELSE TRUE DUP |
Экр # 52 C. PROLLOG.BLK
0 \ ЛИСПОПОДОБНЫЕ СЛОВА ПОСТРОЕНИЯ СПИСКОВ
1 \ НА ФОРТЕ-83
3 4 5 6 7 8 9 278 |
2 ( СШ N -> СП 2)
NH blft DUP I <
IF 2DR O P НУЛЬ
ELSE
BEGIN 1- DUP
WHILE SWAP Х ВОСТ SWAP
REPEAT DROP
THEN
Экр # 57 C PROLOG. BLK
О \ ИНТЕРПРЕТАТОР ПРАВИЛ ПРОЛОГА
1
2 ( -> ФЛАГ ИСТИНА | ЛОЖЬ)
3 \ ФЛАГ - ИСТИНА -> УСПЕХ
4: Х ПОИСК
5 ЦЕЛИ @ НОЛЬ NOT
6
7
8
9
10
11
279
Экр # 60 C: PROLOG.BLK
0 \ ИНТЕРПРЕТАТОР ПРАВИЛ ПРОЛОГА
1
2 20 НОВСПИСОК ЦЕЛИ
3 20 НОВСПИСОК РЕШЕНИЯ
4 200 НОВСПИСОК ПРЕДЛОЖЕНИЯ
5 ( -> ЦЕЛЬ)
6: ПОЛУЧИТЬ-ЦЕЛЬ ЦЕЛИ @ DUP ПЕРВЫЙ SWAP
7 ХВОСТ ЦЕЛИ SWAP УСТАНОВИТЬ;
8 ( ЦЕЛЬ @ПРЕДЛОЖЕНИЯ1 -> ЦЕЛЬ
9 @ПРЕДЛОЖЕНИЯ2)
10: НАЙТИ-ПРЕДЛОЖЕНИЕ
11 BEGIN 2DUP ПЕРВЫЙ ПЕРВЫЙ DUP > R - R>
12 НОЛЬ OR NOT
13 WHILE ХВОСТ
14 REPEAT
15;
Экр # 63 C: PROLOG.BLK
0 \ ИНТЕРПРЕТАТОР ПРАВИЛ ПРОЛОГА
1 ( -> ФЛАГ)
2 \ ФЛАГ - 'ИСТИНА' -> УСПЕХ
3: ПОИСК
4 6; 7 DEFER ВЫВОД ' ПОИСК IS ВЫВОД |
BEGIN (ПОИСК)
UNTIL
? - РЕШЕНИЯ НУЛЬ УСТАНОВИТЬ ЦЕЛИ DUP НУЛЬ
УСТАНОВИТЬ
10 ЧТСП ВЫВОД CR
11 ['] ВЫВОД > BODY @ [•] ПОИСК - \ УСТАНОВЛЕН
12 ЛИ ВЫВОД НА ПОИСК?
13 IF
L4 IF." УСПЕХ" ELSE." НЕУДАЧА" THEN
15 THEN;
Экр # 61 CPROLOG.BLK
0 \ ИНТЕРПРЕТАТОР ПРАВИЛ ПРОЛОГА
1 ( ЦЕЛЬ @ ПРЕДЛОЖЕНИЕ -> ФЛАГ)
2 \ ПОИСК ПОДХ.ПРЕДЛОЖЕНИЯ И ПОМЕЩ. В РЕШ.
3 \ ФЛАГ ИСТИНЕН, ЕСЛИ ПРЕДЛОЖЕНИЕ НАЙДЕНО
4: НАЙТИ-ПРЕДЛОЖЕНИЕ? НАЙТИ-ПРЕДЛОЖЕНИЕ
5 DUP НОЛЬ DUP > R
6 IF 2DROP
7 ELSE РЕШЕНИЯ СВЯЗЬ РЕШЕНИЯ СВЯЗЬ
8 THEN R> NOT;
9: ДОБАВИТЬ-ЦЕЛИ РЕШЕНИЯ @ ХВОСТ ПЕРВЫЙ
10 ПЕРВЫЙ ХВОСТ ЦЕЛИ 2СОЕД; ( -> ФЛАГ)
11 \ ФЛАГ - 'ЛОЖЬ', ЕСЛИ СПИСОК РЕШЕНИЯ ПУСТ
12: ВОЗВРАТ РЕШЕНИЯ @ DUP ПЕРВЫЙ SWAP ХВОСТ
13 ПЕРВЫЙ ХВОСТ РЕШЕНИЯ DUP @ ХВОСТ ХВОСТ
14 УСТАНОВИТЬ НАЙТИ-ПРЕДЛОЖЕНИЕ? DUP
15 IF ДОБАВИТЬ-ЦЕЛИ THEN;
Экр # 64 CrPROLOG.BLK
0 \ ИНТЕРПРЕТАТОР ПРАВИЛ ПРОЛОГА
1
2 \ МАКСИМУМ ЦЕЛЕЙ В ПРАВИЛЕ - 4
3: ПРАВИЛО: CREATE HERE DUP 2+,
4 НУЛЬ, 10 ALLOT ЧТСП;
5
6: КЛ ПРЕДЛОЖЕНИЯ @ ВЫДАТЬ;
7: .ЦЕЛИ ЦЕЛИ @ ВЫДАТЬ
8: КАК? РЕШЕНИЯ @ DUP НОЛЬ
9 IF ВЫДАТЬ
10 ELSE
11 BEGIN DUP НОЛЬ NOT
12 WHILE DUP ХВОСТ ПЕРВЫЙ ПЕРВЫЙ ВЫДАТЬ
13 ХВОСТ ХВОСТ
14 REPEAT DROP
15 THEN;
Экр # 62 CPROLOG.BLK
0 \ ИНТЕРПРЕТАТОР ПРАВИЛ ПРОЛОГА
1 ( -> ФЛАГ ИСТИНА | ЛОЖЬ)
2 \ ФЛАГ - 'ИСТИНА' -> УСПЕШНОЕ ЗАВЕРШЕНИЕ
3: 4 5 6 7 8 9 280 |
(ПОИСК)
ЦЕЛИ @ НОЛЬ NOT
IF ПОЛУЧИТЬ-ЦЕЛЬ ПРЕДЛОЖЕНИЯ
@ НАЙТИ-ПРЕДЛОЖЕНИЕ?
IF ДОБАВИТЬ-ЦЕЛИ FALSE
ELSE ОТКАТ
IF FALSE ELSE FALSE TRUE THEN
THEN
ELSE TRUE DUP
THEN
Экр
0\
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 65 C.PROLOG.BLK
ИНТЕРПРЕТАТОР ПРАВИЛ ПРОЛОГА
ДОСТАТОЧНО? KEY?
IF KEY DROP KEY 13-
ELSE FALSE
THEN
СЛЕДЫ ПОИСКА
СЛЕД
BEGIN CR." ЦЕЛИ: " ЦЕЛИ @ ВЫДАТЬ
CR." РЕШЕНИЯ: " КАК? CR (ПОИСК) DUP > R
IF
IF." УСПЕХ" ELSE." НЕУДАЧА" CR THEN
THEN R> ДОСТАТОЧНО? OR
UNTIL
281
Экр # 66 CPROLOG.BLK
О \ АЛГОРИТМ УНИФИКАЦИИ
1
2
3
4 \ ПЕРСП ОПРЕДЕЛЯЕТ ЛОГИЧЕСКИЕ ПЕРЕМЕННЫЕ
5 ( -> PFA+2)
6: ПЕРСП CREATE HERE 2+, 0, DOES>
7 2+;
8
9
10 ПЕРСП FOO ' FOO @ FORGET FOO
11
12
13 ( С -> F) \ F ИСТИННО, ЕСЛИ ПЕРСП
14: ПЕР? DUP @ О- SWAP 4 - @ [ DUP ] LITERAL - AND
15 DROP
Экр # 69 CPROLOG.BLK
0 \ АЛГОРИТМ УНИФИКАЦИИ
1 ( Cl C2 О -> F)
2 \ F - 'ИСТИНА'.ЕСЛИ С1 и С2 УНИФИЦИРУЕМЫ; СВЯЗКИ В О
3: УНИФИКАЦИЯ DUP > R @ ROT OVER ЗНАЧЕНИЕ
4 -ROT ЗНАЧЕНИЕ OVER ПЕР?
5 IF НУЛЬ -ROT R> СПИСОК TRUE ELSE DUP ПЕР?
6 IF SWAP НУЛЬ -ROT R> СПИСОК TRUE
7 ELSE 2DUP ATOM? SWAP ATOM? OR NOT
8 IF 2DUP ПЕРВЫЙ SWAP ПЕРВЫЙ SWAP R@ РЕКУРСИЯ
9 IF ХВОСТ SWAP ХВОСТ SWAP R> РЕКУРСИЯ
10 ELSE 2DROP R> DROP FALSE
11 THEN
12 ELSE R> DROP-
13 THEN
14 THEN
15 THEN;
Экр # 67 CPROLOG.BLK
0 \ АЛГОРИТМ УНИФИКАЦИИ
1 ( С СП1 -> СП2)
2 \ 2АССОЦ-СПИСОК СОДЕРЖИТ ПАРЫ ПЕРСПИС- ЗНАЧЕНИЕ
3: 2АССОЦ DUP НОЛЬ
4 5 6 7 8 9 |
IF NIP
ELSE 2DUP ПЕРВЫЙ -
IF NIP
ELSE ХВОСТ ХВОСТ РЕКУРСИЯ
THEN
THEN
Экр # 70 CPROLOG.BLK '
0\БАЗА ЗНАНИЙ
1
2: МАРКЕР;
3 ПРАВИЛО: ДАЕТ-МОЛОКО (ДАЕТ-МОЛОКО )
4 ПРАВИЛО: ИМЕЕТ-ВОЛОС-ПОКРОВ (ИМЕЕТ-ВОЛОС-ПОКРОВ )
5 ПРАВИЛО: ИММЕТ-РОГА (ИМЕЕТ-РОГА )
6 ПРАВИЛО: МЛЕКОПИТАЮЩЕЕ (МЛЕКОПИТАЮЩЕЕ ДАЕТ-МОЛОКО
7 ИМЕЕТ-ВОЛОС-ПОКРОВ)
8 ПРАВИЛО: КОЗЕЛ1 (КОЗЕЛ БОРЬКА )
9 ПРАВИЛО: КОЗЕЛ2 (КОЗЕЛ МЛЕКОПИТАЮЩЕЕ ИМЕЕТ-РОГА )
10 ПРЕДЛОЖЕНИЯ НУЛЬ УСТАНОВИТЬ ПРЕДЛОЖЕНИЯ ЧТСП
11* (ДАЕТ-МОЛОКО @ ИМЕЕТ-ВОЛОС-ПОКРОВ @ ИМЕЕТ-РОГА
12 @ МЛЕКОПИТАЮЩЕЕ @ КОЗЕЛ 1 @ КОЗЕЛ2 @ )
13 РЕШЕНИЯ НУЛЬ УСТАНОВИТЬ
14 ЦЕЛИ НУЛЬ УСТАНОВИТЬ
15 НУЛЬ КОЗЕЛ ЦЕЛИ СПИСОК
Экр # 68 CrPROLOG.BLK
0 \ АЛГОРИТМ УНИФИКАЦИИ
1
2 ( С1 @О -> СП2)
3: ЗНАЧЕНИЕ OVER ПЕР?
4 |
IF 2DUP 2АССОЦ DUP НОЛЬ
IF 2DROP
ELSE ROT DROP ХВОСТ ПЕРВЫЙ SWAP РЕКУРСИЯ
THEN
ELSE DROP
THEN
Экр # 71 CPROLOG.BLK
0\БАЗА ЗНАНИЙ
1: МАРКЕР; ПРАВИЛО: ДАЕТ-МОЛОКО (ДАЕТ-МОЛОКО )
2 ПРАВИЛО: ИМЕЕТ-ВОЛОС-ПОКРОВ 1
3 (ИМЕЕТ-ВОЛОС-ПОКРОВ ГРУБИЯН )
4 ПРАВИЛО: ИМЕЕТ-ВОЛОС-ПОКРОВ2 (ИМЕЕТ-ВОЛОС-ПОКРОВ )
5 ПРАВИЛО: ИМЕЕТ-РОГА (ИМЕЕТ-РОГА )
6 ПРАВИЛО: МЛЕКОПИТАЮЩЕЕ
7 (МЛЕКОПИТАЮЩЕЕ ДАЕТ-МОЛОКО ИМЕЕТ-ВОЛОС-ПОКРОВ)
8 ПРАВИЛО: КОЗЕЛ 1 (КОЗЕЛ БОРЬКА )
9 ПРАВИЛО: КОЗЕЛ2 (КОЗЕЛ ГРУБИЯН )
Ю ПРАВИЛО: КОЗЕЛЗ (КОЗЕЛ МЛЕКОПИТАЮЩЕЕ ИМЕЕТ-РОГА )
11 ПРЕДЛОЖЕНИЯ НУЛЬ УСТАНОВИТЬ ПРЕДЛОЖЕНИЯ ЧТСП
12 (ДАЕТ-МОЛОКО @ ИМЕЕТ-ВОЛОС-ПОКРОВ 1 @ ИМЕЕТ-ВОЛОС
13 ПОКРОВ2 @ ИМЕЕТ-РОГА @ МЛЕКОПИТАЮЩЕЕ @ КОЗЕЛ 1 @
14 КОЗЕЛ2 @ КОЗЕЛЗ @ ) РЕШЕНИЯ НУЛЬ УСТАНОВИТЬ ЦЕЛИ НУЛЬ 15
УСТАНОВИТЬ НУЛЬ КОЗЕЛ ЦЕЛИ СПИСОК
282
283
Экр # 72 CPROLOG.BLK
О \ ПЕРЕМЕННЫЕ-СПИСКИ И СПИСОК ENV
1
2 ПЕРСП XI
3 ПЕРСП Х2
4 ПЕРСП ХЗ
5
6 VARIABLE A1
7 VARIABLE A2
8 VARIABLE A3
9 20 НОВСПИСОК ENV
10 20 НОВСПИСОК СШ НУЛЬ А2 ХЗ СП1 СПИСОК
11 20 НОВСПИСОК СП2 НУЛЬ А1 ХЗ СП1 @ СП2 СПИСОК
12 20 НОВСПИСОК СПЗ НУЛЬ Al X2 СПЗ СПИСОК
13
14
15
Экр # 90 CPROLOG.BLK
0 \ АЛГОРИТМЫ РАСПОЗНАВАНИЯ ОБРАЗОВ
1 \ КЛАСС - ОПРЕДЕЛЯЮЩЕЕ КЛАССЫ СЛОВО;
2 \ СОДЕРЖИТ: # ТОЧЕК В КЛАССЕ;
3 \ ТОЧКУ-ПРОТОТИП; W(N+1); ТОЧКИ КЛАСТЕРА (X, Y)
( N -> ) \ # ОБУЧАЮЩИХ ТОЧЕК В КЛАССЕ ( N -> @) \ @ УКАЗЫВАЕТ НА ТОЧКУ (X, Y) |
4
5
6
7
8
9;
10
11 \ СКАЛЯРНОЕ ПРОИЗВЕДЕНИЕ ВЕКТОРОВ
12 (@V1 @V2-> N)
13: ТОЧКА 2DUP @ SWAP @ * -ROT 2+ @ SWAP 2+ @ * +;
14
15
Экр # 91 CPROLOG.BLK 0 \ АЛГОРИТМЫ РАСПОЗНАВАНИЯ ОБРАЗОВ 1 ( 'КЛАСС -> ) 2 \ УСРЕДНЕННЫЙ ВЕКТОР - 'КЛАСС ЭТО CFA КЛАССА 3 ■: ПРОТОТИП DUP > BODY DUP 2+6 0 FILL @ DUP > R 0 4 DO DUP > BODY 2+ OVER I SWAP EXECUTE 2DUP @ SWAP +! 2+ @ SWAP 2+ +! LOOP > BODY 2+ DUP DUP @ R@ / OVER! 2+ DUP @ R> / SWAP; |
Экр # 73 CPROLOG.BLK
3 4 5 6 7 8 9 10 И 12 13 14 15 |
0 \ ВЫВОД РАСШИРЕННОГО ПЕРСП
1 ( @ -> ФЛАГ)
2 \ ФЛАГ-ИСТИНЕ, ЕСЛИ @ ЯВЛЯЕТСЯ PFA ПЕРЕМЕННОЙ
: ATOM? BODY> @ [•] НУЛЬ @ -;
( ©СПИСОК -> ) '
: ВЫДАТЬСП CR." ("
BEGIN DUP ПЕРВЫЙ DUP ATOM?
IF DUP НОЛЬ
IF DROP ELSE BODY> > NAME.ID THEN
ELSE DUP ПЕР?
IF 2- BODY> > NAME.ID ELSE РЕКУРСИЯ THEN
THEN ХВОСТ DUP НОЛЬ
UNTIL 8 ( ЗАБОЙ) EMIT." ) " DROP
5
6
7
8;
9 \ РЕШАЮЩАЯ ФУНКЦИЯ ПО ПРИНЦИПУ МИНИМАЛЬНОГО
10 \ РАССТОЯНИЯ
Т1 ( 'КЛАСС @Х -> N)
12: D(X) SWAP > BODY 2+ DUP 4 + @ -ROT ТОЧКА SWAP -;
13
14
15
Экр # 74 CPRQLOG.BLK
О \ ВЫВОД РАСШИРЕННОГО ПЕРСП
1
2 ( ©СПИСОК-> )
3: ВЫДАТЬ DUP @ НОЛЬ
5 7 8 9 |
IF DROP CR." НУЛЬ"
ELSE DUP ATOM?
IF BODY> > NAME.ID
ELSE DUP ПЕР?
IF 2- BODY> > NAME CR." ПЕРСП
ELSE ВЫДАТЬСП
THEN
THEN
THEN
ID
Экр # 92 CPROLOG.BLK 0 \ АЛГОРИТМЫ РАСПОЗНАВАНИЯ ОБРАЗОВ 2 < N-> ) 3: КЛАССЫ CREATE DUP, 2* ALLOT ( N -> 'КЛАССЫ) |
4
5
6; .
7
8 ( @X 'КЛАССЫ -> N) КЛАССИФИКАЦИЯ ТОЧКИ (X, Y) В @х
9: КЛАССИФИКАЦИЯ DUP 0 0 ROT > BODY @ 0
10 |
DO I 3 PICK EXECUTE 4 PICK D(X) DUP 3 PICK >
IF -ROT 2DROP I ELSE DROP THEN
LOOP NIP NIP NIP
284
285
Экр # 93 C: P RO L O G. BL K
О \ АЛГОРИТМЫ РАСПОЗНАВАНИЯ ОБРАЗОВ
I
2 ( X I Y l Y2... XN YN N ' КЛАСС -> )
3: > КЛАСС > B O DY DUP > R 8 + D U P ROT DUP R> ! 4 * + 2-
4 DO I! -2 +L OO P
5;
6
7 ( ' КЛАСС 1 ' КЛАСС 2... 'K J IACCN -> )
8: Ж ЛАССЫ ' > B O DY DUP > R 2+ DUP ROT DUP R> ! 2* + 2-
9 DO I! -2 +LOOP
10,
1 1
12
13
14
15
Экр # 94 C: PR OLO G.B L K
0 \ АЛГОРИТМЫ РАСПОЗНАВАНИЯ ОБРАЗОВ
1
2 \ ПРИМЕР
3
Последнее изменение этой страницы: 2019-03-29; Просмотров: 241; Нарушение авторского права страницы