Algoritmo para calcular el día de la semana en una fecha

Pues me he encontrado con el Algoritmo de Tomohiko Sakamoto en C para calcular el día de la semana de una fecha y lo he pasado a python.

Alucinante, de verdad (el algoritmo, no mi versión python ;D).

#!/usr/bin/env python
# -*- coding: utf-8 -*-

def dow(y, m, d):
	t = [0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4]
	y -= m < 3  #Si el mes es menor de tres se disminuye en uno el año
	return (y + y/4 - y/100 + y/400 + t[m-1] + d) % 7

if __name__ == '__main__':
	days = ["Domingo", "Lunes", "Martes", "Miercoles","Jueves", "Viernes", "Sábado"]
	print days[dow(2016,6,16)]

Un saludo.

Respuestas, más o menos detalladas, de las 100 preguntas

Aquí están:

soluciones100ejercicios

Las he subido en odt para que las cambiéis, las modifiquéis, las compartáis y sobretodo, las leáis.

Igual estudiarlas es demasiado pero creo que sería muy útil ;DDDD

 

Para nuestro examen de RECU:

  1. El día 17 de marzo entre las 8:30 y las 13:30 deberéis traer un “pack” de preguntas para nuestro examen.
  2. Si ese día, entre esas horas, o no se llega a un acuerdo por parte de todos, o no existen las preguntas CHATACHÁÁAAN….estáis en mis manos.
  3. Ese pack de preguntas no podrá contener ninguna de las preguntas denominadas “las famosas 100”.
  4. Tampoco deberá contener ninguna pregunta de las Actividades Procesos ya evaluadas.
  5. Una vez decididas las preguntas, su puntuación y ORDEN el día del examen, a las 08:30 se realizará una clase especial en la que se responderá por parte del que esto escribe las preguntas.
  6. Una hora después, realizaremos el examen.

Suerte.

 

Saludos

Para los que están trabajando con el shield de Motores

Este es el código que “tiré” para controlar desde python mi brazo robótico.
Veréis que en setup() configuro la velocidad de cada uno de los motores.
Cuando envío el código de movimiento se ejecuta lo definido en TIEMPO, por lo que para hacer que el motor se mueva durante un tiempo medido en segundos bastaría con enviar “opción” * segundos * 2.

También lo he probado sin delay y me funciona perfectamente.
Utilizadlo en clase y me contáis.
Un saludo.
Espero que os sea de utilidad.


#include <AFMotor.h>
#define VELOCIDAD 200
#define TIEMPO 500

AF_DCMotor motor1(1);
AF_DCMotor motor2(2);
AF_DCMotor motor3(3);
AF_DCMotor motor4(4);


void setup() {
  
  motor1.setSpeed(VELOCIDAD);
  motor2.setSpeed(VELOCIDAD);
  motor3.setSpeed(VELOCIDAD);
  motor4.setSpeed(VELOCIDAD);
  
  
  Serial.begin(9600);           // set up Serial library at 9600 bps
  
}

void loop() {
  char opcion; //vamos a leer lo que venga por el puerto serie
  if (Serial.available() >0){
    opcion=Serial.read();
    switch (opcion) {
        case '1':
             motor1.run(FORWARD);
             delay(TIEMPO);
             break;
        case '2':
             motor2.run(FORWARD);
             delay(TIEMPO);
             break;
        case '3':
             motor3.run(FORWARD);
             delay(TIEMPO);
             break;
        case '4':
             motor4.run(FORWARD);
             delay(TIEMPO);
             break;
        case '5':
             motor1.run(BACKWARD);
             delay(TIEMPO);
             break;     
        case '6':
             motor2.run(BACKWARD);
             delay(TIEMPO);
             break;
        case '7':
             motor3.run(BACKWARD);
             delay(TIEMPO);
             break;
        case '8':
             motor4.run(BACKWARD);
             delay(TIEMPO);
             break;     
             
             
    
     } //switch
    } //if  
    
}//loop