Szia Péter & Zsolt!
Az első kisházival kapcsolatban lenne kérdésem.
Nem egészen világos, hogy count([A,A,B], 2), labeling([A]). miért találja
meg a megoldást, míg a count([A,A,B], 2). hívás felfüggesztődik?
A ti megoldásotok a count([A,A,B,C], 2), labeling([A]).-ra mit adna
eredményül?
Köszönöm,
Attila
Kedves NDP Hallgatok!
Felvettem mindenkit a levlistara, akinel nem tudtam mast, ott a hszk-s
cimmel.
Kerem valtoztassatok meg olyan cimre, amelyet rendszeresen olvastok. A lista
honlapja:
http://www.cs.bme.hu/mailman/listinfo/nhlp-l
Elkeszult a targy honlapja is: http://www.cs.bme.hu/~szeredi/ndp/
letolthetok a diak, segadanyagok az 1. kishazihoz.
Az ETS is mukodik, lehet SICStus licenszet igenyelni, illetve kishazit
beadni.
http://cs.bme.hu/~szeredi/oktatas/ndp/ets.html
Ha barmi problemat, pontatlansagot eszleltek, irjatok!
Koszi,
Peter
Remelem jol haladtok az utolso NDP-s vizsgara valo keszulessel.
Javasolom, hogy mindenki oldja meg a honlaprol letoltheto vizsgasort,
gyakorlaskent:
http://cs.bme.hu/~szeredi/nlp/nlp10a-vzh1.pdf
Ha ezzel barmi gondotok van, kerdezzetek emailben.
Ha van ra igeny, szivesen tartok szemelyes konzultaciot is. Pentek 10-15
kozott DP vizsga van, ugyhogy utana 15-tol lehetne ez a konzultacio a
szobamban (ez meg nehany napig a V2.136) illetve ha 2-3 fonel tobben jottok
akkor a V2.141-ben a szomszedban.
Kerem, hogy aki igenyt tart a konzultaciora, minel elobb jelezze vissza
ezt.
Ha valakinek nagyon nem jo a javasolt idopont, es csak keves kerdese van,
az megkereshet a DP vizsga alatt, pentek 11-14 kozott az E1.A-ban (persze
ilyenkor lehet, hogy varnia kell egy kicsit). Ha valaki azt tervezi, hogy
a DP vizsgan szeretne konzultalni, az is irjon email-t.
FONTOS:
A vizsgan irasos anyagok hasznalhatok! Ne felejtsetek otthon a jegyzetet,
stb.-t.
Alabb meg beidezem a vizsgaval kapcsolatos korabbi maileket.
-Peter
---------------------------------------------------------------------------
2011/1/6 László Nikházy <niklaci(a)hotmail.com>
Kedves Péter!
Köszönöm. Azt még megkérdezhetem, hogy milyen lesz a vizsga, így hogy csak egyedül vagyok? Szóbeli vagy írásbeli?
Laci
Ugyanolyan lesz, mint több vizsgázó esetén: leginkább interaktív írásbelinek nevezném.
Tehát ha elkészülsz egy feladat megoldásával, akkor azt megnézem, rámutatok a problémákra, és még van lehetõséged javítani.
Fontos, minden írásos segédeszköz használható!
Az eddigi vizsgák többsége az alábbi szerkezetû volt:
CLPFD (összesen 60-65 pont):
egy globális korlát megírása
egy FD predikátum megírása
egy reifikációt igénylõ feladat megoldása
Más:
2 feladat összesen 20-25 pontért az alábbi témakörökbõl:
CLPQ/R
CLPB
CHR
Mercury
Gondolom a minta-feladatokat már tanulmányoztad:
http://cs.bme.hu/~szeredi/oktatas/docs/gyujtemeny/gyujtemeny.html
Itt a fent említett feladatok mindegyikére találsz példát.
Alább még beidézem egy korábbi levelemet a vizsgáról.
-Péter
-------------------------------------------------------------------------------
Kedves NLP-sek!
A nagyhazi sikeressegehez elegendo, ha a programotok 4 tesztesetre
sikeresen lefut (40%-os elv), ekkor ezert 4 vizsgapont kaphato
(tesztesetenket 1, max 10). Tovabbi max 5 pont kaphato a nhf
dokumentaciora.
A 100 pont fennmarado resze, 85 pont szerezheto a vizsgan.
A vizsga elott leadott kishazikra, ha minden tesztesetre lefutnak, 2-2
pluszpont jar.
Ponthatarok:
osszpontszam jegy
>= 85 jeles
>= 70 jo
>= 55 kozepes
>= 40 elegseges
A vizsgan irott (nyomtatott, kezzel irott) segedanyagot *lehet hasznalni*.
Javaslom, hogy mindenki hozza el a foliamasolatok kinyomtatott
valtozatat...
Kedves mindnyájan!
Az összes kisházi és a nagyházi is beadható már.
A viysgát illetően továbbítom a Lacinak írt levelet.
A 14.-i NDP vizsga előtt 1-2 nappal szívesen tartok személyes konzultációt.
Javaslatom: 13. csütörtök, 15-17 óra, V2.141. De ha a többségeteknek a
szerda jobb, akkor lehet akkor.
Ha valaki igényt tart a konzultációra, írja meg. Azt is írjátok meg, hogy
jó-e a javasolt időpont.
-Péter
Ui. Persze levélben is lehet kérdezni.
---------- Forwarded message ----------
From: Peter Szeredi <szeredi(a)cs.bme.hu>
Date: 2011/1/6
Subject: NDP vizsga
To: László Nikházy <niklaci(a)hotmail.com>
2011/1/6 László Nikházy <niklaci(a)hotmail.com>
> Kedves Péter!
>
> Köszönöm. Azt még megkérdezhetem, hogy milyen lesz a vizsga, így hogy csak
> egyedül vagyok? Szóbeli vagy írásbeli?
>
> Laci
>
>
Ugyanolyan lesz, mint több vizsgázó esetén: leginkább interaktív írásbelinek
nevezném.
Tehát ha elkészülsz egy feladat megoldásával, akkor azt megnézem, rámutatok
a problémákra, és még van lehetőséged javítani.
Fontos, minden írásos segédeszköz használható!
Az eddigi vizsgák többsége az alábbi szerkezetű volt:
CLPFD (összesen 60-65 pont):
egy globális korlát megírása
egy FD predikátum megírása
egy reifikációt igénylő feladat megoldása
Más:
két feladat összesen 20-25 pontért az alábbi témakörök közül kettőből:
CLPQ/R
CLPB
CHR
Mercury
Gondolom a minta-feladatokat már tanulmányoztad:
http://cs.bme.hu/~szeredi/oktatas/docs/gyujtemeny/gyujtemeny.html<http://cs.bme.hu/%7Eszeredi/oktatas/docs/gyujtemeny/gyujtemeny.html>
Itt a fent említett feladatok mindegyikére találsz példát.
Alább még beidézem egy korábbi levelemet a vizsgáról.
-Péter
-------------------------------------------------------------------------------
Kedves NLP-sek!
A nagyhazi sikeressegehez elegendo, ha a programotok 4 tesztesetre
sikeresen lefut (40%-os elv), ekkor ezert 4 vizsgapont kaphato
(tesztesetenket 1, max 10). Tovabbi max 5 pont kaphato a nhf
dokumentaciora.
A 100 pont fennmarado resze, 85 pont szerezheto a vizsgan.
A vizsga elott leadott kishazikra, ha minden tesztesetre lefutnak, 2-2
pluszpont jar.
Ponthatarok:
osszpontszam jegy
>= 85 jeles
>= 70 jo
>= 55 kozepes
>= 40 elegseges
A vizsgan irott (nyomtatott, kezzel irott) segedanyagot *lehet hasznalni*.
Javaslom, hogy mindenki hozza el a foliamasolatok kinyomtatott
valtozatat...
Sziasztok!
Akadt néhány problémám a sudoku beadásával kapcsolatban, amihez a segítségeteket
kérem.
Első a stopper(...):
| ?- stopper('test077d.txt',user).
Feladvány: test077d.txt, megoldás: 2, futási idõ: 2.293 s
-----
! Existence error in sudoku_keret:nth/3
! procedure sudoku_keret:nth/3 does not exist
! goal:
sudoku_keret:nth(1,[[1,9,8,6,5,2,7,3,4],[2,3,5,4,1,7,9,8,6],[7,6,4,8,3,9,5,1,2],[9,4,7,3,8,1,6,2,5],[8,5,6,2,7,4,1,9,3],[3,2,1,5,9,6,8,4,7],[4,8,9,7,2,5,3,6,1],[6,7,3,1,4,8,2,5,9],[5,1,2,9,6,3,4,7,8]],_83)
% source_info
| ?-
Ahogy látható, panaszkodik az nth/3 hiányára. Érthető, mivel már nth0 és nth1
van a lists libraryban. Nagyobb gond, hogy ezen kívül a tab/1-et is hiányolja
(amiről annyit sikerült kiderítenem, hogy beépített predikátum, és szóközöket
írna ki).
Másik probléma: feltöltöttem ETS-re a programomat, és 0/10-et kaptam. Ezután
kipróbáltam az 1. tesztre ('test077d.txt'), és a 2 jó megoldást adta vissza,
amiket a visszalépések során ki is írt.
| ?- sudoku_be('test077d.txt',_F),sudoku(_F,M).
M =
[[1,9,8,6,5,2,7,3,4],[2,3,5,4,1,7,9,8,6],[7,6,4,8,3,9,5,1,2],[9,4,7,3,8,1,6,2,5],[8,5,6,2,7,4,1,9,3],[3,2,1,5,9,6,8,4,7],[4,8,9,7,2,5,3,6,1],[6,7,3,1,4,8,2,5,9],[5,1,2,9,6,3,4,7,8]]
? ;
M =
[[9,1,8,6,5,2,3,7,4],[2,7,5,4,9,3,1,8,6],[3,6,4,8,7,1,5,9,2],[1,4,3,7,8,9,6,2,5],[8,5,6,2,3,4,9,1,7],[7,2,9,5,1,6,8,4,3],[4,8,1,3,2,5,7,6,9],[6,3,7,9,4,8,2,5,1],[5,9,2,1,6,7,4,3,8]]
? ;
no
% source_info
| ?-
Adalék, hogy a programom mindegyik feladatra <0.11sec alatt futott le a
szerveren, vagyis nem a normális működés során adott hibás választ. (az előbb
említett 77. feladványra nálam kb 2.5 sec alatt végez).
....azt szeretném megkérdezni, hogy a kettő között van-e valami összefüggés :D
Segítségeteket előre is köszönöm:
Gyuri
Egyikotok irta:
> A gyorsítás viszont nem nagyon megy...Kipróbáltam minden trükköt, amit anno
> deklapónál használtam, de csak lassítottak rajta.
> Van egy olyan, hogy ha egy oszlopban (sorban stb.) csak egy elem domainjében
> szerepel pl. a 4-es, akkor behelyettesíti arra. Ezt megírtam globális
> korlátként, de csak lassított a futáson. Elképzelhetõ, hogy a clpfd (az
> all_different hatására mondjuk) már észreveszi ezt az esetet?
Az all_different csak akkor, ha megfelelo opciot adsz neki, de az
all_distinct alapertelmezesben tartomanykonzisztenciat biztosit, tehat
annak hasznalatakor biztosan felesleges ez a plusz globalis korlat.
Ami fontos tehat:
1. Hasznaljatok tartomany-szukito korlatokat:
a. all_distinct (es nem all_different)
b. az s es w infoknak megfelelo tavolsag-korlatokhoz is erdemes egy
tartomany-szukito megoldast talalni.
2. Hasznaljatok borotvalast.
3. Hasznaljatok redundans korlatokat.
Az en viszonylag egyszeru megoldasom futasa a kovetkezokeppen alakul:
1. megvalositasa eseten (2. es 3. nelkul) lefut 6 teszteset (tehat mar boven
ervenyes a nagyhazi).
1.+2. megvalositasa eseten lefut 8 teszteset.
1.+2.+3. megvalositasa eseten lefut mind a 10 teszteset.
(A fenti "lefutott" tesztesetek eseten legalabb 3-szoros az en futasi
idomhoz kepest a idokorlat.)
Nikhazy Laci programjaval az osszes teszteset lefutott szumma 20 mp
korul. Laci, nyugodtan ird meg a listara, hogy milyen *jellegu*
optimalizaciokat hasznaltal (persze reszletek nelkul).
Kicsit reszletesebben irok meg a 2. es 3. "tanacsokrol".
A borotvalasban talan az a legosszetetebb, hogy hogyan agyazzuk be a
cimkezesbe. Ket lehetoseg:
- nem hasznaljuk a konyvtari labeling eljarast, helyette egy sajat cimkezot
irunk. Ebben a cimkezoben minden n. cimkezesi lepes utan meghivjuk a
borotvalast (ahol n egy kiserletileg megallapitando konstans -- az en
programomnal 2 vagy 3 latszott a legjobbnak).
Hatrany: elveszitjuk a konyvtari cimkezes elonyeit (pl. a hatekony
valtozo-kivalasztas), vagy ezeket be kell programoznunk.
- a konyvtari labeling eljarast hasznaljuk, es a myval opcioval vesszuk at
a vezerlest minden cimkezesi lepes elott. Persze ilyenkor is erdemes csak
minden n. cimkezesi lepesben hajtani vegre a borotvalast, de most ezt
csak globalis valtozok hasznalataval tudjuk elerni (lasd bb_put, bb_get
beepitett eljarasok).
Hatrany: ezeket a speci dolgokat (myval, bb_*) fel kell deriteni.
Maga a borotvalas ugye abbol all, hogy vegigmegyunk a sudoku tablan, es
megprobalunk egyes -- meg be nem helyettesitett -- mezoket szukiteni oly
modon, hogy kivalasztunk egy lehetseges erteket, es megnezzuk, hogy ha erre
helyettesitunk, akkor ez meghiusulast okoz-e. Ha igen, akkor nyertunk, ezt
az erteket kizarhatjuk az adott valtozo lehetseges ertekei kozul. Ha nem,
akkor nem volt szerencsenk, es nem tudunk szukiteni (es a behelyettesites
miatt felebresztett demonok munkaja karba veszett).
A fenti eljarast erdemes lehet nem az osszes mezore elvegezni, mert az sok
karbaveszett munkahoz vezethet. Egy lehetseges korlatozas, hogy csak azokat
a mezoket borotvaljuk, ahol mar keves lehetseges ertek van. Ha pl. egy
olyan mezot borotvalunk, ahol mar csak ket ertek van, es szerencsenk van,
akkor be is tudjuk helyettesiteni az adott mezo erteket.
Ami a redundans korlatokat illeti, szobajohetnek:
- a klasszikus (tavolsagkorlatok nelkuli) sudokura vonatkozo redundans
korlatok.
- a tavolsaginfokra vonatkozo redundans korlatok.
Nyugodtan kerdezzetek, ha valami nem vilagos.
-Peter
Gergely Svigruha <sgergo88(a)gmail.com> writes:
> Kedves Péter!
>
> Akadt egy újabb problémám...
> A call_residue/2 beépített eljárást valamiért nem ismeri a Sicstus-om (és
> kellene a 4. kishf teszteléséhez...).
>
> Bemásoltam a honlapról a 4. hf futtatókörnyezetét, és amikor ki szeretném
> próbálni, azt mondja, hogy Existence error in user:call_residue/2.
>
> Nincs valami ötleted esetleg, ennek mi lehet az oka?
Persze :-(.
A SICStus 4-esben megszunt a call_residue/2, helyette call_residue_vars/2
van csak. Kicsit bonyolultabb igy az ellenorzes, de mukodik, mar fenn van
az uj valtozat a honlapon.
Elnezest...
-Peter
A mai eloadason volt olyan kerdes, hogy el lehet-e agaztatni a modok
szerint.
A valasz igen, pl. igy:
append(L1::in, L2::in, L3::out) :- usual_append(L1, L2, L3).
append(L1::out, L2::in, L3::in) :- other_append(L1, L2, L3).
Tehat in,in,out modban a usual_append fut, out,in,in modban pedig az
other_append. A reszleteket lasd itt:
http://www.mercury.cs.mu.oz.au/information/doc-release/mercury_ref/Differen…
-Peter