|
Ну чо, будем решать задачу про расстановку ферзей. или чо
|
||
|---|---|---|
|
Дырокол 20.09.2020, 18:16 т.е. наше отображение будет выглядеть так: Код 1. 2. 3. 4. Код 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Код 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Код 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. чтобы увязать результат рекурсивной генерации в единый список, нужно накапливать результат на каждом шаге рекурсии. поэтому нам нужна некая процедура вида Код 1. 2. Код 1. 2. 3. Код 1. то-есть нам нужна некоторая функция аккумулирования accumulate, которую мы запускаем с параметрами Код 1. |
||
|
Модератор:
Изменено: 25.09.2020, 07:51 - Дырокол
![]()
Нравится:
Не нравится:
|
||
| 25.09.2020, 07:50 |
|
|
|
Ну чо, будем решать задачу про расстановку ферзей. или чо
|
||
|---|---|---|
|
ничего не мешает нам реализовать подобное накопление в самом общем виде, когда на вход функции накопления мы подаём
1) операцию накопления 2) начальное значение 3) последовательность, элементы которой и нужно накопить, применив к ним операцию накопления: Код 1. 2. 3. 4. 5. Код 1. 2. Код 1. 2. Код 1. 2. |
||
|
Модератор:
![]()
Нравится:
Не нравится:
|
||
| 25.09.2020, 07:57 |
|
|
|
Ну чо, будем решать задачу про расстановку ферзей. или чо
|
||
|---|---|---|
|
Дырокол 18.09.2020, 15:10 разберёмся с предикатом нам нужно отфильтровать, оставляя только те, где ферзь на k-й вертикали не бьется ни одним из остальных. т.е. предикат должен на вход брать множество позиций и возвращать результат работы некоторой функции сравнения, которая для этого множества позиций определяет, находится ли ферзь с k-й вертикали в безопасности от остальных. назовём эту функцию сравнения safe? Код 1. 2. 3. 4. 5. 6. и мы можем написать алгоритм целиком: Код 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. |
||
|
Модератор:
![]()
Нравится:
Не нравится:
|
||
| 25.09.2020, 07:59 |
|
|
|
Ну чо, будем решать задачу про расстановку ферзей. или чо
|
||
|---|---|---|
|
исходная задача формулируется в терминах нахождения расстановки в зависимости от размера доски, поэтому обернём нашу функцию так:
Код 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. |
||
|
Модератор:
![]()
Нравится:
Не нравится:
|
||
| 25.09.2020, 08:02 |
|
|
|
Ну чо, будем решать задачу про расстановку ферзей. или чо
|
||
|---|---|---|
|
весь код выглядит так (map я не стал выписывать ещё раз, потому что он реализован в стандартной библиотеке и любой интерпретатор его понимает)
Код 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. |
||
|
Модератор:
![]()
Нравится:
Не нравится:
|
||
| 25.09.2020, 08:07 |
|
|
|
Ну чо, будем решать задачу про расстановку ферзей. или чо
|
||
|---|---|---|
|
проверяем
Код 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. число расстановок: Код 1. 2. |
||
|
Модератор:
Изменено: 25.09.2020, 08:19 - Дырокол
![]()
Нравится:
Не нравится:
|
||
| 25.09.2020, 08:11 |
|
|
|
Ну чо, будем решать задачу про расстановку ферзей. или чо
|
||
|---|---|---|
|
должно работать на любом интерпретаторе
я использую racket Код 1. 2. если запускать не racket, а gui-шный drracket, то будет норм. |
||
|
Модератор:
![]()
Нравится:
Не нравится:
|
||
| 25.09.2020, 08:17 |
|
|

| get settings: | 1ms |
| get forum list: | 1ms |
| check forum access: | 0ms |
| check topic access: | 0ms |
| get first new msg: | 2ms |
| get msg page: | 0ms |
| >>> redirection >>>: | 1ms |
| get settings: | 1ms |
| get forum list: | 1ms |
| check forum access: | 0ms |
| check topic access: | 0ms |
| get msg page: | 1ms |
| >>> redirection >>>: | 1ms |
| get settings: | 1ms |
| get forum list: | 1ms |
| check forum access: | 0ms |
| check topic access: | 0ms |
| get topic data: | 1ms |
| get forum data: | 0ms |
| get page posts: | 13ms |
| track hit: | 2ms |
| get tp. blocked users: | 0ms |
| get online users: | 4ms |
| check new: | 1ms |
| others: | 3ms |
| total: | 35ms |

