FLP MBS Ahoj. Co se učíte k otázce 25 - Prolog - změna DB/programu za běhu (demonstrace na prohledávání stavového prostoru, práce se seznamy)?
assert, retract, listing, stavovy priestor nadefinovany napriklad pomocou binarnych faktov, ktore reprezentuju hrany v grafe a nad tym nejaky DFS predikat ktory vypise vsetky cesty. K zoznamom snad veci ako [Head|Tail], co to znamena a ako to pouzivat pri tvoreni predikatov napr. na spojenie, reverzaciu, zoradenie atp.
Zobrazit všechny odpovědi (5)
Děkuji. Vycházel jsi z přednášek, nebo máš nějaký lepší materiál?
prednasky, slidy a zdrojáky ku cvikám, nejaký youtube tutoriál a dodatočné googlenie
To máš Koláře v komisi nebo se takto pečlivě učíš všecko? :D
nie, este to mam v kratkodobej pamäti zo vcera :D :D
ale tak po tomto rozhovore si to uz zapamätám
namiesto slova predikat by som asi mal pouzit slovo klauzula... whatever
Zobrazit všechny odpovědi (11)
Nejaky hlavni rozdil mezi predikatem a klauzuli? Klauzule je konkretnejsi?
v tomto kontexte sa klauzula = formula predikatovej logiky prvého rádu ktorá je vo forme disjunkcie literálov. Takže áno :D. Ak nie sú žiadne literály v negatívnej forme, jedná sa o fakt, ak nie sú žiadne v pozitívnej forme, tak je to query a ak sú aj také aj onaké tak je to pravidlo. Toto je asi tiež celkom pekná vec čo sa dá povedať k tejto téme.
Nebo prostě říct, že to je klauzule bez těla, hlavičky...
Klauzule bez tela je fakt ktery je predikat tak jako klauzule s hlavickou jeslti to dobre chapu :D
to ale neznie tak odborne a nezabije to tolko času :D
btw term vs literál? :D
literál je napr Filip a term je muz(Filip), alebo naopak?
Ja beru muz(Filip) jako fakt -> klauzule bez tela a je to taky predikat
Není Filip spíše proměnná? Literál by byl filip... :D
Filip je podle me konstanta na urovni termu :D Literal (alespon podle toho co pisou u SAT problemu) je prave promena (bud negovana nebo ne)
vzhladom na definiciu predikatu "A predicate is a statement that may be true or false depending on the values of its variables", tak by som povedal ze "muz" je predikat "muz(filip)" je fakt a "muz(X) :- ..." je pravidlo
FLP Nemáte někdo dobrý zdroj na vysvětlení SLD rezoluce?
je to dobre popsane ve skriptech od kolare k predmetu FLP ;-)
http://www.ale.cs.toronto.edu/docs/ref/ale_trale_ref/ale_trale_ref-node44.html
FLP lambda kalkul vedel by niekto poradit, ak mame lambda vyraz ktory ocakava 2 parametre, ale podhodime mu len 1, vykona sa ten vyraz? nieco ako (\xy.xy) True teda ocakava x,y ale dame mu len x
Dosadí se True za x a skončí, protože už nemá co dosadit za y, zbyde (\y.True y).
Zobrazit všechny odpovědi (1)
ďakujem
FLP Máte někdo otázky z řádného termínu? Kolář sice poslal výsledky, ale bylo by docela fajn vědět,na co se přesně ptal :)
https://fituska.eu/viewtopic.php?f=2176&t=25849
FLP Umel by mi prosim nekdo vysvetlit jak funguje tato figonaciho posloupnost v haseklu? fib :: Int -> Integer fib n = fibs !! n -- Vrat n-ty prvek z pole fibs where fibs = 0 : 1 : zipWith (+) fibs (tail fibs
Napr pre (fibs!!4) zacne haskell postupne ziskavat prve 4 elementy vyslednej postupnosti: 1) vezme 0 2) vezme 1 3) vezme prvy element z vysledku operacie (zipWith (+) fibs (tail fibs)) v tomto kroku je hodnota fibs [0,1,...] a tail fibs [1,...] (haskell sa v tomto pripade zaujima len o prvy prvok pola fibs a tail fibs => lazy evaluation) takze vysledok zipWith (+) je vlastne pole [0,...] + [1,...] = [1,...] => fibs pole sa rozrastie o dalsiu hodnotu 1 4) vezme druhy element z vysledku operacie (zipWith (+) fibs (tail fibs)), prvy element sa uz nepocita fibs = [0,1,1,...], tail fibs = [1,1,...] => druhy element vysledku zipWith je teda [0,1] + [1,1] = [1,2] => 2 5) piaty element ho uz nezaujima => vracia 0:1:1:2 => konkretne 4ty element takze 2
Zobrazit všechny odpovědi (5)
Jak se mně v tom fibs = 0 : 1 zipWith (+) FIBS (tail FIBS) najednou zjevi nekonecny seznam prosimte? Nedokazu si to moc predstavit. A jaktoze vzdy k seznamu pripojujes jen jeden prvek, kdyz ti vyjde seznam?
to je definice jak ten seznam vypada, nevyhodnocuje se cely. dokud se haskellu nezeptas na nejaky prvek, tak se nic nedeje, po dotazu si to zacne vyhodnocovat po prvek ktery potrebuje
no zipWith nerata vysledny zoznam pararelne ale postupne.. takze => (1. element + 1.element) : (2.element + 2.element) ... s tym ze ak zavolas napr (zipWith (+) [1,2] [3,4])!!1, tak operaciu 2+4 vobec nevykona, lebo vie ze z vysledku potrebujes len prvy element
Možná chápu, asi se na to vyspím a zítra to řeknu s určitostí :D Zatím díky.
Jakub Tutko jinak nahoře myslíš asi, že hodnota 2 + 4 se nevykoná.
FLP - Semestrálka opravená
je mozne na reklamacich dostat 2b do minima?
Zobrazit všechny odpovědi (5)
Přečti si mail
Dám sem copypaste, protože mě to pobavilo, tak ať můžou kouknout i neFLP lidi :D Btw taky mi chybí 2 body, naštěstí ne na minimum. :D "Vězte, že ač je to statisticky prakticky vyloučeno, tak naprostá většina z vás je buď přesně, nebo +-2 body od nějaké "magické" hranice. Zvažte návštěvu a zejména potom setrvání. Nejedná se o konzultace, opravdu o reklamace, tedy co je špatně spočteno, co jsem opomenul v hodnocení, takže otázky jako "Co mi na tom nejede?" a "Jak to má být dobře?" nejsou ty správné. Možné řešení jsem vám zaslal, tam hledejte odpovědi na tyto otázky. "
No jde mi o to, zda to ma smysl ten mail je napsany tak vselijak...
Lukáš Habarta Určitě to má smysl z toho hlediska, že nevíš, jestli náhodou fakt něco nepřehlédl. Spíš nemá z toho hlediska, že body rozdával poměrně štědře. Ale být tebou, tak tam zajdu, za podívání se nic nedáš. ;)
Občas se Kolářovi stává, že má člověk část příkladu dobře, ale dá za to nulu. Je určitá šance, že když mu ukážeš, že máš část příkladu správně, že bod, dva možná přidá.
FLP Pokud se někomu podařilo "zvěčnit" dnešní zkoušku, prosím o vložení do sdíleného docu, nebo zvěčnit na fitušku :)
FLP Operátor pevného bodu V prvním příkladu https://fituska.eu/download/file.php?id=11612 se má definovat GE. Má to řešení správně, nebo je tam chyba a (f prev y) na konci řádku má být pouze (prev y)?
https://fituska.eu/download/file.php?id=11612
Podle mě tam má chybu. Jinak přijde mi, že má v těchto ukázkových řešeních plno chyb, vlastně většina věcí, které odtud zkouším, nefungují (hlavně Prolog)
Zobrazit všechny odpovědi (6)
Tak to je fajn, zrovna jdu prolog dělat a docela jsem na jeho řešení spoléhal :D
Koukal ses na lonsky prolog - proheldavani stavoveho prostoru (prvni priklad)? https://fituska.eu/download/file.php?id=12723&sid=5df67c08f896c12df66aa9813a991732 Prijde mi, ze poradi nasledujicich funkci je taky blbe - druha se nikdy nezavola, jelikoz vzdy bude splnena podminka te prvni. mks(S,E,_) :- search(S,E,0,[]). mks(S,_,[S|Path]) :- ppos(Path). Je to tak?
Jo, to je jedna z věcí, kterou jsem myslel :)
Podle me je to spravne, kdyz se podivate do search, tak uspesna vetev vzdycky konci '!, fail', takze podcil search vzdycky failne a pak to spadne do te druhe definice mks. :)
Tak jsem asi myslel něco jiného :D když jsem si to spustil, prostě to nikdy neunifikovalo výsledek, pokud jsem rovnou nezadal, že startovní a cílový bod je stejný
Trošku jsem to upravil do dle mého funkční podoby, kdyby měl někdo zájem: https://pastebin.com/bdnVjbW5
FLP Nemáte někdo zazálohované oficiální řešení FLP semestrálek (1. a 2. opravný) z minulého roku, co posílá Doc. Kolář vždy e-mailem? Jestli ano, můžete to sem někdo postnout. Díky moc.
nie je to z minuleho roku ale snad to niekomu pomoze https://webshare.cz/#/group/31x6B559c3/ taktiež budem rád keby niekto sem postol tie z minulého roku. :)
na fitusce je lonksy radny https://fituska.eu/viewtopic.php?f=1957&t=25642
Zobrazit všechny odpovědi (2)
Ano, to vím, jde mi spíš o ty opravné.
ah, mb
Nemám, ale z druhého opravného podle mě ani neposílal (ani v mailech jsem nic nenašla) :-)
Zobrazit všechny odpovědi (5)
Díky za upozornění, toho jsem si ani nevšiml, ale z prvního opravného určitě posílal, ale ten odkaz mi háže bohužel Forbidden :(.
ano, to posílal a jsem na tom podobně :)
Aneta Kvapilová Kdybychom neměli lazy evaluation, tak si to zazálohujeme už minulý rok :D
Pavel Hřebíček já ho neměla, ale stal se mi nějaký error s celým archivem za ten semestr a je prázdný :D :D asi chyba v matrixu 🤔
Neco podobneho s FIT archivem se mi stalo na bakalarskem, chtel jsem nakonec vsechny posbirane materialy z BIT zazipovat a dat k dispozici mladsim rocnikum, jenomže jsem vše uložil pouze na externí HDD. No a po státnicích jsem dostal "error 9404: vykradený byt - disk not found" :D je to asi prokletí materiálů na FITu
FLP Co myslíte, můžeme používat věci naprogramované v IZU?
Doktorand co Vám to bude hodnotit byl ještě donedávna studentem stejně jako vy. Na základě toho a toho, jak se za těch pár let co tu jsme vyjádřil v různých skupinách bych očekával, že k tomu bude mít pragmatický přístup a bude to brát. (Ale je to jenom moje domněnka).
FLP Projekt2 - Kdo by se chtěl podělit o automatické testy k některému zadání, vkládejte název zadání, odkaz na ně a stručný popis použití jako komentář k tomuto příspěvku. Čím víc testů, tím lepší je šance, že člověk nic neopomene.
[Nedeterministický TS]. Binárku umístite o úroveň nad složku s těmito testy a spustíte 'run_tests.sh' bez parametrů. U testů č. 3 a 8 budete muset asi přepsat .out soubor, aby odpovídal vašemu výstupu. https://uloz.to/!TLwquInvKPZb/testy-zip
Solved FLP projekt 2 Ahoj, netuší někdo prosím proč při výpisu typu 'write("Rules:\n")' se mi to na merlinovi vypisuje jako pole ASCII hodnot : [82,117,108,101,115,58,10]?
Zkus write('Rules\n')
FLP rubikova kostka - používáte BFS, DFS nebo něco jiného? Nějak mi dochází stack když mám řešit kostku co potřebuje víc než 4 tahy...
Používám IDS (Iterative deepening depth-first search). V rozumném čase (do 2 min) mi to složí 6 tahů.
DFS a volam ho vzdy pro max. hloubku 1, pak 2, pak 3... Takze optimalizace level 0 :D Ale resi mi to 6-7 tahu do 10 sekund, pak uz je to dlouhe a 9 tahu jsou desitky minut Edit: taky používám IDS :D jen mi to nedošlo xD
Chtel jsem to optimalizovat pomoci vlozeni algoritmu, ze bych ho nakrokoval nejak takto: poskladat kriz na jedne strane, potom slozit jednu stranu, potom pridat cast stran bocnich, potom slozit dalsi, atp... Tak, aby to kazdy mezikrok zvladlo do 5 tahu, ulozilo si aktualni stav a z nej vychazelo pro dalsi krok. To by ve vysledku vedlo k okamzitemu slozeni, protoze 5 tahu ma hotove okamzite (vic tahu mu trva, protoze kazdou novou variantu znovu pocita celou od zacatku). No nakonec jsem to nedelal, protoze by tech mezistepu muselo byt hodne moc pro ruzne varianty rozlozeni atp. No a za bod-dva navic to nestoji.
taky IDS, 7 tahu 10s (ale zaleží taky, jaký byl poslední tah). kdyby bylo více bodů a hlavně více času, rád bych si s tím trochu vyhrál.
Mozna mrkni, kolik mas moznych rotaci, co prozkoumavas. Jestli nemas treba prilis, ja to resim s 12 rotacemi a tech 7 kroku za 10 s zvladne.
Nechtělo by se vám dát mi nějaký hint, jak ovládat ty iterace? Mám DFS, které bere jako parametr hloubku, do které má hledat, ale nějak se mi nedaří to zautomatizovat od jedničky... Když to v úrovni 1 nenajde, nějak se to zacyklí :D Když zadám správnou úroveň, tak korektně skončím
Zobrazit všechny odpovědi (3)
PM sem napsal jak to řeším, i když to není asi ideální, tak to zhruba funguje
pokusis se vyresit v 0 krocich, pokud to jde tak se ti neco unifikuje a vypises to, pokud ne, tak zkousis vyresit v 1 kroku, ve 2 krocich a tak dale. Velmi podobny priklad byl na cvikach: resil jsi skakani kone tusim pro delku cesty 0, pak 1 atd.
Tomáš Zahradníček jojo takhle teoreticky to vím, dokonce jsem použil přesně to ze cvik, jen se mi to vždycky zacyklilo, pokud v dané úrovni nebyl nalezen výsledek. Ale už je to asi vyřešené, dík :)
Já dělám Babylon, ale je to +- podobné. Mám tam takovou jednoduchou heuristiku, s tím, že když je nastejno, tak se jede BFS. Dalo mi to (asi s notnou dávkou štěstí) za 17 minut řešení, co mělo 148 tahů :D Expanzí tam za tu dobu bylo kolem 5000. Jinak stack taky občas dojde, ale místo backtrackingu používám assert a retract, protože s backtrackem mi to typicky vyhodilo nedostatek paměti tak do 5 sekund :D
IDS má právě tu výhodu, že paměti je pořeba pouze tolik, kolik jsi tahů od počáteční konfigurace. Oproti tomu BFS je možná 1.1x rychlejší, ale potřebuje v^t, kde v je počet možných tahů z každé konfigurace, a t je počet tahů mezi počáteční a koncovou konfigurací. Pro rubikovku, kde je z každé konfigurace 12 možných tahů (záleží na implementaci, ale 12 je asi nejvíce rozumné) a třeba kostku zamíchanou 7 takovými tahy je to 12^7 = 35mil. konfigurací (kde konfigurace každé kostky je minimálně 54 bytů)
FLP Kostra grafu Mohl by mě někdo postrčit jak pokračovat? Jsem na začátku ve stádiu, že mám načtené hrany a z nich vytvořený Graph. Pomůže jakýkoliv popis nebo i dobrý odkaz na literaturu. Díky :)
Použila jsem algoritmus odsud: https://cs.m.wikipedia.org/wiki/Kostra_grafu pro nalezení libovolný kostry grafu a až budeš mít jednu, použij setof/bagof/findall pro nalezení všech možných.
FLP prave jsem hledala zaznamy z poslednich hodin. Nerikal nahodou,jestli je zakaze at nepisu mail at je zverejni zbytecne?diky
Když napíšeš, že ses ze zdravotních důvodů nemohla zúčastnit, třeba pookřeje a poskytne je nakonec i kdyby původně řekl, že je nezveřejní.
Zobrazit všechny odpovědi (1)
odvazna domnenka
FLP co byste chtěli, aby Kolář dělal v pondělí? Asi bychom mu měli napsat ten mail
Gödelovu vetu
Zobrazit všechny odpovědi (1)
Díky, názor od legend, co už to mají dávno hotové, se hodí, zařadím to tam
Možná důkaz s iterováním přes 2 proměnný, nebo operátor řezu.
Zobrazit všechny odpovědi (1)
Operátor řezu by som tiež privítal :D
Bude neco specialniho v pondeli?
Zobrazit všechny odpovědi (1)
Rikal, ze mu mame napsat, pokud chceme neco probrat. Nebo napsat, pokud nechceme prijit a prednasku zrusit, protoze vse ze slidu uz jsme probrali.
FLP - 2.projekt. Ahoj chci se zeptat, setkal se nekdo s tim ze pri vypisu do souboru Prolog pridava jeden prazdny radek navic vuci vypisu do terminalu?
Ted jsem se s tim setkal :D prisel si na nejake reseni?
Zobrazit všechny odpovědi (2)
Otevíráš to v Sublime? :D Já když soubor catnu tak v pohodě, ale sublime tam ten řádek nějak přidává. Tak jsem to tak nechal a akorát pro jistotu zmínil v readme :)
presne tak, tak to je jina magie :D
Trochu mimo, ale zeptám se, řešili jste už měření jak dlouho trvá řešení problému? Vycházel jsem z tohoto: https://coderwall.com/p/laduzw/how-to-measure-execution-time-in-swi-prolog když si to zkusím bokem v terminálu dělá to co má, ale při dosazení do kódu projektu, to nevypíše ani ťuk.... tak jestli používate něco jiného?
Zobrazit všechny odpovědi (3)
"...uveďte ... přibližnou dobu výpočtu...", takze:
Pouzivam normalne time, takze to spoustis : time ./flp18-log < test.txt
jo zrovna jsem to chtěl napsat, že jsem našel nový způsob viz. https://unix.stackexchange.com/questions/52313/how-to-get-execution-time-of-a-script-effectively tak snad to někomu dalšímu pomůže :) díky za reakce! :)
na konec hlavní funkce "main" dej na posledni radek: halt. snad pomůže
Zobrazit všechny odpovědi (1)
To tam mam prave
FLP Body z FUN projektu. Info z přednášky - LOG projekt bude hodnocený a nahraný do WISu napřed lidem, kteří nemají ani po FUN projektu zápočet, a až potom lidem, kteří ho mají. Ale všem před termínem zkoušky.
Ahoj, je ještě někdo, kdo stále nedostal z FUN projektu body? Je mi trochu podezřelé, že skoro všichni už je mají, ale já ve wisu stále nic nemám.
Zobrazit všechny odpovědi (2)
Uz by je meli mit vsichni, rikali, ze v pondeli vecer to meli nahrat pro vsechny. Radeji hned napis mail ;)
Tak jsem jim jak říkáš napsal a prý na mě nějako zapomněli :D Teď už tam body mám.
FLP Zdravím, tohle je spíš otázka pro lidi co mají načtený automat vypisovat. Co myslíte bude vadit když se namísto 1,2,3,4,5,6,7,8,9,10 bude vypisovat 1,10,2,3,4,5,6,7,8,9 prakticky jde o jedno a to samé, nikde není napsané, že by to mělo být seřazené podle čísla, že?
Co znamenaji ty tecky? Co ja vim, tak se jednotlive stavy oddeluji carkami
menší chyba na mé straně :D samozřejmě tam mají být čárky, opravím to
Tak v tom pripade je to dobre, ptal jsem se ho a rikal ze to nevadi. Navic prvky oddelene carkami jsou, podle def. KA, mnoziny a v mnozinach na poradi nezalezi (y)
Jinak rychly ez fix bude do funkce pro vytisknuti automatu pridat "sort states" (tam jak se definuje show pro vlastni datove typy)
:D tos s tím vážně čekal až na 8 minut po odevzdání? :D
Zobrazit všechny odpovědi (1)
Ups, sorry, nedošlo mi, že už je po půlnoci :D Já dělal jiný projektík a až teď koukl na FB *facepalm*
FLP - ahoj, je v pohodě když budu spouštět skript s ./dka-2-mka ? V zadání je bez ./, ale na foru to lidé taky spouštěli s lomítkem. :)
A je v tom rozdíl? ./ znamená aktuální složku, takže by to nemělo imho působit problémy.
FLP Zdravím, ve svém projektu do flp používám funci Set.elemAt "index" importovanou následujícím způsobem import qualified Data.Set as Set s tím že používám u sebe na PC klaciské GHC a všechno je v pořádku. Pokud ale soubor nahraju na merlina a pokusím se přeložit tam, tak mi hlásí, že "Set.elemAt" not in schope s tím že mi nabízí úplně jinačí funkci. Řešil to už někdo, absolutně netuším kde by mohl být problém (google prostě říká naimportuj...)
Asi daná knihovna na merlinovi není. Psali/říkali že se to může stát. Máš asi 2 možnosti, přepsat na použití, něčeho jiného, nebo napsat do README, že na merlinovi to nepojede z důvodu té knihovny, ale na téhle distribuci to jede atd. Každopádně by ti za to neměli strhávat body.
Zobrazit všechny odpovědi (3)
Aha, díky za odpověď. Kde to psali prosimtě? na foru se mi nic najít nepodařilo. A jak to mám řešit?
hned v prvním odstavci https://wis.fit.vutbr.cz/FIT/st/course-files-st.php?file=%2Fcourse%2FFLP-IT%2Fprojects%2Ffun%2FFLP-2018-FUN-general.pdf&cid=12104
díky! :)
Na merlinovi neni posledni verze, takze tam chybi spousta aktualnich knihoven. Vubec neni potreba to resit. Testy by mely bezet u opravujiciho s posledni verzi.
FLP fun subs-cipher Dosáhli jste někdo lepšího výsledku u louskání vzorového zadání než 16/26?
Ani to ne a myslím, že to ničemu nevadí, z pointy frekvenční analýzy je to celkem očekávatelné
Ok, já se to snažil pořád nějak optimalizovat, ale mohl jsem jít radši spát :D
FLP Podařilo se někomu rozjet projekt na Merlinovi, případně moduly jako Data.Semigroup aj.? Přijde mi, že je tam v tom velký bordel
Nepodařilo. Bavili jsme se o tom se Škarvadou a ty moduly použít můžeme, ale je o tom potřeba napsat do dokumentace.
Zobrazit všechny odpovědi (3)
Díky
Ale byl bych klidnější, kdyby to ještě někdo potvrdil :D
Psal jsem mu pro jistotu mail
FLP fun dka-2-mka Ahoj, jak máte v projektu řešeno čtení vstupu ze stdin?
FLP Body