Last active
August 29, 2015 14:14
-
-
Save puumuki/c8fc0b6ebfa9a75937bb to your computer and use it in GitHub Desktop.
python - bittimaskaus
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python | |
# -*- coding: utf-8 -*- | |
#Tämä on yksi tapa tehdä kiva bittikartta pyyttonilla kokonaislukumuuttujaan. | |
#Enemmän Pythonin kokonaisluku muuttujista PEP-0237 | |
#https://www.python.org/dev/peps/pep-0237/ | |
from enum import IntEnum | |
class Paiva(IntEnum): | |
maanantai =1 #0x01 0000 0001 | |
tiistai =2 #0x02 0000 0010 | |
keskiviikko=4 #0x04 0000 0100 | |
torstai = 8 #0x08 0000 1000 | |
perjantai = 16#0x10 0001 0000 | |
lauantai = 32#0x20 0010 0000 | |
sunnuntai = 64#0x40 0100 0000 | |
#Vielä tilaa yhdelle, tai oikeastaan useammalle.. ei oikeita rajotteita :) | |
#Kokonaisluvun koko venyy ja vanuu tietokonene muistissa, ei ole kiinteäkokoista kokonaislua pyyttonissa. | |
def aktiivinen_paiva( viikonpaivat, paiva ): | |
return paiva & viikonpaivat > 0 | |
def lisaa_paiva( viikonpaivat, paiva ): | |
return paiva | viikonpaivat | |
def poista_paiva( viikonpaivat, paiva ): | |
return paiva ^ viikonpaivat | |
def tulosta_aktiiviset( viikonpaivat ): | |
print("VALITUT PÄIVÄT") | |
for paiva in list(Paiva): | |
ak = aktiivinen_paiva( paiva, viikonpaivat ) | |
print("%12s %5s" % (paiva.name, 'valittu' if ak else ' -- ' )) | |
viikonpaivat = 0 | |
#Päivien ma, ke ja su asettaminen funktiolla | |
viikonpaivat = lisaa_paiva( viikonpaivat, Paiva.maanantai ) | |
viikonpaivat = lisaa_paiva( viikonpaivat, Paiva.keskiviikko ) | |
viikonpaivat = lisaa_paiva( viikonpaivat, Paiva.sunnuntai ) | |
viikonpaivat = poista_paiva( viikonpaivat, Paiva.keskiviikko ) | |
tulosta_aktiiviset( viikonpaivat ) | |
#Paivien ma, ke ja su asettaminen, oikeastaan funktiot ovat tässä kohtaa turhia :) | |
viikonpaivat = 0 | Paiva.maanantai | Paiva.keskiviikko | Paiva.sunnuntai | |
#Keskiviikon poisto | |
viikonpaivat ^= Paiva.keskiviikko | |
tulosta_aktiiviset( viikonpaivat ) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment