Archive for december, 2012

2^5-1

december 29, 2012

I går blev jag

dec: 31
hex: 1f
bin: 11111

Trettioett är uppenbarligen ett Mersenne-primtal, dvs. ett primtal som har formen

Mp = 2p-1

Uppenbarligen är det bevisat att ifall Mp är ett primtal är också p ett primtal. Mersenne-primtalen har inte utforskats till något större djup, det är till exempel inte bevisat huruvida det finns ett begränsat antal eller ifall man kan fortsätta hitta dessa i all oändlighet.

Bevis för den nyfikne (direkt från wikipedia-artikeln)

a ≡ 1 (mod a − 1). Then ap ≡ 1 (mod a − 1), so ap − 1 ≡ 0 (mod a − 1). Thus a − 1 | ap − 1. However, ap − 1 is prime, so a − 1 = ap − 1 or a − 1 = ±1. In the former case, a = ap, hence a = 0,1 (which is a contradiction, as neither 1 nor 0 is prime) or p = 1. In the latter case, a = 2 or a = 0. If a = 0, however, 0p − 1 = 0 − 1 = −1 which is not prime. Therefore, a = 2.

Lakritskola

december 16, 2012

För framtida referens:

LAKRITSKOLA
5 dl grädde
500 g strösocker
5 msk sirap
2 msk flytande glukos
30 g smör
1 st. lakritsstång (krossas i mortel) OBS! De flesta apotek har slutat sälja lakritsstång, men Stockholm eter- och essensfabrik säljer.

Alla ingredienser kokas ihop på ganska het värme. Rör inte för ofta. Gör kolaprovet. Det tar ca 30-40 minuter. [Receptets källa]

Kolan är klar, smakar som den brukar och ger ordentlig julstämning!

Mutable/immutable i Python

december 12, 2012

I python har en klass två huvudattribut: huruvida den är

  • möjlig att förändra (mutable)
  • ifall den är unikt identifierbar (hashable)

Dessa koncept är relativt enkla att förstå sig på när man inte funderar aktivt på saken men försöker man precisera vad som gör ett objekt förändringsbart och vad som gör det unikt identifierbart tycker jag det är klurigt.

Till exempel är alla numeriska variabler immutable vilket innebär att man inte kan skicka t.ex en integer till en funktion göra ett antal operationer och sedan returnera och tro att den integer man använt är förändrad.

Ex:

def add_two(i):
  i + 2

a = 1
add_two(a)
print a

i exemplet ovan kommer a fortfarande vara 1 i print-satsen eftersom i funktionen add_two kommer en kopia användas då a är immutable. I C används pekare för att skilja på referenser och värden men ingen sådan mekanism verkar finnas i python. jag har själv lyckats skapa ett eget förändringsbart (mutable) heltal men jag är lite osäker på vad som håller den förändringsbar och ifall jag på något vis kan uppdatera den så att den plötsligt inte är förändringsbar (immutable). Någon python-guru där ute som har något råd?

mitt grundläggande förändringsbara heltal:

class mutable_int():
    a = 1
    def __init__(self):
        pass
    def __setattribute__(self, v):
        self.a = v
    def __add__(self, v):
        self.a += v
    def __getattribute(self):
        return self.a
    def __repr__(self):
        return str(self.a)

Men hur konstruerar jag en klass som inte är förändringsbar?

Jag återkommer vid tillfälle och frågar om den andra aspekten av variabler, hashningsbarhet.

Snö!

december 6, 2012

Det är snö ute, det är relativt mycket snö ute. Relativt innebär att jämfört med minnet av mina barndomsvintrar är det inte riktigt jämförbart (eftersom det enligt mitt minne alltid var minst en halvmeter snö från första december till mitten av Mars).

Följande blankrader visar ungefär hur vitt det är och hur blank isen är på vissa ställen:

 

 

 

Helt ok med andra ord.