Czy istnieją jakieś dobre (lub co najmniej interesujące, ale błędne) analogi do wyrażeń regularnych w dwóch wymiarach?Czy istnieją jakieś dobre/interesujące analogi do wyrażeń regularnych w 2d?
W jednym wymiarze mogę napisać coś podobnego /aaac?(bc)*b?aaa/
aby szybko wyciągnąć regionu zmiennego b
s i c
s przy granicy z co najmniej trzech a
s. Być może, co równie ważne, mogę wrócić miesiąc później i zobaczyć na pierwszy rzut oka, czego szuka.
jestem znalezieniem się pisania kodu niestandardowego do analogicznych problemów w 2D (niektóre znacznie bardziej skomplikowane/ograniczona) i byłoby miło mieć bardziej zwięzły i znormalizowany zapis, nawet jeśli muszę napisać silnik za to sam .
Drugi przykład może być nazwany "znajdź +". Celem jest zlokalizowanie kolumny 3 lub większej liczby a
s, b
w nawiasie za pomocą 3 lub większej liczby a
s z trzema lub więcej a
s poniżej. powinien pasować:
..7...hkj.k f
7...a h o j
----a--------
j .a,g- 8 9
.aaabaaaaa7 j
k .a,,g- h j
hh a----? j
a hjg
i może być zapisane jako [b^(a {3}) V (A {3})> (a {3}) < (a {3})] lub ..
Sugestie?
Czy możesz podać jakiś przykład? – Gumbo
Wyrażenia regularne staną się maszynami stanowymi, wykonywanie takiej maszyny stanów na przestrzeni 2d brzmi wyjątkowo skomplikowane (a ogólne rozwiązanie bez sporej sprytu byłoby bardzo powolne, po prostu wykrywanie połączonych regionów jest dość złożone, na czym polegałoby to ... – ShuggyCoUk
Sugerowałbym zbudowanie biblioteki do wyliczenia regionów (gdzie istnieje wiele implementacji, na przykład rozmaitości, wewnętrzne wzorce), a następnie sprawienie, by regiony miały kilka użytecznych dobrze zdefiniowanych operacji na nich, takich jak przekraczanie granic i w każdym punkcie sprawdzanie wartości wokół itp. – ShuggyCoUk