سؤال

وكيف يمكنني قبول الإدخال التالية؟

(list of 0 or more charcters and ends with 3) or   
(list of 1 or more characters 4 and  0 or more characters after 4)

وشيء من هذا القبيل

(match ( list 3)) -> #t
(match ( list 1  2 3)) -> #t
(match (list 1 2 3 4)) -> #t
(match (list 1 2 3 4 5)) -> #t
(match (list 4)) -> #f

وتحرير: هذا ليس واجبي. أحاول أن أكتب شيئا مثل ELIZA من PAIP لكن أنا أعرف فقط كيفية كتابة النمط الذي يبدأ بكلمة.

هل كانت مفيدة؟

المحلول

ولقد ذكرتم حرفا، ولكن بعد ذلك استخدام الأرقام في المثال الخاص بك. أنا باستخدام الأرقام هنا، ولكن التحول إلى شخصيات تافهة.

(require scheme/match)
(define satisfies
  (match-lambda
    [(list (? number?) ... 3) #t]
    [(list (? number?) ..1 4 (? number?) ...) #t]
    [_ #f]))
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top