From 6e5ac99f5503a2c45b7c546f88b527a92bba1034 Mon Sep 17 00:00:00 2001 From: Aleksander Sadikov Date: Wed, 30 Mar 2016 18:06:59 +0200 Subject: Hints and plans for quick_sort/2 added. --- prolog/problems/sorting/quick_sort_2/sl.py | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) (limited to 'prolog') diff --git a/prolog/problems/sorting/quick_sort_2/sl.py b/prolog/problems/sorting/quick_sort_2/sl.py index d37867b..ab3e87e 100644 --- a/prolog/problems/sorting/quick_sort_2/sl.py +++ b/prolog/problems/sorting/quick_sort_2/sl.py @@ -10,6 +10,20 @@ description = '''\ L = [1,2,3,4,5]. ''' +plan = ['''\ +

Deli in vladaj! In uporabi prejšnje rešitve, seveda :)

+''', '''\ +

Vzami glavo stran, uporabi jo za pivot, razdeli rep na manjše in večje elemente. Na dobljenih seznamih +uporabi rekurzijo saj sta manjša (v najslabšem primeru samo za glavo krajša -- tukaj tudi lepo vidiš, zakaj je +quicksort slab ravno pri že urejenih seznamih). Na koncu vse skupaj preprosto združi!

+''', '''\ +

Če je seznam L sestavljen iz glave P in repa T in če rep +razdelimo na seznam manjših in seznam večjih elementov glede na pivot P ter predpostavimo, da ta +seznama pravilno uredi rekurzija v seznama SortedSmallerElems in SortedGreaterElems +ter potem ta seznama preprosto staknemo enega za drugim in med njiju dodamo pivot/glavo P, potem +dobimo pravilno urejen začetni seznam L.

+'''] + hint = { 'eq_instead_of_equ': '''\

Operator == je strožji od operatorja = v smislu, da je za slednjega dovolj, @@ -23,8 +37,7 @@ implicitno že kar v argumentih predikata (glavi stavka).

''', 'base_case': '''\ -

Si pomislil na robni pogoj? Kaj je najbolj enostaven primer, ko je element v seznamu? -Do katerega elementa najlažje prideš?

+

Si pomislil na robni pogoj? Kateri seznam lahko uredim povsem brez dela?

''', 'recursive_case': '''\ @@ -32,11 +45,11 @@ Do katerega elementa najlažje prideš?

''', 'predicate_always_false': '''\ -

Vse kaže, da tvoj predikat vedno vrne false. Si mu dal pravilno ime, si se morda pri imenu zatipkal?

+

Vse kaže, da tvoj predikat vedno vrne "false". Si mu dal pravilno ime, si se morda pri imenu zatipkal?

Če je ime pravilno, se morda splača preveriti tudi, če se nisi zatipkal kje drugje, je morda kakšna pika namesto vejice ali obratno, morda kakšna spremenljivka z malo začetnico?

Možno je seveda tudi, da so tvoji pogoji prestrogi ali celo nemogoči (kot bi bila npr. zahteva, -da je X hkrati starš in sestra od Y ali kaj podobno zlobnega).

+da je X hkrati večji in manjši od Y ali kaj podobno logično sumljivega).

''', 'timeout': '''\ @@ -45,11 +58,10 @@ da je X hkrati starš in sestra od Y ali kaj podobno z ''', 'arbitrary_base_case': '''\ -

arbitrary_base_case

+

Kako je lahko urejen prazen seznam karkoli ali seznam s poljubnim elementom (spremenljivka brez vrednosti)?

''', 'forgotten_pivot': '''\ -

forgotten_pivot

+

Si morda pozabil glavo, ki si jo uporabil za pivot, ob vračanju dati nazaj?

''', - } -- cgit v1.2.1