• .Re: lisp code problem, post your solution!

    From Robert L.@21:1/5 to Pascal J. Bourguignon on Sun Feb 20 23:12:42 2022
    Pascal J. Bourguignon wrote:

    count from 1 to 100
    if the number is divizible by three print fizz
    if by 5 print bazz
    if by both 3 and 5, print fizzbazz
    if none of those, print the number



    post your lisp solution!


    Just put parentheses around your own solution!

    (defun divisiblep (n d) (zerop (mod n d)))

    (loop for number from 1 to 100
    if (divisiblep number 3) do (princ "fizz")
    if (divisiblep number 5) do (princ "bazz")
    if (not (or (divisiblep number 3) (divisiblep number 5))) do (princ number)
    do (terpri))

    Gauche Scheme and Racket:

    (use srfi-42) ;; do-ec for Gauche
    or
    (require srfi/42) ;; do-ec for Racket
    (require srfi/1) ;; any for Racket

    (define (maybe-print n d text)
    (and (zero? (modulo n d)) (display text)))

    (define (fizz)
    (define stuff '((3 fizz) (5 buzz) (7 hum)))
    (do-ec (:range i 1 36)
    (begin
    (or (any values (map (lambda (xs) (apply maybe-print i xs)) stuff))
    (display i))
    (newline))))

    (fizz)
    ===>
    1
    2
    fizz
    4
    buzz
    fizz
    hum
    8
    fizz
    buzz
    11
    fizz
    13
    hum
    fizzbuzz
    16
    17
    fizz
    19
    buzz
    fizzhum
    22
    23
    fizz
    buzz
    26
    fizz
    hum
    29
    fizzbuzz
    31
    32
    fizz
    34
    buzzhum

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Robert L.@21:1/5 to Pascal J. Bourguignon on Mon Mar 21 11:18:47 2022
    Pascal J. Bourguignon wrote:

    count from 1 to 100
    if the number is divizible by three print fizz
    if by 5 print bazz
    if by both 3 and 5, print fizzbazz
    if none of those, print the number



    post your lisp solution!


    Just put parentheses around your own solution!

    (defun divisiblep (n d) (zerop (mod n d)))

    (loop for number from 1 to 100
    if (divisiblep number 3) do (princ "fizz")
    if (divisiblep number 5) do (princ "bazz")
    if (not (or (divisiblep number 3) (divisiblep number 5))) do (princ number)
    do (terpri))

    Gauche Scheme:

    (use srfi-13)

    (define (print* a b n)
    (let ((s (string-append a b)))
    (print (if (#/./ s) s n))))

    (for-each
    print*
    (circular-list "" "" "fizz")
    (circular-list "" "" "" "" "buzz")
    (iota 15 1))

    1
    2
    fizz
    4
    buzz
    fizz
    7
    8
    fizz
    buzz
    11
    fizz
    13
    14
    fizzbuzz

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Robert L.@21:1/5 to Robert L. on Mon Mar 21 13:52:33 2022
    On 3/21/2022, Robert L. wrote:

    (use srfi-13)

    Correction:

    (use srfi-1) ;; for circular-list

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)