Відповідь на це питання насправді повинен залежати від домену, для якого застосовується рішення.
Якщо вам вдається імітувати фізичний пошук у фізичному стозі сіна, ви можете мати класи
- Космос
- Солома
- Голка
- Шукач
Космос
знає, які об'єкти знаходяться, за якими координатами
реалізуються закони природи (перетворює енергію, виявляє зіткнення тощо)
Голка , Солома
знаходяться в просторі,
реагують на сили
Шукач
взаємодіє з простором:
рухається рукою, застосовує магнітне поле, спалює сіно, застосовує рентген, шукає голку ...
Таким чином seeker.find(needle, space)
або seeker.find(needle, space, strategy)
Сінокос просто опиняється в просторі, де ви шукаєте голку. Коли ви абстрагуєте далекий простір як якусь віртуальну машину (згадайте: матрицю), ви можете отримати вищезазначене за допомогою копиці сіна, а не простору (рішення 3 / 3b) :
seeker.find(needle, haystack)
або seeker.find(needle, haystack, strategy)
Але матрицею був Домен, який слід замінювати копицею сіна, лише якщо ваша голка не може бути ніде більше.
І знову ж таки, це була просто анологія. Цікаво, що це відкриває розум для абсолютно нових напрямків:
1. Чому ви спочатку розпустили голку? Чи можете ви змінити процес, щоб не втратити його?
2. Чи потрібно вам знайти загублену голку, чи можете просто отримати іншу і забути про першу? (Тоді було б непогано, якби голка через деякий час розчинилася)
3. Якщо ви регулярно втрачаєте голки і вам потрібно їх знову знаходити, тоді, можливо, вам захочеться
роблять голки, здатні знайти себе, наприклад, вони регулярно запитують себе: чи я загубився? Якщо відповідь позитивна, вони посилають комусь своє GPS-розраховане положення або починають подавати звуковий сигнал або що завгодно:
needle.find(space)
або needle.find(haystack)
(рішення 1)
встановіть копицю сіна з камерою на кожну соломинку, після чого ви можете запитати вулик копиці сіна, чи бачив він голку нещодавно:
haystack.find (голка) (рішення 2)
прикріпіть RFID-мітки до своїх голок, щоб ви могли легко триангулювати їх
Це все лише для того, щоб сказати, що у вашій реалізації ви зробили голку і копицю сіна, і більшу частину часу матрицю на якомусь рівні.
Тож вирішіть відповідно до свого домену:
- Це мета стосу, щоб містити голки? Потім перейдіть за рішенням 2.
- Чи природно, що голка загубиться де завгодно? Тоді перейдіть за рішенням 1.
- Голка випадково загубляється в копиці сіна? Тоді перейдіть до рішення 3. (або розгляньте іншу стратегію відновлення)
string.join
метод Python ).