Coder Social home page Coder Social logo

obj3-xtend-multiple-dispatch's Introduction

Carga compartida entre vehículos Build Status

Un ejemplo de multimethods en Xtend

Dominio

En este (in)útil programa, queremos calcular la carga que pueden llevar 2 vehículos en conjunto.

Para esto, lo primero que necesitamos es la carga neta de cada uno de ellos, que se calcula de la siguiente manera:

  • Una Bici soporta 2 kilos por rodado y puede tener otros accesorios que le aumentan su carga: parilla (15 kilos), canasto (5 kilos), parrilla con cajón de la Serenísima (25 kilos).
  • De un Auto sabemos su carga inicial, y su carga neta es simplemente ese valor. A menos que tenga GNC, en cuyo caso la carga neta es el triple de la inicial.
  • Por último, la carga neta de un Camion se define como 50 (lo que puede llevar en la cabina) más 2500 por cada acoplado que tenga.

Una vez que tenemos eso, podemos calcular la carga compartida según las siguientes reglas:

  • Si se juntan una Bici con otra Bici, pueden llevar un cajón de 50 kilos sostenido entre las 2. Con cualquier otro vehículo la bici no lleva nada, por lo tanto queda la carga del otro.
  • Un Camion con otro Camion suman sus cargas y las multiplican por la cantidad de acoplados que sea mayor (nosotros tampoco le vemos sentido a esto, pero el experto en logística nos dijo que ese era el cálculo).
  • Un Auto y otro Auto pueden llevar un pequeño acoplado entre los dos, por lo que su carga se incrementa en 150 kilos.
  • En cualquier otro caso, el cálculo es simplemente la suma entre las 2 cargas netas.

Soluciones propuestas

Explotando al máximo las posibilidades de Xtend, proponemos 4 implementaciones diferentes:

Dejamos al lector la tarea de analizar las ventajas y desventajas de cada una de estas opciones 😄

obj3-xtend-multiple-dispatch's People

Contributors

faloi avatar

Watchers

Franco Leonardo Bulgarelli avatar James Cloos avatar Federico Scarpa avatar Ernesto Bossi avatar  avatar  avatar Jose Fermoso avatar Alan Accurso avatar Fernando Dodino avatar Carlos Lombardi avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.