Skip to content

Instantly share code, notes, and snippets.

@puumuki
Last active August 29, 2015 14:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save puumuki/c8fc0b6ebfa9a75937bb to your computer and use it in GitHub Desktop.
Save puumuki/c8fc0b6ebfa9a75937bb to your computer and use it in GitHub Desktop.
python - bittimaskaus
#!/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