Esistono degli analoghi buoni (o almeno interessanti ma imperfetti) alle espressioni regolari in due dimensioni?Ci sono degli analoghi buoni/interessanti alle espressioni regolari in 2d?
In una dimensione posso scrivere qualcosa di simile /aaac?(bc)*b?aaa/
per tirare rapidamente una regione in cui si alternano b
s e c
s con un bordo di almeno tre a
s. Forse altrettanto importante, posso tornare un mese dopo e vedere a colpo d'occhio cosa sta cercando.
Mi sto ritrovando a scrivere codice personalizzato per problemi analoghi in 2d (alcuni molto più complicati/limitati) e sarebbe bello avere una notazione più concisa e standardizzata, anche se devo scrivere il motore dietro di esso .
Un secondo esempio potrebbe essere chiamato "trova il +". L'obiettivo è individuare una colonna di 3 o più a
s, un tra parentesi da 3 o più a
s con tre o più a
s di seguito. Deve corrispondere:
..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
e potrebbe essere scritto come [b^(a {3}) v (una {3})> (un {3}) < (un {3})] o ..
Suggerimenti?
Puoi farci un esempio? – Gumbo
le espressioni regolari finiscono per essere macchine di stato, fare una macchina di stato su uno spazio 2d suona eccezionalmente complesso (e una soluzione generale senza un'intelligenza considerevole sarebbe molto lenta. Rilevare semplicemente le regioni connesse è piuttosto complesso su cui fare affidamento ... – ShuggyCoUk
Suggerirei di costruire una libreria per enumerare le regioni (dove esistono molte implementazioni, per esempio varietà, pattern interni) e quindi fare in modo che le regioni abbiano diverse operazioni utili ben definite su di esse, come attraversare i bordi e in ogni punto controllare i valori attorno ad esso ecc. – ShuggyCoUk