Basics of Racket

Descrition del contenete del págine

Conversion de old BASIC-programas a Racket por aprender lu elementari de ti-ci lingue.

Etiquettes:

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ágines relatet

Basics off
Metaprojecte pri li projectes «Basics of…».
Basics of 8th
Conversion de old BASIC-programas a 8th por aprender lu elementari de ti-ci lingue.
Basics of Ada
Conversion de old BASIC-programas a Ada por aprender lu elementari de ti-ci lingue.
Basics of Arturo
Conversion de old BASIC-programas a Arturo por aprender lu elementari de ti-ci lingue.
Basics of C#
Conversion de old BASIC-programas a C# por aprender lu elementari de ti-ci lingue.
Basics of C3
Conversion de old BASIC-programas a C3 por aprender lu elementari de ti-ci lingue.
Basics of Chapel
Conversion de old BASIC-programas a Chapel por aprender lu elementari de ti-ci lingue.
Basics of Clojure
Conversion de old BASIC-programas a Clojure por aprender lu elementari de ti-ci lingue.
Basics of Crystal
Conversion de old BASIC-programas a Crystal por aprender lu elementari de ti-ci lingue.
Basics of D
Conversion de old BASIC-programas a D por aprender lu elementari de ti-ci lingue.
Basics of Elixir
Conversion de old BASIC-programas a Elixir por aprender lu elementari de ti-ci lingue.
Basics of F#
Conversion de old BASIC-programas a F# por aprender lu elementari de ti-ci lingue.
Basics of Factor
Conversion de old BASIC-programas a Factor por aprender lu elementari de ti-ci lingue.
Basics of FreeBASIC
Conversion de old BASIC-programas a FreeBASIC por aprender lu elementari de ti-ci lingue.
Basics of Gleam
Conversion de old BASIC-programas a Gleam por aprender lu elementari de ti-ci lingue.
Basics of Go
Conversion de old BASIC-programas a Go por aprender lu elementari de ti-ci lingue.
Basics of Hare
Conversion de old BASIC-programas a Hare por aprender lu elementari de ti-ci lingue.
Basics of Haxe
Conversion de old BASIC-programas a Haxe por aprender lu elementari de ti-ci lingue.
Basics of Icon
Conversion de old BASIC-programas a Icon por aprender lu elementari de ti-ci lingue.
Basics of Io
Conversion de old BASIC-programas a Io por aprender lu elementari de ti-ci lingue.
Basics of Janet
Conversion de old BASIC-programas a Janet por aprender lu elementari de ti-ci lingue.
Basics of Julia
Conversion de old BASIC-programas a Julia por aprender lu elementari de ti-ci lingue.
Basics of Kotlin
Conversion de old BASIC-programas a Kotlin por aprender lu elementari de ti-ci lingue.
Basics of Lobster
Conversion de old BASIC-programas a Lobster por aprender lu elementari de ti-ci lingue.
Basics of Lua
Conversion de old BASIC-programas a Lua por aprender lu elementari de ti-ci lingue.
Basics of Nature
Conversion de old BASIC-programas a Nature por aprender lu elementari de ti-ci lingue.
Basics of Neat
Conversion de old BASIC-programas a Neat por aprender lu elementari de ti-ci lingue.
Basics of Neko
Conversion de old BASIC-programas a Neko por aprender lu elementari de ti-ci lingue.
Basics of Nelua
Conversion de old BASIC-programas a Nelua por aprender lu elementari de ti-ci lingue.
Basics of Nim
Conversion de old BASIC-programas a Nim por aprender lu elementari de ti-ci lingue.
Basics of Nit
Conversion de old BASIC-programas a Nit por aprender lu elementari de ti-ci lingue.
Basics of Oberon-07
Conversion de old BASIC-programas a Oberon-07 por aprender lu elementari de ti-ci lingue.
Basics of OCaml
Conversion de old BASIC-programas a OCaml por aprender lu elementari de ti-ci lingue.
Basics of Odin
Conversion de old BASIC-programas a Odin por aprender lu elementari de ti-ci lingue.
Basics of Pike
Conversion de old BASIC-programas a Pike por aprender lu elementari de ti-ci lingue.
Basics of Pony
Conversion de old BASIC-programas a Pony por aprender lu elementari de ti-ci lingue.
Basics of Python
Conversion de old BASIC-programas a Python por aprender lu elementari de ti-ci lingue.
Basics of Raku
Conversion de old BASIC-programas a Raku por aprender lu elementari de ti-ci lingue.
Basics of Retro
Conversion de old BASIC-programas a Retro por aprender lu elementari de ti-ci lingue.
Basics of Rexx
Conversion de old BASIC-programas a Rexx por aprender lu elementari de ti-ci lingue.
Basics of Ring
Conversion de old BASIC-programas a Ring por aprender lu elementari de ti-ci lingue.
Basics of Rust
Conversion de old BASIC-programas a Rust por aprender lu elementari de ti-ci lingue.
Basics of Scala
Conversion de old BASIC-programas a Scala por aprender lu elementari de ti-ci lingue.
Basics of Scheme
Conversion de old BASIC-programas a Scheme por aprender lu elementari de ti-ci lingue.
Basics of Styx
Conversion de old BASIC-programas a Styx por aprender lu elementari de ti-ci lingue.
Basics of Swift
Conversion de old BASIC-programas a Swift por aprender lu elementari de ti-ci lingue.
Basics of V
Conversion de old BASIC-programas a V por aprender lu elementari de ti-ci lingue.
Basics of Vala
Conversion de old BASIC-programas a Vala por aprender lu elementari de ti-ci lingue.
Basics of Zig
Conversion de old BASIC-programas a Zig por aprender lu elementari de ti-ci lingue.

Extern ligamentes relatet