#Explicación de la regex del reto 11

1 messages · Page 1 of 1 (latest)

viscid pilot
#

La regex busca regalos * que no tengan cámaras # en las 4 direcciones. Cada parte comprueba una dirección:

  • (?<!#) → no hay cámara a la izquierda
  • (?<!#(.{w})) → no hay cámara arriba (salto de una fila = .{w})
  • * → estamos en un regalo
  • (?!#) → no hay cámara a la derecha
  • (?!.{w}#) → no hay cámara abajo

La clave es que w es el ancho del tablero, así que .{w} sirve para saltar exactamente una fila completa. Es la traducción directa de un regalo sin cámaras adyacentes usando lookarounds.
Y si alguien prefiere unir el tablero con join('\n') en vez de join(), entonces tiene que usar también el flag s (dotAll), porque así el . de la regex puede atravesar el salto de línea y seguir funcionando como un carácter más.