Basics of Racket

Priskribo de la ĉi-paĝa enhavo

Konverto de malnovaj BASIC-programoj al Racket por lerni la fundamentojn de ĉi-tiu lingvo.

Etikedoj:

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)

Rilataj paĝoj

Basics off
Metaprojekto pri la projektoj «Basics of…».
Basics of 8th
Konverto de malnovaj BASIC-programoj al 8th por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Ada
Konverto de malnovaj BASIC-programoj al Ada por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Arturo
Konverto de malnovaj BASIC-programoj al Arturo por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of C#
Konverto de malnovaj BASIC-programoj al C# por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of C3
Konverto de malnovaj BASIC-programoj al C3 por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Chapel
Konverto de malnovaj BASIC-programoj al Chapel por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Clojure
Konverto de malnovaj BASIC-programoj al Clojure por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Crystal
Konverto de malnovaj BASIC-programoj al Crystal por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of D
Konverto de malnovaj BASIC-programoj al D por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Elixir
Konverto de malnovaj BASIC-programoj al Elixir por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of F#
Konverto de malnovaj BASIC-programoj al F# por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Factor
Konverto de malnovaj BASIC-programoj al Factor por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of FreeBASIC
Konverto de malnovaj BASIC-programoj al FreeBASIC por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Gleam
Konverto de malnovaj BASIC-programoj al Gleam por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Go
Konverto de malnovaj BASIC-programoj al Go por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Hare
Konverto de malnovaj BASIC-programoj al Hare por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Haxe
Konverto de malnovaj BASIC-programoj al Haxe por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Icon
Konverto de malnovaj BASIC-programoj al Icon por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Io
Konverto de malnovaj BASIC-programoj al Io por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Janet
Konverto de malnovaj BASIC-programoj al Janet por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Julia
Konverto de malnovaj BASIC-programoj al Julia por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Kotlin
Konverto de malnovaj BASIC-programoj al Kotlin por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Lobster
Konverto de malnovaj BASIC-programoj al Lobster por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Lua
Konverto de malnovaj BASIC-programoj al Lua por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Nature
Konverto de malnovaj BASIC-programoj al Nature por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Neat
Konverto de malnovaj BASIC-programoj al Neat por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Neko
Konverto de malnovaj BASIC-programoj al Neko por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Nelua
Konverto de malnovaj BASIC-programoj al Nelua por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Nim
Konverto de malnovaj BASIC-programoj al Nim por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Nit
Konverto de malnovaj BASIC-programoj al Nit por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Oberon-07
Konverto de malnovaj BASIC-programoj al Oberon-07 por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of OCaml
Konverto de malnovaj BASIC-programoj al OCaml por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Odin
Konverto de malnovaj BASIC-programoj al Odin por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Pike
Konverto de malnovaj BASIC-programoj al Pike por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Pony
Konverto de malnovaj BASIC-programoj al Pony por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Python
Konverto de malnovaj BASIC-programoj al Python por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Raku
Konverto de malnovaj BASIC-programoj al Raku por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Retro
Konverto de malnovaj BASIC-programoj al Retro por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Rexx
Konverto de malnovaj BASIC-programoj al Rexx por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Ring
Konverto de malnovaj BASIC-programoj al Ring por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Rust
Konverto de malnovaj BASIC-programoj al Rust por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Scala
Konverto de malnovaj BASIC-programoj al Scala por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Scheme
Konverto de malnovaj BASIC-programoj al Scheme por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Styx
Konverto de malnovaj BASIC-programoj al Styx por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Swift
Konverto de malnovaj BASIC-programoj al Swift por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of V
Konverto de malnovaj BASIC-programoj al V por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Vala
Konverto de malnovaj BASIC-programoj al Vala por lerni la fundamentojn de ĉi-tiu lingvo.
Basics of Zig
Konverto de malnovaj BASIC-programoj al Zig por lerni la fundamentojn de ĉi-tiu lingvo.

Eksteraj rilataj ligiloj