Frage

Wie nehme ich die folgende Eingabe?

(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)

so etwas wie

(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

EDIT: Das ist nicht meine Hausaufgaben. Ich versuche, so etwas wie ELIZA von PAIP zu schreiben, aber ich weiß nur, wie man ein Muster zu schreiben, die mit einem Wort beginnt.

War es hilfreich?

Lösung

Sie erwähnen Zeichen, aber dann verwenden, um Zahlen in Ihrem Beispiel. Ich verwende Zahlen hier, sondern Zeichen Schalt ist trivial.

(require scheme/match)
(define satisfies
  (match-lambda
    [(list (? number?) ... 3) #t]
    [(list (? number?) ..1 4 (? number?) ...) #t]
    [_ #f]))
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top