Tôi đã một chuỗi mô tả một ma trận các yếu tố NxM như thế này:php dọc thường xuyên tìm kiếm biểu
§inputmap = "
~~~~~~~~~~~~~~~~~~~~B~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~BBB........BBB~~~~~~~~~~~~~
~~~~~~~~~~BB...............FBB~~~~~~~~~~
~~~~~~~~BB....................BB~~~~~~~~
~~~~~~BB.....F..................BB~~~~~~
~~~~~BB.....................F.....B~~~~~
~~~~B..............................B~~~~
~~~B........F.......................B~~~
~~BB.........F......................BB~~
~~B................F.................BB~
~BF....F....F........................FB~
~B.....................................B
B.....................................FB
B........F......F......................B
B...........................F..........B
B......................................B
B......................................B
B.......F.......................F......B
B......FFF.............................B
B.......F.............................FB
~B..................F.................FB
~BF...........................F.......B~
~~B...F...........F..........FFFFF.F.BB~
~~BB..................F..F....F.....BB~~
~~~B.......................FF.FF....B~~~
~~~~B..............................B~~~~
~~~~~BB...........................B~~~~~
~~~~~~BB........................BB~~~~~~
~~~~~~~~BB..........F..........B~~~~~~~~
~~~~~~~~~~BB................BB~~~~~~~~~~
~~~~~~~~~~~~~BBB.......F.BBB~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~BBBBBB~~~~~~~~~~~~~~~~~
";
$inputmap = trim($inputmap);
tôi cần phải xây dựng một biểu thức chính quy (hay cái gì khác) để tìm kiếm trên chuỗi:
$search = "
*F*
FFF
*F*
";
$search = trim($search);
trên toàn bộ lưới. Mặt khác, tôi cần phải tìm một mô hình của 5 chữ cái riêng biệt "F" (3 theo chiều dọc và 3 chiều) lấy lại các hàng/cột vị trí của (các) mẫu được tìm thấy trên bản đồ.
Xem xét ma trận đầu vào có thể khác (5x5 hoặc 10x10 hoặc 20x25 hoặc ...), có cách nào giải quyết vấn đề của tôi với php và cụm từ thông dụng không?
Tôi không nghĩ rằng cụm từ thông dụng là công cụ thích hợp cho công việc này. Bạn nên chuyển đổi chuỗi thành mảng hai chiều và tìm kiếm thông qua mảng. Điều này có thể được thực hiện trong thời gian "tuyến tính" (thực tế, nếu đó là ma trận vuông có chiều dài cạnh n, có thể dễ dàng thực hiện trong (n)^2 thời gian) – FrankieTheKneeMan
Vấn đề của bạn quá phức tạp để sử dụng cụm từ thông dụng. Viết một đoạn mã nhỏ để tìm dòng đầu tiên của tìm kiếm của bạn trong đầu vào và xác minh xem các dòng khác có khớp với dưới đây chỉ với các chỉ mục mảng – ffarquet
Đầu tiên, bạn có thể chỉ cho chúng tôi những gì bạn đã thử; chúng tôi ở đây để giúp không làm mọi thứ cho bạn. Các giải pháp chung là cho mỗi bộ kiểm tra một phần phụ của lưới điện (0-2) và hàng (0-2) sau đó di chuyển trên một; và tiếp tục kiểm tra cho đến khi bạn nhấn vào cuối hàng. Sau đó di chuyển một cột xuống tại cols (0-2) và hàng (1-3) và tiếp tục đọc ở bên phải cho đến khi bạn đạt đến phía dưới bên phải của mảng của bạn. Bạn có thể giải quyết điều này thông qua việc lập chỉ mục mảng hoặc tạo một chuỗi lớn và phân tích cú pháp theo cách đó. –