縦に比較できるように、まずは二次元配列にデータを入れて、それから連続日数を取得しました。
いったん、連続日数をリストにしてから最大値を求めました。
(defun make-ok-days-2d (Sn)
(declare (type list Sn))
(let ((vec2d (make-array (list (length Sn) (length (car Sn)))
:element-type 'boolean
:initial-element t)))
(loop for str in Sn
for mem from 0
do (loop for ch across str
for day from 0
do (setf (aref vec2d mem day)
(if (char= ch #\o) t nil)))
finally (return vec2d))))
(defun maximum-continual-ok-days (vec2d)
(reduce #'max
(loop for day below (array-dimension vec2d 1)
with continued = 0
if (loop for mem below (array-dimension vec2d 0)
always (aref vec2d mem day))
collect (incf continued)
else
collect (setf continued 0))))
(defun main ()
(let* ((N (read))
(D (read))
(Sn (loop repeat N collect (read-line))))
(declare (ignore D))
(princ (maximum-continual-ok-days
(make-ok-days-2d Sn)))))
#-swank(main)
#+swank(defparameter *Sn* '("xooox" "oooxx" "oooxo"))
Code language: PHP (php)