Проверьте, есть ли в списке прописные или строчные буквы или цифры в списке в ракетке - PullRequest
0 голосов
/ 26 февраля 2020

Как мне создать функцию, которая проверяет, содержит ли список хотя бы одну заглавную или строчную букву (и может содержать цифры в списке) в ракетке

и не содержит специальных символов (без пробелов, без специальные символы)

(alphabet (list "abc" "ABC" "aBC" "AbC")) ⇒ true
(list "9wa123re1" "0w1e2a3r4")) ⇒ true

Ответы [ 3 ]

0 голосов
/ 26 февраля 2020
#lang racket 

(define (alpha+-num? clst (acc #f) (alpha 0))
  (cond ((null clst) (and (not (zero? alpha)) acc))
        ((char-alphabetic? (car clst)) (alpha+-num? (cdr clst) #t (+ alpha 1)))
        ((char-numeric? (car clst)) (alpha+-num? (cdr clst) acc alpha))
        (else #f)))

(define (alpha+-num-string? s)
  (alpha+-num? (remove-duplicates (string->list s))))

(define (alpha+-num-string-list? sl (acc #f))
  (cond ((null sl) acc)
        ((alpha+-num-string? (car sl)) (alpha+-num-string-list? (cdr sl)))
        (else #f)))

То, что вы хотите, это alpha+-num-string-list?

0 голосов
/ 26 февраля 2020
(define check-lower-char
  (lambda (input)
    (andmap (lambda(s)
              (andmap (lambda (c)
                        (or (not (char-alphabetic? c))
                            (char-lower-case? c)))
                      s))
            (map string->list input))))


(check-lower-char (list "abc" "ABC" "aBC" "AbC")))  ;; => #f
(check-lower-char (list "9wa123re1" "0w1e2a3r4"))   ;; => #t
0 голосов
/ 26 февраля 2020
#lang racket

;; for one string is the test:
(define (alpha-and-perhaps-numeric? s)
  (regexp-match #rx"^([0-9]*[a-zA-Z]+[0-9]*)+$" s))

;; for a list of strings is the test:
(define (alpha-list? l)
  (for/and ((x l))
    (alpha-and-perhaps-numeric? x)))
  • [0-9]* означает: ноль или более (*) цифр c ([0-9])
  • [a-zA-Z]+ означает: хотя бы один или несколько (+) строчная или прописная буква c ([a-zA-Z])
  • [0-9]* возможно с последующим нулем или несколькими числами.
  • ( )+ Вся эта конструкция соответствует хотя бы один раз, если не больше раз.
  • ^ $ гарантирует, что эта вещь совпадает от начала до конца строки без пробелов. Таким образом, любая другая строка, которую невозможно построить с помощью этого шаблона, вернет #f. (любой не алфавитный символ c, содержащий строку).
...