Отправляет email-рассылки с помощью сервиса Sendsay

Разговоры обо всем

[FreeTalk] Машина Поста

Greetings!

Раз уж у нас разговоры обо всем, не может ли кто-нибудь мне объяснить, как написать
программу для сложения чисел для машины Поста? Или сортировку по убыванию?

Ответить   Chris Archer Sat, 16 Apr 2005 17:20:48 +0600 (#352241)

 

Ответы:

Приветствую, Chris!

написать

Ух! Интересная тема! Только что скачал с инета книжку по Машине Поста,
счас буду разбираться. Часов через несколько расскажу чего достиг :)

Ответить   Олег Кузьмин Sat, 16 Apr 2005 19:58:58 +0400 (#352341)

 

Greetings, Олег!

Вы писали 16 апреля 2005 г., 21:58:58:

Могу эмулятор заслать, если надо.

Ответить   Chris Archer Sun, 17 Apr 2005 12:17:11 +0600 (#352544)

 

Приветствую, Chris!

как

Если небольшой (до метра) то давай. А вообще лучше ссылочку скинь. А
ещё лучше попробуй сам отладить программу что я написал :) Ты ведь
научиться кажется хотел :)

Ответить   Олег Кузьмин Sun, 17 Apr 2005 18:11:08 +0400 (#352696)

 

Приветствую, Chris!

написать

Это счас в школе преподают или в институте? Какой у тебя уровень
подготовки? Я вот тут написал программку для сложения чисел. Чисто
теоритически - она должна работать, в правильности её логики я уверен
на 90%, а практически, если ты найдёшь компилятор под машину Поста -
я на 99%уверен что она не запустится с первого раза :) Т.к. это закон!
Если написанная вами программа заработала с первого раза - ищите
ошибки в компиляторе! :)

Короче вот листинг.
Для начала условные обозначения:

2. <= - сдвиг влево.
3. ? - передача управления (первое число - отсылка если ячейка
промаркирована, второе - если не промаркирована).
4. SET - маркировка ячейки.
5. CLR - очистка ячейки.
6. END - конец программы.
В // как обычно комментарии.

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

*************************листинг*************************************
1. ? 14, 2
2. =>, 3
3. ? 14, 4
4. <=, 5
5. SET, 6
6. <=, 7
7. ? 6, 8
8. <=, 9
9. ? 16, 10
10. =>, 11
11. SET, 12
12. =>, 13
13. ? 12, 2
14. =>, 15
15. ? 14, 35
16. =>, 17
17. =>, 18
18. ? 17, 19
19. =>, 20
20. ? 62, 21
21. <= 22
22. SET 23
23. <=, 24
24. ? 23,25
25. <=, 26
26. ? 25, 27
27. <=, 28
28. ? 57, 29
29. =>, 30
30. SET 31
31. =>, 32
32. ? 31, 33
33. =>, 34
34. ? 33, 17
35. =>, 35.5
35.5 <=, 36
/35.5 потому что забыл один сдвиг влево сделать, а адресацию сбивать
не хочется - запутаюсь с циклами/
36. ? 70, 37
37. =>, 38
38. ? 57, 39
39. <=, 40
40. SET 41
41. <=, 42
42. ? 41, 43
43. <=, 44
44. ? 43, 45
45. <=, 46
46. ? 45, 47
47. <=, 48
48. ? 62, 49
49. =>, 50
50. SET 51
51. =>, 52
52. ? 51, 53
53. =>, 54
54. ? 53, 55
55. =>, 56
56. ? 55, 37
57. <=,58
58. <=,59
59. CLR 60
60. <=, 61
61. ? 59, 70
62. =>, 63
63. =>, 64
64. CLR 65
65. =>, 66
66. ? 64, 67
67. <=, 68
68. ? 69, 67
69. =>, 70
70. =>,71
71. ? 72, 70
72. =>, 73
73. ? 74, 81
74. <=, 75
75. CLR 76
76. <=, 77
77. ? 78, 76
78. =>, 79
79. SET 80
80. =>, 70
81. <=, 82
82. CLR 83
83. <=, 84
84. ? 85, 83
85. =>, 86
86. SET 87
87. STOP
*************************конец*************************************

Само сложение сложности не представляет. Это процедура с 70 по 87
строчку. Главное найти где находятся цифры. С принципом поиска
знаком? Будем надеется что Успенского ты читал...
Теперь скажи насколько подробно тебе расписать программу? А то я счас
попытался начать расписывать, если объяснять максимально подробно - на
это уйдёт часа полтора моего времени...

Это пока не пробовал, но чувствую программа будет НАМНОГО сложнее...

P.s.: я привёл всего лишь один из множества вариантов решения
поставленной задачи. Скорее всего не самый рациональный, т.к. я просто
брал и влоб решал. Для оптимизации у меня уже мозги не варят счас...

Ответить   Олег Кузьмин Sun, 17 Apr 2005 04:05:32 +0400 (#352499)

 

Greetings, Олег!

Вы писали 17 апреля 2005 г., 6:05:32:

В институте. Я конечно слышал, что это входит в школьный курс, но для меня
это прозвучало как нонсенс.

Вообще - второй курс МехМата. Но в рамках теории алгоритмов и вообще дискретной
математики -> 0.

Ладно, попробую разобраться. Если будут вопросы - обращусь на личку.

Ответить   Chris Archer Mon, 18 Apr 2005 10:27:12 +0600 (#352878)

 

Приветствую, Chris!

как

Я тоже очень сильно удевился когда увидел что книжка Успенского
предназначена для _МЛАДШИХ_ классов средней школы... Мы такого даже в
институте не проходили.

Оба на, а чего у нас такого небыло? Странно, к нашей специальности
(Автоматизация Производства) это имеет непосредственное отношение...

Для упрощения разбирательства разобью программу на процедуры:

/поиск первой цифры. Для краткости будет называться п1/
1. ? 14, 2
2. =>, 3
3. ? 14, 4
4. <=, 5
5. SET, 6
6. <=, 7
7. ? 6, 8
8. <=, 9
9. ? 16, 10 /Вход в процедуру поиска второй цифры если первая
цифра найдена слева от коретки (п2.б)/
10. =>, 11
11. SET, 12
12. =>, 13
13. ? 12, 2
14. =>, 15
15. ? 14, 35 /Вход в процедуру поиска второй цифры если первая
цифра найдена справа от коретки (п2.а)/

/процедуры поиска второй цифры отличаются в зависимости от того, где
найдена первая цифра, как сделать в общем виде я пока не придумал.Если
придумаешь - скажи/

/п2.б/
16. =>, 17
17. =>, 18
18. ? 17, 19
19. =>, 20
20. ? 62, 21
Оба на! Только что ошибку нашёл! Это строчка должна выглядеть вот
так:
20. ? 57, 21 /если вторая цифра найдена справа - вход в процедуру
удаления следов поиска слева (пЕ1)/
21. <= 22
22. SET 23
23. <=, 24
24. ? 23,25
25. <=, 26
26. ? 25, 27
27. <=, 28
28. ? 57, 29
Здесь соответственно тоже ошибка:
28: ? 62, 29 /если вторая цифра найдена слева - вход в процедуру
очистки следов справа (пЕ2)/
29. =>, 30
30. SET 31
31. =>, 32
32. ? 31, 33
33. =>, 34
34. ? 33, 17

/2.а/
35. =>, 35.5
35.5 <=, 36
/35.5 потому что забыл один сдвиг влево сделать, а адресацию сбивать
не хочется - запутаюсь с циклами/
36. ? 70, 37 /вход в процедуру сложения, если вторую цифру нашли
сразу справа от первой (п3)/
37. =>, 38
38. ? 57, 39 /вход в Е1/
39. <=, 40
40. SET 41
41. <=, 42
42. ? 41, 43
43. <=, 44
44. ? 43, 45
45. <=, 46
46. ? 45, 47
47. <=, 48
48. ? 62, 49 /вход в пЕ2/
49. =>, 50
50. SET 51
51. =>, 52
52. ? 51, 53
53. =>, 54
54. ? 53, 55
55. =>, 56
56. ? 55, 37

/пЕ1/
57. <=,58
58. <=,59
59. CLR 60
60. <=, 61
61. ? 59, 70 /вход в процедуру сложения/

Кстати, только что обратил внимание, здесь может возникнуть
исключительная ситуация, т.е. безрезультативная остановка, при попытке
очистить пустую ячейку. Это произойдёт если вторая цифра находится в
двух шагах от первой. Чтобы этого не произошло надо сделать цикл с
предусловием, а не с послеусловием как у меня. Но в принципе работать
будет :) Так что если влом (как мне :)) ), можешь и не менять :)
Главное правельно показать работу программы препду ;)

/пЕ2/
62. =>, 63
63. =>, 64
64. CLR 65
65. =>, 66
66. ? 64, 67
67. <=, 68
68. ? 69, 67
69. =>, 70

/п3/
70. =>,71
71. ? 72, 70
72. =>, 73
73. ? 74, 81
74. <=, 75
75. CLR 76
76. <=, 77
77. ? 78, 76
78. =>, 79
79. SET 80
80. =>, 70
81. <=, 82
82. CLR 83
83. <=, 84
84. ? 85, 83
85. =>, 86
86. SET 87
87. STOP
*************************конец*************************************

Уф. Надеюсь ты разберёшься в моих бреднях :)

Ответить   Олег Кузьмин Mon, 18 Apr 2005 21:40:21 +0400 (#353349)

 

Greetings, Олег!

Вы писали 18 апреля 2005 г., 23:40:21:

Было то все как надо. Просто другое дело - как преподают. Товарищ лектор имеет
очень
"убаюкивающий" голос. Ему только гипнотизером работать. А практику вел товарищ
аспирант, который в принципе от работы отлынивал, но в конце концов дал нам контрольную
на последнем занятии (зачетную) и свалил. КР была ес-но списана с методичек.

Т.е. материал мы проходим, а в голове ничего не остается.

Так у нас преподается дискретная математика.

Ответить   Chris Archer Tue, 19 Apr 2005 10:51:02 +0600 (#353497)

 

Приветствую, Олег!

С каких это пор дискретка имеет отношение к нашей специальности? Вот у
программеров, да, у них 4 вида математики было, а нам она на фик? То, что
Поляков дал нам по ВМСС, должно нам было хватить с головой, а по поводу
алгоритмов - вспомни как назывался курс, который вел Ломакин на 1-ом курсе,
ладно чтобы не парился, сам напишу: "Программирование и основы
алгоритмизации";)))

--
With best regards,
Andrew V.Saprikin. E-mail: m007F***@n*****.ru
*Всему свое время, и время всякой вещи под небом:...время любить, и время
ненавидеть...

Ответить   "Andrew V.Saprikin" Tue, 19 Apr 2005 12:03:04 +0400 (#353616)

 

Приветствую, Andrew!

Tuesday, April 19, 2005, 12:03:04 PM, you wrote:

Я теорию алгоритмов имел в виду...

Вот машина Поста это самые что ни на есть ОСНОВЫ :) Почему Ломик нам
про неё не рассказывал?

Ответить   Олег Кузьмин Tue, 19 Apr 2005 17:56:31 +0400 (#354123)

 

Приветствую, Олег!

Не помню про модель Поста, но Фон Неймановскую модель нам давал Поляков, на
ВМСС, могу тебе напомнить, что пары были по субботам и наверное ты их
благополучно просыпал.. .:P;)

--
With best regards,
Andrew V.Saprikin. E-mail: m007F***@n*****.ru
*Всему свое время, и время всякой вещи под небом:...время любить, и время
ненавидеть...

Ответить   "Andrew V.Saprikin" Wed, 20 Apr 2005 12:36:04 +0400 (#354419)

 

Приветствую, Andrew!

на

ФонНеймановская модель это несколько не то... Её мне ещё в школе на
информатике давали :) А вот машину Поста я бы с удовольствем изучил,
даже если бы она была по суботам, только не первой парой! :) Это
сильно помогло бы потом разбираться с ассемблером и МикроДАТом...

Ответить   Олег Кузьмин Wed, 20 Apr 2005 20:41:33 +0400 (#354803)

 

Greetings, Andrew!

Вы писали 20 апреля 2005 г., 14:36:04:

на

Фон Нейман - основа архитектуры компа, а Пост - основа теории алгоритмов.
Не путай кислое с длинным.

Ответить   Chris Archer Thu, 21 Apr 2005 12:06:26 +0600 (#354848)