Skip to content

Instantly share code, notes, and snippets.

View alcidesfp's full-sized avatar

Alcides Flores Pineda alcidesfp

View GitHub Profile
@alcidesfp
alcidesfp / arbolito-nav.scm
Created December 27, 2012 06:12
Arbolito de Navidad
(cond-expand (chicken (use srfi-1 srfi-13))
(kawa (require 'srfi-1 'srfi-13)))
(let* ((numeros (filter odd? (iota 20 1)))
(maxnum (apply max numeros)))
(newline)
(for-each (lambda (n)
(format #t "~a~a~%" (make-string (/ (- maxnum n) 2) #\space)
(make-string n #\*)))
numeros)
@alcidesfp
alcidesfp / nomedad.scm
Created September 25, 2012 17:02
Programa mascota simple en Scheme Chicken
#!/usr/local/bin/csi -s
;; -*- coding:utf-8; mode:Scheme -*-
(use extras)
(define (pide-nombre)
(display "Hola, ¿Cuál es tu nombre?: ")
(read-line))
(define (pide-ann)
(display "¿En qué año naciste?: ")
@alcidesfp
alcidesfp / swing1.scm
Last active October 10, 2015 11:18
Podcast Recursivo Ejemplo1: Scheme Kawa
;; -*- coding:utf-8; mode: Scheme -*-
(define-alias JFrame javax.swing.JFrame)
(define-alias Runnable java.lang.Runnable)
(define-alias EventQueue java.awt.EventQueue)
(define-simple-class MyApp (Runnable)
;; members
(main-wnd ::JFrame
init: (JFrame "Window Title"
default-close-operation: JFrame:EXIT_ON_CLOSE
@alcidesfp
alcidesfp / swing1.groovy
Created September 9, 2012 03:04
Podcast Recursivo Ejemplo1: Groovy
// -*- coding:utf-8; mode: Groovy -*-
import javax.swing.JFrame
import java.lang.Runnable
import java.awt.EventQueue
class MyApp implements Runnable {
// members
JFrame main_window
// methods
public MyApp() { //constructor
@alcidesfp
alcidesfp / gist:3445063
Last active October 9, 2015 05:18
Función para calcular el enésimo término de la sucesión de Fibonacci en Scheme
;; Versión iterativa compacta con DO
(define (fib n)
(do ((a 0 b)(b 1 (+ a b))(i n (- i 1)))
((= i 0) a )))
;; Versión iterativa explícita con named LET
(define (fib n)
(let loop ((a 0)
(b 1)
(i n))
@alcidesfp
alcidesfp / fizzbuzz.scm
Created August 23, 2012 18:57
FizzBuzz en Scheme/Kawa
;; -*- coding: utf-8; mode: Scheme -*-
;; FizzBuzz en Scheme R5 (Kawa, Chicken) sin utilizar funciones de bibliotecas extras
;;------------------------------------------------------------------------
(define (my-iota n #!optional (i 0))
"Regresa una lista de N numeros naturales consecutivos que van desde
I=0 hasta N-1 por default y opcionalmente desde I hasta N si se
proporciona I >= 0"
(if (and (>= n 0) (integer? n)) ;; Definida solo para los Naturales
;; Versión recursiva con NAMED LET es efectivamente iterativa
(let loop ((j i)
@alcidesfp
alcidesfp / num-roman-test.scm
Created July 31, 2012 05:46
Kata Números Romanos en Scheme R5 (Kawa y Chicken) Pruebas Unitarias
;; -*- coding: utf-8; mode: scheme -*-
;; $Id: num-roman-test.scm,v 1.2 2012/07/08 00:09:35 alcides_fp Exp $
(cond-expand (chicken (require-extension srfi-64))
(kawa (require 'srfi-64)))
(load "num-roman.scm")
(test-begin "num-roman-suite")
;;------------------------------------------------------------------------
@alcidesfp
alcidesfp / num-roman.scm
Created July 31, 2012 05:42
Kata Números Romanos en Scheme R5 (Kawa y Chicken)
;; -*- coding: utf-8; mode: Scheme -*-
;; $Id: num-roman.scm,v 1.3 2012/07/31 05:39:03 alcides_fp Exp $
(cond-expand (chicken (require-extension srfi-1))
(kawa (require 'srfi-1)))
;;------------------------------------------------------------------------
(define (numeral digito posicion)
(let ((matriz-numerales
'#(#("" "I" "II" "III" "IV" "V" "VI" "VII" "VIII" "IX")
#("" "X" "XX" "XXX" "XL" "L" "LX" "LXX" "LXXX" "XC")
#("" "C" "CC" "CCC" "CD" "D" "DC" "DCC" "DCCC" "CM")
@alcidesfp
alcidesfp / gist:2939820
Created June 16, 2012 03:38
Snippet Swing ABCL
;; -*- coding:utf-8; mode:Lisp -*-
;; Snippet de código utilizando Swing en Armed Bear Common Lisp
(require :abcl-contrib)
(require :jss)
(let ((frame1 (jss:new :JFrame "Ventana Hola")) )
(#"add" frame1 (jss:new :JLabel "Hola a todos desde ABCL"))
(#"pack" frame1)
(#"setDefaultCloseOperation" frame1 (jss:get-java-field :JFrame "EXIT_ON_CLOSE"))
(#"setVisible" frame1 +true+))
@alcidesfp
alcidesfp / dec-hex.rkt
Created May 31, 2012 16:56
Versión original en Racket de dec->hex.
;; -*- coding: utf-8; mode: Scheme -*-
#lang racket
(provide dec->hex)
(define (dec->hex num)
(let ((base 16)
(cifras-hex "0123456789ABCDEF"))
(do ((cantidad num (quotient cantidad base))