From e4785eb34e27fdc65833baf73066920a8ba8fb0e Mon Sep 17 00:00:00 2001 From: Aleksander Sadikov Date: Tue, 9 Aug 2016 01:30:23 +0200 Subject: English translation for descendant/2 partially added. --- .../problems/family_relations/descendant_2/en.py | 88 +++++++++++++++++++++- .../problems/family_relations/descendant_2/sl.py | 2 +- 2 files changed, 86 insertions(+), 4 deletions(-) (limited to 'prolog/problems/family_relations/descendant_2') diff --git a/prolog/problems/family_relations/descendant_2/en.py b/prolog/problems/family_relations/descendant_2/en.py index bc7b795..535ef23 100644 --- a/prolog/problems/family_relations/descendant_2/en.py +++ b/prolog/problems/family_relations/descendant_2/en.py @@ -2,12 +2,94 @@ name = 'descendant/2' slug = 'the descendant relation' description = '''\ -

descendant(X, Y): X is a descendant (child, grandchild, …) of Y.

+

descendant(X, Y): X is a descendant (child, grandchild, ...) of Y.

 ?- descendant(patricia, X).
   X = william ;
   X = tina ;
   X = thomas.
-
''' + +

Family trees are +described with predicates parent/2, male/1, and +female/1.

+''' + +plan = ['''\ +

I believe recursion is needed... how can we transpose the problem to a smaller one (a single step smaller that is)?

+

A descendant of someone, who is a child of Y, is also a descendant of Y.

+''', '''\ +

If Z is a parent of some X and at the same time +Z is a descendant of Y, +then X is also a descendant of Y.

+''', '''\ +

If X is a descendant of Z, and Z is a child of Y, then X is also a descendant of Y.

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

Je spol res pomemben?

+''', + + 'gender_is_irrelevant_markup': '''\ +

Je to res potrebno?

+''', + + 'grandparent_used': '''\ +

Rešitev z "grandparent" bo premalo splošna, poskusi nadomestiti to z rekurzijo. +Skratka, poskusi prevesti na "manjši" problem, npr. potomec v enem koraku manj +(en korak bližji potomec)...

+''', + + 'grandparent_used_markup': '''\ +

Bi se dalo rešiti brez tega?

+''', + + 'base_case': '''\ +

Si pomislil na robni pogoj? Rekurzija se mora enkrat tudi ustaviti. +Kaj je najbolj enostaven par (potomec, prednik)?

+

+''', # TODO: morda ta hint naredim z "more": najprej tekst, ob kliku pa še slika... (sicer je preveč očitno) + + 'descendant_of_oneself': '''\ +

Kako je lahko nekdo potomec samega sebe? Iz trenutne verzije rešitve se da izpeljati tudi to. +Premisli, morda se ti splača tudi grafično skicirati tvojo trenutno rešitev.

+''', + + 'descendant_of_oneself_with_or': '''\ +

Kako je lahko nekdo potomec samega sebe? Iz trenutne verzije rešitve se da izpeljati tudi to. +Premisli, morda se ti splača tudi grafično skicirati tvojo trenutno rešitev.

+

Morda se ti splača preveriti tudi uporabo podpičja. To praktično naredi dva ločena stavka oz. veji +(eno ali drugo velja, morda tudi oboje). Vendar pazi, ker sta ti dve veji med seboj neodvisni +-- vrednosti iz ene se ne prenašajo v drugo vejo.

+''', + + 'descendant_need_not_be_parent': '''\ +

Potomec X pravzaprav ne rabi imeti otrok...

+''', + + '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 starš in sestra od Y ali kaj podobnega).

+''', + + '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?

+''', + + 'wrong_direction': '''\ +

Si morda sprogramiral ravno obratno in zamenjal prednika s potomcem? +X naj bo potomec od Y in ne obratno!

+

+''', # TODO: Tim, kako bi lahko še query poslali med parametri v Hint dict? Je to predvideno? Tukaj bi recimo pasalo... + + 'final_hint': '''\ +

Zanimivost: nalogo bi lahko rešil tudi z uporabo rešitve za relacijo ancestor/2. +Samo obrni spremenljivki X in Y; +če je X potomec od Y, potem je Y prednik od X.

+''', +} -hint = {} diff --git a/prolog/problems/family_relations/descendant_2/sl.py b/prolog/problems/family_relations/descendant_2/sl.py index 0547da7..8f7f34f 100644 --- a/prolog/problems/family_relations/descendant_2/sl.py +++ b/prolog/problems/family_relations/descendant_2/sl.py @@ -3,7 +3,7 @@ slug = 'the descendant relation' description = '''\

descendant(X, Y): X je potomec (otrok, vnuk, -pravnukinja, …) od Y.

+pravnukinja, ...) od Y.

 ?- descendant(patricia, Y).
   Y = william ;
-- 
cgit v1.2.1