Skip to content

Instantly share code, notes, and snippets.

View JuanFdS's full-sized avatar

Juan Manuel Fernandes dos Santos JuanFdS

  • FannyPack Studios
View GitHub Profile
trabaja(migue, profesion(maestro, cocina), ollaEssen).
trabaja(carla, profesion(maestro, alquimia), mechero).
trabaja(ludat, profesion(aprendiz, mecanica), llaveInglesa).
trabaja(marilu, profesion(oficial, alquimia), piedraFilosofal).
trabajo(profesion(Exp, Area)):-
trabaja(_, profesion(Exp, _), _),
trabaja(_, profesion(_, Area), _).
% sonCamaradas(UnaPersona, OtraPersona):-
@JuanFdS
JuanFdS / palitosDeLaSelva.pl
Created July 17, 2020 16:05
Código de la clase de forall de PdeP
% El enunciado está en https://docs.google.com/document/d/12KmvUy8JmINbykXA-ilL0u7EY31L1d9a-vTiwHgWr2w/edit?usp=sharing
/*animal(Nombre,Clase, Medio)*/
animal(ballena,mamifero,acuatico).
animal(tiburon,pez,acuatico).
animal(lemur,mamifero,terrestre).
animal(golondrina,ave,aereo).
animal(tarantula,insecto,terrestre).
animal(lechuza,ave,aereo).
animal(orangutan,mamifero,terrestre).
@JuanFdS
JuanFdS / tucufix.rb
Last active December 11, 2019 19:34
def generate_absolute_bbox(customization, product = customization.product)
print_file = customization.print_files.first
return nil if print_file.nil?
# Got this logic from Fulfillment::ReadyToPrintImageGenerator#get_absolute_bbox
bbox_url = ImageApi::V2::BboxUrlGenerator[subject_url: print_file.asset.signed_url]
response = ImageApi.get(bbox_url, Fulfillment::ReadyToPrintImageGenerator)
response_hash = JSON.parse(response.body)
image_bbox = response_hash['bbox']
@JuanFdS
JuanFdS / lhm-migraciones-y-locks.md
Last active October 30, 2019 18:07
Escribí esto mientras pair-corríamos una migración que potencialmente podía haberse lockeado con maty, dave y nahue. Al final no se lockeó así que no necesitamos debuggearlo pero igual anoto lo que aprendimos:

Migraciones que se lockean

Migrator wrappea toda la migración

Entangler -> Chunker -> AtomicSwitcher (estos corren uno atrás del otro, mientras corre la migración se puede leer los nombres de estas cosas en los logs)

Entangler: crea los triggers para mantener sincronizadas la tabla nueva con la actual.

Chunker: va copiando cachos de la tabla actual a la nueva.

@JuanFdS
JuanFdS / clase-tadp-3-10-18.scala
Created November 8, 2018 16:19
Código usado en la clase de tadp del sábado 3/10
import java.util.function.Predicate
object Pociones {
case class Persona(nombre: String, niveles: Niveles)
case class Niveles(suerte: Int, convencimiento: Int, fuerza: Int) {
def duplicar = map(2 * _)
def map(f: Int ⇒ Int) = this.copy(suerte = f(suerte),
convencimiento = f(convencimiento),
@JuanFdS
JuanFdS / naiveSolution.hs
Last active October 10, 2017 00:32
Max increasing subsequence length
maxIncreasingSubsequenceLengthAuxiliar n (x:y:xs) | x < y = maxIncreasingSubsequenceLength' (n+1) (y:xs)
maxIncreasingSubsequenceLengthAuxiliar n (_:xs) = max (n + 1) $ maxIncreasingSubsequenceLength xs
maxIncreasingSubsequenceLengthAuxiliar n [] = max n 0
maxIncreasingSubsequenceLength :: Ord a => [a] -> Int
maxIncreasingSubsequenceLength = maxIncreasingSubsequenceLength' 0
--or, a more foldy solution:
maxIncreasingSubsequenceLength' =
(\(_,_,result) -> result) .
type Criterio = Pelicula -> Int
data Pelicula = UnaPelicula { duracion::Int,
calificacion::Int,
generos::[String] } deriving (Show, Eq)
data Cinefilo = UnCinefilo { peliculasDisponibles::[Pelicula],
criterio::Criterio }
esDe::String -> Pelicula -> Bool
pointsToNextLevel level = case level of
0 -> 0
1 -> 6
2 -> 10
3 -> 15
4 -> 30
5 -> 40
6 -> 50
7 -> 60
8 -> 70
def entrenar(tablon: Tablon, criterio: (Equipo,Equipo) => Boolean): Equipo = {
def streamMision(equipoActual:Equipo, unTablon: Tablon):Stream[Mision] = {
equipoActual.elegirMision(unTablon, criterio) match {
case Some(m) =>
Stream.cons(m, streamMision(
m.realizarTareas(equipoActual).get, unTablon.sacarMision(m)))
case _ => Stream.empty
}
}
@JuanFdS
JuanFdS / TaTeTi.hs
Created June 6, 2016 03:55
TaTeTi in haskell
module TaTeTi where
import Data.Matrix hiding (toList)
import Data.Vector as V hiding (reverse, fromList,map,(++),null)
import Prelude as P hiding (head)
import Data.Maybe
import Control.Monad