Skip to content

Instantly share code, notes, and snippets.

@josejuan
josejuan / calculo_de_precio.cs
Created June 19, 2012 13:47
Elección cálculo de precio.
// en algún sitio...
enum CalculaPrecioComo {
SobreElCoste,
PrecioMedioPonderado,
DescuentoEscalado
}
// en otro sitio...
switch( modoPrecio ) {
case CalculaPrecioComo.SobreElCoste:
@josejuan
josejuan / microcodigo.c
Created June 19, 2012 21:07
Microcódigo de reglas.
void Extraer(
int *A, // I/O unidades actuales en almacén
int *C, // I/O valor actual en la tarifa
int *P, // I/O unidades pendientes a extraer
char *m // microprograma a ejecutar
) {
int r; // registro de memoria
#define INTENTA(S) { \
@josejuan
josejuan / microtest.c
Created June 19, 2012 21:15
Test del microlenguaje.
#include <stdio.h>
#include <stdlib.h>
void Extraer(
int *A, // I/O unidades actuales en almacén
int *C, // I/O valor actual en la tarifa
int *P, // I/O unidades pendientes a extraer
char *m // microprograma a ejecutar
) {
@josejuan
josejuan / serie_geometrica_tonta.c
Created June 22, 2012 22:57
serie geométrica tonta
// Cálculo ingenuo de una serie geométrica:
int Calculo(int a, int r, int n) {
int R = 1, S = 0;
while(n--) {
S += a * R;
R *= r;
}
return S;
}
@josejuan
josejuan / serie_geometrica.c
Created June 22, 2012 22:59
serie geométrica
// Serie geométrica:
int Calculo(int a, int r, int n) {
return (a * (ipow(r, n) - 1)) / (r - 1);
}
@josejuan
josejuan / caracol.hs
Created June 22, 2012 23:02
Coordenadas de un número en una matriz caracol.
-- Cálculo dígito según coordenada en la matriz caracol.
-- Crédito de "jalonso" en:
-- http://www.solveet.com/exercises/Coordenadas-de-un-numero-en-una-matriz-caracol-/51/solution-326
coordenadas n p
| p <= n = (1,p)
| p <= 2*n-1 = (p-n+1,n)
| p <= 3*n-2 = (n,3*n-1-p)
| p <= 4*n-4 = (4*n-2-p,1)
| otherwise = (x+1,y+1)
where (x,y) = coordenadas (n-2) (p-4*n+4)
@josejuan
josejuan / matriz_caracol.cs
Created June 22, 2012 23:07
dígito en matriz caracol
// Tomandos los cuadros del más exterior al interior x = 1, 2, 3, ... su perímetro
Func<int, int, int> perimeter = ( x, n ) => 4 * ( n - 2 * x + 1 );
// Dada las coordenadas de la diagonal principal (1, 1), (2, 2), ... devuelve el número que contiene
Func<int, int, int> diagonalPos = ( x, n ) => -4 * x * x + ( 4 * n + 8 ) * x - 4 * n - 3;
// Dado un número, indica en qué cuadro está
Func<int, int, int> inSquare = ( z, n ) => (int) Math.Floor(n * 0.5 - 0.5 * Math.Sqrt(n * n - z + 1.0) + 1.0);
// Dígito en la matriz caracol dada una posición:
@josejuan
josejuan / IsBigHappy.cs
Created June 27, 2012 09:49
IsBigHappy
// Indica si un número muuuuy grande es feliz.
// En lugar de indicar el número directamente,
// se suponen ya contados el número de dígitos
// que tiene.
bool IsBigHappy(
int _1digits,
int _2digits,
int _3digits,
int _4digits,
int _5digits,
@josejuan
josejuan / reduccion.c
Created July 1, 2012 22:45
reduccion
int mod4(int n) {
return n % 4;
}
int div4(int n) {
return n / 4;
}
int divX(int n, int x) {
return n / x;
@josejuan
josejuan / Rational.cs
Created July 2, 2012 11:12
Rational.cs
#region License
/*---------------------------------------------------------------------------------*\
Distributed under the terms of an MIT-style license:
The MIT License
Copyright (c) 2005-2010 Stephen M. McKamey
Permission is hereby granted, free of charge, to any person obtaining a copy