% Author: Siv Hansen % Date: 26.08.2005 ... men tankene mine får du alltid...

- Testing testing -

søndag, oktober 29, 2006

postet av siv @ 23:31 - 0 kommentarer

- fototur med Arve -

søndag, oktober 08, 2006

 
 
 
  Posted by Picasa

postet av siv @ 19:29 - 0 kommentarer

- Jeg har flyttet ut herfra, -

torsdag, september 29, 2005

og blogspot-bloggen vil ikke bli oppdatert. På http://nibbler.no/blog/ kan du derimot følge med.

Husk å oppdatere bokmerker ;)

postet av siv @ 14:17 - 4 kommentarer

- Jeg er Chile -

fredag, september 02, 2005


You're Chile!

You're really skinny, and kind of bumpy in frame, but you're not as rough a person as you used to be.  You like long, long, long walks on the beach and avoiding having your rights violated, just like anybody else does.  You're even
willing to stand up to those with more power and influence than you, trying to bring them to justice.  Fight the man



Take the Country Quiz at the
Blue Pyramid

postet av siv @ 13:05 - 1 kommentarer

- Note to self: -

http://svt.se/svt/jsp/Crosslink.jsp?d=27880

postet av siv @ 12:17 - 0 kommentarer

- Jomfruturen min -

fredag, august 26, 2005


/*************************************************
* Author: Siv Hansen
* Date: 26.08.2005
*
* Mitt første prolog-program
*************************************************/

/* deklarerer fakta-opplysninger om familieforhold
Denne påstanden er sann hvis første ledd virkelig er
forelder til annet ledd. Vi oppretter atomene, som om dette er sant */


parent(siv, stina).
parent(siv, torbjorn).
parent(lasse, stina).
parent(lasse, torbjorn).
parent(aslaug, lasse).
parent(oistein, lasse).
parent(aslaug, linda).
parent(aslaug, inge).
parent(paula, siv).
parent(paula, silja).

/* Forteller til prolog-tolkeren hvem som er kvinner*/
female(linda).
female(siv).
female(stina).
female(aslaug).
female(silja).

/* Definerer hva det vil si å være forfedre til noen.
I første tilfelle er X forfar til Y, hvis X er foreldre til Y */

ancestor(X, Y):- parent(X, Y).

/* Rekursiv kall. Relasjonen "ancestor" kaller seg selv. Prolog har ingen for-betingelser, slik de har i java, men rekursive kall er måten å løse dette på. Her sier jeg at X er forfar til Y hvis X er forelder til Z, og
Z er forfar til Y */

ancestor(X, Y):- parent(X, Z), ancestor(Z, Y).

/* Søster-relasjonen beskrives ved at X er søster til Y, hvis både X og Y har
minst en felles forelder, X er en kvinne og X er ikke den samme som Y
Det siste vises ved \=, som tilsvarer != fra andre programmeringsspråk */

sister(X, Y) :- parent(Z, X), parent(Z, Y), female(X), X\=Y.

/* søsken-relasjon */
sister_or_brother(X, Y):-
parent(Z, Y),
parent(Z, X),
Y\=X.

/* Forsøker meg på en far-relasjon */
far(X, Y):- parent(X, Y), not(female(X)).

/* Forsøker meg på en tante-relasjon.
Her sier jeg at X er tanten til N hvis en av N's forelder
er felles med X (tantens) og hvis N er mor til Niesen */


tante(X, Y):-
parent(Z, Y),
sister_or_brother(Z, X),
female(X),
Z\=X.

postet av siv @ 20:58 - 1 kommentarer

- INFO232 Prolog -

Jeg har begynt forelesninger i programmeringsspråket Prolog.

Prolog is a logic programming language. The name Prolog is taken from programmation en logique (French for "logic programming"). It was created by Alain Colmerauer around 1972. It was an attempt to make a programming language that enabled the expression of logic instead of carefully specified instructions on the computer.
Kilde: en.wikipedia.org/wiki/Prolog


Prolog er det mest utbredte programmeringsspråket for logikkprogrammering (dvs bygger på INFO102, som jeg hatet dypt, villt og inderlig). I motsetning til prosedyrelle eller objektorienterte programmeringsspråk (som C eller java) hvor en i koden forteller hvordan en handling skal utføres for å returnere riktig resultat forteller man i deklarative språk hva som skal utføres i stedet for hvordan. Prolog er ikke et rent deklarativt språk, man må i mange tilfeller også ta høyde for hvordan handlinger skal utføres.

Et prolog-program består av en rekke klausuler, betingelser som må oppfylles. Det finnes to typer klausuler, fakta- og regel-klausuler. Faktaklausuler er på formen

p(a1,...an).

hvor p er relasjonsnavn og a er argumentene. Til sist må det være et punktum. (også her er prolog anderledes, for både i java og php brukes semikolon(;))

Eksempel på en fakta-klausul er

forelder(siv, stina).
og
forelder(siv, torbjørn).
(Jeg har utvidet denne med flere klausuler). Denne klausulen forteller at dette er sant, og at siv virkelig er mor til både stina og torbjørn. siv, stina og torbjørn kalles atomer, dvs nesten som variabler med kjent verdi. Alle atomer skrives med liten forbokstav. Når faktaklausulene er ramset opp kan man spørre mot de (nesten som i en database). Eksempel kan jeg spørre er siv torbjørns mor ved å skrive i kommandolinja i programmet (hører med at jeg bruker SWI Prolog-editor, som kan lastes ned fra http://www.swi-prolog.org/. Jeg skriver denne kommandoen:

?- parent(siv, torbjorn).

Yes

Her blir påstanden siv er forelder til torbjørn evaluert til true, og dermed returneres et "yes". Hadde jeg spurt om jeg var forelder til arne ville svaret blitt false=nei.

Atomers motsetning er variabler, som skrives med stor forbokstav. Disse er variabler uten tilordnet verdi (nesten som ukjente i ligninger). Ved hjelp av variabler kan jeg spørre hvem er forelder til torbjørn slik:

?- parent(X, torbjorn).

X = siv


hvor da X representerer foreldren, og torbjørn er barnet. I programmet har jeg deklarert både lasse og siv som forelder til torbjørn, og begge resultatene får jeg hvis jeg skriver ; (semikolon) etter resultatet helt til prolog-tolken svarer "no" (ingen flere svar). I SWI kan jeg bare trykke enter.

Man kan også stille sammensatte spørsmål ved å skille delspørsmålene med komma. Eksempelvis kan jeg spørre hvem som er besteforeldre til stina, det vil si hvem er mine foreldre.

parent(X, stina), parent(Y, X)

hvor X er meg, og Y er min mor/far.

Videre har vi regler i prolog. En regel består av delspørsmål som må evalueres til sant for at hele uttrykket skal bli sant. Det består av et hode og en kropp, og er på formen

p(a1,...an):- p1(b1,...bn),... ,pn(c1,...cn).

Tegnet ":-" betyr det samme som en implikasjon (medfører). Slik kan jeg forenkle besteforeldre-relasjonen fra isted, ved å skrive

grandparent(X, Y) :- parent(X, Z), parent(Z, Y).

X er Y's besteforelder hvis X er forelder til Z og Z er forelder til Y.

La oss si at jeg har deklarert alle i hele familien min, og markert kvinnene med female(). Dermed vil jeg kunne finne ut hvem som er søster/tante til hvem. En søster-relasjon ser slik ut:

sister(X,Y):- parent(Z,Y), parent(Z,X), female(X), X\=Y.

Denne kodelinjen sier at X er søster til Y, hvis Z er foreldre til de begge, X er kvinne og X er ikke den samme som Y. (Det siste forhindrer at eksempelvis jeg blir returnert som min egen søster).

postet av siv @ 20:07 - 0 kommentarer

- Om menn og mus -

tirsdag, august 23, 2005

Hans spurte meg en gang hvorfor jeg ikke liker menn. Kortversjonen finnes her . Måtte de falle død om alle sammen.

postet av siv @ 23:43 - 0 kommentarer

- Det var den sommeren -

lørdag, august 20, 2005

sommeren hvor jeg tilbragte en uke i bringebæråkeren i Sogn. Det var den sommeren Lene kjørte naken på motorsykkel på Helleneset og jeg tenkte at dama var ei hore. Det var den sommeren hvor sommeren var over før den var begynt, jeg var ultramoderne og dumpa en fyr pr sms uten at han brydde seg noe særlig, var sykemeldt og bare gleda meg til skolen skulle begynne igjen. Nå er semesteret i gang og jeg lengter tilbake til sommerferie igjen.

Skolen har begynt og jeg savner Ben. Vet hun har det bra, skal til Bolognia, Italia? Men det er så langt herfra og jeg har lyst å drikke øl på Lille Zachen, snakke skit og kanskje skrive spørringer i relasjonell algebra. Rart hvor tomt det ble etter?a.

postet av siv @ 13:15 - 0 kommentarer