Basics of Racket

Descripción del contenido de la página

Conversión de antiguos programas de BASIC a Racket para aprender los rudimentos de este lenguaje.

Etiquetas:

3D Plot

#! /usr/bin/env racket

#|

3D Plot

Original version in BASIC:
    Creative Computing (Morristown, New Jersey, USA), ca. 1980.

This version in Racket:
    Copyright (c) 2024, Marcos Cruz (programandala.net)
    SPDX-License-Identifier: Fair

Written on 2024-12-06.

Last modified: 20260106T0841+0100.

|#

#lang racket

(define (move-cursor-home)
    (display "\e[H"))

(define (clear-screen)
    (display "\e[2J")
    (move-cursor-home))

(define (display-credits)
    (displayln "3D Plot\n")
    (displayln "Original version in BASIC:")
    (displayln "    Creative computing (Morristown, New Jersey, USA), ca. 1980.\n")
    (displayln "This version in Racket")
    (displayln "    Copyright (c) 2024, Marcos Cruz (programandala.net)")
    (displayln "    SPDX-License-Identifier: Fair\n")
    (display "Press Enter to start the program. ")
    (void (read-line)))

(define (a z)
    (* 30 (exp (/ (* (- z) z) 100))))

(define (draw)
    (define l 0)
    (define z 0)
    (define y1 0)
    (define line-width 56)
    (define line (make-string line-width #\space))
    (for ([x (in-range -30.0 30.5 1.5)])
        (set! l 0)
        (set! y1 (* 5 (exact-floor (/ (sqrt (- 900 (* x x))) 5))))
        (for ([y (in-range y1 (+ (- y1) -5) -5)])
            (set! z (exact-floor (- (+ 25 (a (sqrt (+ (* x x) (* y y))))) (* 0.7 y))))
            (when (> z l)
                (begin
                    (set! l z)
                    (string-set! line z #\*))))
        (displayln line)
        (string-fill! line #\space)))

(clear-screen)
(display-credits)
(clear-screen)
(draw)

Diamond

#! /usr/bin/env racket

#|

Diamond

Original version in BASIC:
    Example included in Vintage BASIC 1.0.3.
    http://www.vintage-basic.net

This version in Racket:
    Copyright (c) 2023, Marcos Cruz (programandala.net)
    SPDX-License-Identifier: Fair

Written in 2023-08-22/23.

Last modified 20260106T0911+0100.
|#

#lang racket/base

(define lines 17)

(for ([i (in-range 1 (+ (/ lines 2) 1))])
    (for ([j (in-range 0 (+ (- (/ (+ lines 1) 2) i) 1))])
        (write-string " "))
    (for ([j (in-range 0 (- (* i 2) 1))])
        (write-string "*"))
    (write-string "\n"))

(for ([i (in-range 1 (/ lines 2))])
    (for ([j (in-range 0 (+ i 1))])
        (write-string " "))
    (for ([j (in-range 0 (- (* (- (/ (+ lines 1) 2) i) 2) 1))])
        (write-string "*"))
    (write-string "\n"))

Sine Wave

#! /usr/bin/env racket

#|

Sine Wave

Original version in BASIC:
    Creative Computing (Morristown, New Jersey, USA), ca. 1980.

This version in Racket:
    Copyright (c) 2023, 2024, 2026, Marcos Cruz (programandala.net)
    SPDX-License-Identifier: Fair

Written in 2023-08, 2023-09, 2024-12, 2026-01.

Last modified 20260106T0922+0100.

|#

#lang racket

(define (move-cursor-home)
    (display "\e[H"))

(define (clear-screen)
    (display "\e[2J")
    (move-cursor-home))

(define (display-credits)
    (clear-screen)
    (displayln "Sine Wave\n")
    (displayln "Original version in BASIC:")
    (displayln "    Creative Computing (Morristown, New Jersey, USA), ca. 1980.\n")
    (displayln "This version in Racket:")
    (displayln "    Copyright (c) 2023, 2024, Marcos Cruz (programandala.net)")
    (displayln "    SPDX-License-Identifier: Fair\n")
    (display "Press Enter to start the program. ")
    (void (read-line)))

(define word (vector "" ""))

(define order (vector "first" "second"))

(define (get-words)
    (clear-screen)
    (for ([w (in-range 0 2)])
            (printf "Enter the ~a word: " (vector-ref order w))
            (vector-set! word w (read-line))))

(define (boolean->integer b)
    (count values (list b)))

(define (draw)
    (clear-screen)
    (define even #f)
    (for ([a (in-range 0.0 40.25 0.25)])
        (display (make-string (exact-floor (+ (* (sin a) 25) 26)) #\space))
        (displayln (vector-ref word (boolean->integer even)))
        (set! even (not even))))

(display-credits)
(get-words)
(displayln "")
(draw)

Páginas relacionadas

Basics off
Metaproyecto sobre los proyectos «Basics of…».
Basics of 8th
Conversión de antiguos programas de BASIC a 8th para aprender los rudimentos de este lenguaje.
Basics of Ada
Conversión de antiguos programas de BASIC a Ada para aprender los rudimentos de este lenguaje.
Basics of Arturo
Conversión de antiguos programas de BASIC a Arturo para aprender los rudimentos de este lenguaje.
Basics of C#
Conversión de antiguos programas de BASIC a C# para aprender los rudimentos de este lenguaje.
Basics of C3
Conversión de antiguos programas de BASIC a C3 para aprender los rudimentos de este lenguaje.
Basics of Chapel
Conversión de antiguos programas de BASIC a Chapel para aprender los rudimentos de este lenguaje.
Basics of Clojure
Conversión de antiguos programas de BASIC a Clojure para aprender los rudimentos de este lenguaje.
Basics of Crystal
Conversión de antiguos programas de BASIC a Crystal para aprender los rudimentos de este lenguaje.
Basics of D
Conversión de antiguos programas de BASIC a D para aprender los rudimentos de este lenguaje.
Basics of Elixir
Conversión de antiguos programas de BASIC a Elixir para aprender los rudimentos de este lenguaje.
Basics of F#
Conversión de antiguos programas de BASIC a F# para aprender los rudimentos de este lenguaje.
Basics of Factor
Conversión de antiguos programas de BASIC a Factor para aprender los rudimentos de este lenguaje.
Basics of FreeBASIC
Conversión de antiguos programas de BASIC a FreeBASIC para aprender los rudimentos de este lenguaje.
Basics of Gleam
Conversión de antiguos programas de BASIC a Gleam para aprender los rudimentos de este lenguaje.
Basics of Go
Conversión de antiguos programas de BASIC a Go para aprender los rudimentos de este lenguaje.
Basics of Hare
Conversión de antiguos programas de BASIC a Hare para aprender los rudimentos de este lenguaje.
Basics of Haxe
Conversión de antiguos programas de BASIC a Haxe para aprender los rudimentos de este lenguaje.
Basics of Icon
Conversión de antiguos programas de BASIC a Icon para aprender los rudimentos de este lenguaje.
Basics of Io
Conversión de antiguos programas de BASIC a Io para aprender los rudimentos de este lenguaje.
Basics of Janet
Conversión de antiguos programas de BASIC a Janet para aprender los rudimentos de este lenguaje.
Basics of Julia
Conversión de antiguos programas de BASIC a Julia para aprender los rudimentos de este lenguaje.
Basics of Kotlin
Conversión de antiguos programas de BASIC a Kotlin para aprender los rudimentos de este lenguaje.
Basics of Lobster
Conversión de antiguos programas de BASIC a Lobster para aprender los rudimentos de este lenguaje.
Basics of Lua
Conversión de antiguos programas de BASIC a Lua para aprender los rudimentos de este lenguaje.
Basics of Nature
Conversión de antiguos programas de BASIC a Nature para aprender los rudimentos de este lenguaje.
Basics of Neat
Conversión de antiguos programas de BASIC a Neat para aprender los rudimentos de este lenguaje.
Basics of Neko
Conversión de antiguos programas de BASIC a Neko para aprender los rudimentos de este lenguaje.
Basics of Nelua
Conversión de antiguos programas de BASIC a Nelua para aprender los rudimentos de este lenguaje.
Basics of Nim
Conversión de antiguos programas de BASIC a Nim para aprender los rudimentos de este lenguaje.
Basics of Nit
Conversión de antiguos programas de BASIC a Nit para aprender los rudimentos de este lenguaje.
Basics of Oberon-07
Conversión de antiguos programas de BASIC a Oberon-07 para aprender los rudimentos de este lenguaje.
Basics of OCaml
Conversión de antiguos programas de BASIC a OCaml para aprender los rudimentos de este lenguaje.
Basics of Odin
Conversión de antiguos programas de BASIC a Odin para aprender los rudimentos de este lenguaje.
Basics of Pike
Conversión de antiguos programas de BASIC a Pike para aprender los rudimentos de este lenguaje.
Basics of Pony
Conversión de antiguos programas de BASIC a Pony para aprender los rudimentos de este lenguaje.
Basics of Python
Conversión de antiguos programas de BASIC a Python para aprender los rudimentos de este lenguaje.
Basics of Raku
Conversión de antiguos programas de BASIC a Raku para aprender los rudimentos de este lenguaje.
Basics of Retro
Conversión de antiguos programas de BASIC a Retro para aprender los rudimentos de este lenguaje.
Basics of Rexx
Conversión de antiguos programas de BASIC a Rexx para aprender los rudimentos de este lenguaje.
Basics of Ring
Conversión de antiguos programas de BASIC a Ring para aprender los rudimentos de este lenguaje.
Basics of Rust
Conversión de antiguos programas de BASIC a Rust para aprender los rudimentos de este lenguaje.
Basics of Scala
Conversión de antiguos programas de BASIC a Scala para aprender los rudimentos de este lenguaje.
Basics of Scheme
Conversión de antiguos programas de BASIC a Scheme para aprender los rudimentos de este lenguaje.
Basics of Styx
Conversión de antiguos programas de BASIC a Styx para aprender los rudimentos de este lenguaje.
Basics of Swift
Conversión de antiguos programas de BASIC a Swift para aprender los rudimentos de este lenguaje.
Basics of V
Conversión de antiguos programas de BASIC a V para aprender los rudimentos de este lenguaje.
Basics of Vala
Conversión de antiguos programas de BASIC a Vala para aprender los rudimentos de este lenguaje.
Basics of Zig
Conversión de antiguos programas de BASIC a Zig para aprender los rudimentos de este lenguaje.

Enlaces externos relacionados