Skip to content

Instantly share code, notes, and snippets.

View jolisper's full-sized avatar

Jorge Luis Pérez jolisper

View GitHub Profile
(doseq [i (range 1 101)]
(let [mn {"" (str i)}
st (str (get ["Fizz" nil] (rem i 3) nil)
(get ["Buzz" nil] (rem i 5) nil))]
(println (get mn st st))))
@jolisper
jolisper / template_method.clj
Last active August 29, 2015 13:58
Implementación del template method en Clojure
(ns clj-design-patterns.template-method)
(defn crear-perro [nombre ladrido]
{ :nombre nombre, :ladrido ladrido })
(def chiguagua
(crear-perro :chiguagua (fn [] (println "guau!"))))
(def bulldog
(crear-perro :bulldog (fn [] (println "GUAU!"))))
@jolisper
jolisper / duck-typing.rb
Last active August 29, 2015 13:58
Ejemplo de Duck Typing
# Probado en Ruby 1.9.3
########################
# Ejemplo de Duck Typing
########################
class Chiguagua
def ladrar
puts "guau!"
end
@jolisper
jolisper / template-method-prototipos.rb
Created April 4, 2014 19:27
Implementación del patrón template method usando prototipos
# Probado en Ruby 1.9.3
#############################################################
# Implementación del patrón template method usando prototipos
#############################################################
# perro es el prototipo de los otros objetos
perro = Object.new
# Nota: define_singleton_method define un
@jolisper
jolisper / template-method-clases.rb
Created April 4, 2014 19:24
Implementación del patrón template method usando clases
# Probado en Ruby 1.9.3
#########################################################
# Implementación del patrón template method usando clases
#########################################################
class Perro
def ladrar
3.times do
ladrar_especifico
@jolisper
jolisper / family-recusion.clj
Last active August 29, 2015 13:57
Family Recursion in Clojure
(ns family-recursion.core)
(def families
{ :ale [:alep :alem :luli]
:luli [:lulip :lulim :sabri :ale]
:sabri [:luli :ale :enrrique]
:enrrique [:pablo :diego]
:pablo [:jesus :ernesto]
:ernesto [:ernestop :ernestom] })
@jolisper
jolisper / sicp-exercise-1.6.scm
Created September 10, 2012 03:15
SICP exercise 1.6
; SICP exercise 1.6
(define (new-if predicate then-clause else-clause)
(cond (predicate consecuent)
(else alternative)))
(define (square x) (* x x))
(define (good-enough? guess x)
(< (abs (- (square guess) x)) 0.001))
@jolisper
jolisper / chainOfResponsibility.java
Created May 2, 2012 05:23
Chain of Responsibility Implementación Básica
/**
* Esta clase representa un paso de la cadena y tiene la responsabilidad
* de ejecutar la propia lógica de negocios y la de continuar la cadena.
*
* @author jolisper
*
*/
public abstract class Chain {
private Chain next;
@jolisper
jolisper / prefork_echosv.rb
Created May 1, 2012 00:18
Preforked Echo Server
require 'socket'
# Simple preforked echo server
socket = TCPServer.open('localhost', 2000)
puts "PID: " + Process.pid.to_s
3.times do
fork do
@jolisper
jolisper / morse.rb
Created April 23, 2012 05:01
Morsels are Delicious
def morse_to_eng(morse)
table = {
A:'.-', N:'-.', B:'-...', O:'---', C:'-.-.',P:'.--.',D:'-..',Q:'--.-',
E:'.',R:'.-.',F:'..-.',S:'...',G:'--.',T:'-',H:'....',U:'..-',
I:'..',V:'...-',J:'.---',W:'.--',K:'-.-',X:'-..-',L:'.-..',Y:'-.--',
M:'--', Z:'--..' }.invert
phrase = ''
morse.split(' ').each do |word|
phrase << word.split(' ').map { |letter| table[letter] }.join << ' '