# coding=utf-8 name = 'slowest_sort_ever/2' slug = 'Uredi seznam elementov s pomočjo naključnih permutacij' description = '''\

slowest_sort_ever(L, SL): seznam SL vsebuje elemente seznama L v naraščajočem vrstnem redu. Namig: časovna zahtevnost algoritma naj bo zanemarljivih O(n * n!).

?- slowest_sort_ever([2,3,1,5,4], L).
  L = [1,2,3,4,5].
''' plan = ['''\

Ta naloga je malce bolj za šalo... Vse kar potrebuješ sta dve vrstici oz. dva prologova cilja.

''', '''\

Morda lahko izkoristiš rešitev kakšnih prejšnjih nalog?

''', '''\

Katera izmed prejšnjih nalog ima časovno zahtevnost O(n!)? Uporabi jo!

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

Operator == je strožji od operatorja = v smislu, da je za slednjega dovolj, da elementa lahko naredi enaka (unifikacija).

Seveda pa lahko nalogo rešiš brez obeh omenjenih operatorjev, spomni se, da lahko unifikacijo narediš implicitno že kar v argumentih predikata (glavi stavka).

''', 'eq_instead_of_equ_markup': '''\

Morda bi bil bolj primeren operator za unifikacijo (=)?

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

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 večji in manjši od Y ali kaj podobno logično sumljivega).

''', 'timeout': '''\

Je morda na delu potencialno neskončna rekurzija? Kako se bo ustavila?

Morda pa je kriv tudi manjkajoč, neustrezen ali preprosto nekompatibilen (s splošnim primerom) robni pogoj?

''', 'no_permute': '''\

Hmmm, premisli, katera izmed nalog, ki smo jih reševali do sedaj ima časovno zahtevnost O(n!)? Kako bi jo lahko izkoristil?

''', 'no_isSorted': '''\

Si na pravi poti, še malo. Morda lahko uporabiš še kakšno prejšnjo rešitev?

''', }