ChooseFromComplement: Unterschied zwischen den Versionen

Aus JACK Wiki
Zur Navigation springen Zur Suche springen
KKeine Bearbeitungszusammenfassung
 
(14 dazwischenliegende Versionen von 5 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
===Zugehörige Evaluatoren===
*'''MathEvaluator'''
=== Beschreibung ===
=== Beschreibung ===
Die Funktion ''chooseFromComplement'' zieht ein zufälliges Element aus einer Menge ohne die Elemente einer zweiten Menge. Die Funktion erwartet zwei Strings, die jeweils Mengen beschreiben, als Parameter und gibt einen String zurück.
Die Funktion ''chooseFromComplement'' zieht ein zufälliges Element aus einer Liste ohne die Elemente einer zweiten Liste. Die Funktion erwartet zwei Listen, als Parameter und gibt ein Element zurück.


=== Syntax ===
=== Syntax ===
  chooseFromComplement(String menge1, String menge2)
  chooseFromComplement([[List]] list1, [[List]] list2)


=== Parameter ===
=== Parameter ===
* '''menge1''' - die erste Menge
* '''list1''' - die erste Liste
* '''menge2''' - die Menge, die von der ersten abgezogen wird
* '''list2''' - die Liste, die von der ersten Liste abgezogen wird


=== Return Value ===
=== Return Value ===
* Gibt eine String zurück
* Gibt ein Element zurück


=== Beispiele ===
=== Beispiele ===
==== Standardfälle ====
==== Standardfälle ====
  chooseFromComplement('{a;b;c}','{a;b}')  --> returns c
  chooseFromComplement(list(a,b,c),list(a,b))  --> returns c


==== Benutzung mit Variablen ====
==== Benutzung mit Variablen ====
  chooseFromComplement('{[pos=1];b;c}','{[var=a];b}')
  chooseFromComplement(list([var=a],b,c),list([var=b],b))
chooseFromComplement('{[pos=1];[var=a];c}','{a;b}')
  chooseFromComplement(list(a,[var=a],c),list(a,b))
  chooseFromComplement('{a;b;c}','{a;[var=a]}')
chooseFromComplement(list(a,b,c),list(a,[var=a]))
 
====JUnit Tests====
<syntaxhighlight lang="java" class="mw-collapsible mw-collapsed">
@Before
public void beforeTest() {
  placeFillInVariable(1, OMParser.parse("c"));
  placeFillInVariable(2, OMParser.parse("hallo"));
 
  placeExerciseVariable("a", OMParser.parse("c"));
  placeExerciseVariable("b", OMParser.parse("hallo"));
 
  results.add("'a'");
  results.add("'b'");
  results.add("'c'");
}


@Test
==== Benutzung mit studentischen Eingaben ====
public void testChooseFromComplement() {
  assertTrue("'c'".equals(getEvaluator().getResultAsEvaluatorString("chooseFromComplement('{a;b;c}','{a;b}')")));
  assertTrue("'h'".equals(getEvaluator().getResultAsEvaluatorString("chooseFromComplement('{h;10;m}','{m;10}')")));
  assertTrue("'a'".equals(getEvaluator().getResultAsEvaluatorString("chooseFromComplement('{a}','{b;c}')")));
  assertTrue(results.contains(getEvaluator().getResultAsEvaluatorString("chooseFromComplement('{a;b;c}','{d;e;f}')")));
  assertTrue(results.contains(getEvaluator().getResultAsEvaluatorString("chooseFromComplement('{a;b;c}','{d;e;f}')")));
  assertTrue(results.contains(getEvaluator().getResultAsEvaluatorString("chooseFromComplement('{a;b;c}','{d;e;f}')")));
}


@Test
'''Jack2:'''
public void testChooseFromComplementWithInput() {
chooseFromComplement(list([pos=1],b,c),list([var=a],b))
  assertTrue("'c'".equals(getEvaluator().getResultAsEvaluatorString("chooseFromComplement('{a;b;[pos=1]}','{a;b}')")));
chooseFromComplement(list([pos=1],[var=a],c),list(a,b))
  assertTrue("'hallo'".equals(getEvaluator().getResultAsEvaluatorString("chooseFromComplement('{[pos=2];10;m}','{m;10}')")));
}
@Test
public void testChooseFromComplementWithVariables() {
  assertTrue("'c'".equals(getEvaluator().getResultAsEvaluatorString("chooseFromComplement('{a;b;[var=a]}','{a;b}')")));
  assertTrue("'hallo'".equals(getEvaluator().getResultAsEvaluatorString("chooseFromComplement('{[var=b];10;m}','{m;10}')")));
}
@Test (expected=IllegalArgumentException.class)
public void testChooseFromComplementWithSameElements() {
  getEvaluator().getResultAsEvaluatorString("chooseFromComplement('{a;b;1.5}','{a;b;1.5}')");
}
@Test (expected=InvalidEvaluatorFunctionArgumentException.class)
public void testChooseFromComplementWithWrongInputCharacter() {
  getEvaluator().getResultAsEvaluatorString("chooseFromComplement('{a;b;c;d}', a)");
}
@Test (expected=UnsupportedEvaluatorFunctionException.class)
public void testChooseFromComplementWithOneArgument() {
  getEvaluator().getResultAsEvaluatorString("chooseFromComplement('{a;b;c;d}')");
}
@Test (expected=UnsupportedEvaluatorFunctionException.class)
public void testChooseFromComplementWithThreeArguments() {
  getEvaluator().getResultAsEvaluatorString("chooseFromComplement('{a;b;c;d}', '{a;b}', '{c}')");
}


@Test (expected=UndefinedExerciseVariableException.class)
'''Jack3:'''
public void testChooseFromComplementWithMissingExcerciseVariable() {
chooseFromComplement(list([input=field1],b,c),list([var=a],b))
  getEvaluator().getResultAsEvaluatorString("chooseFromComplement('[var=j]', '{a}')");
chooseFromComplement(list([input=field1],[var=a],c),list(a,b))
}
chooseFromComplement(list(a,b,c),list(a,[var=a]))
@Test (expected=UndefinedFillInVariableException.class)
public void testChooseFromComplementWithMissingInput() {
  getEvaluator().getResultAsEvaluatorString("chooseFromComplement('[pos=42]', '{a}')");
}
</syntaxhighlight>


=== Hinweise ===
=== Hinweise ===
* Das Komplement der beiden Mengen darf nicht die leere Menge sein!
* Das Komplement der beiden Mengen darf nicht die leere Menge sein!
* Mengen werden mit geschweiften Klammern beschrieben, die Elemente sind mit Semikolons zu trennen.
* Wenn Variablen genutzt werden muss darauf geachtet werden, dass diese die Voraussetzung erfüllen.
* Wenn die Eingabe der Studierenden genutzt wird muss auch hier darauf geachtet werden, dass die Voraussetzungen erfüllt sind und ob diese an der Stelle genutzt werden können.


[[Kategorie:Evaluatorfunktion]]
[[Kategorie:Math-Evaluatorfunktion]][[Kategorie:Listfunktionen]][[Kategorie:JACK2]][[Kategorie:JACK3]]

Aktuelle Version vom 15. April 2024, 12:31 Uhr

Zugehörige Evaluatoren

  • MathEvaluator

Beschreibung

Die Funktion chooseFromComplement zieht ein zufälliges Element aus einer Liste ohne die Elemente einer zweiten Liste. Die Funktion erwartet zwei Listen, als Parameter und gibt ein Element zurück.

Syntax

chooseFromComplement(List list1, List list2)

Parameter

  • list1 - die erste Liste
  • list2 - die Liste, die von der ersten Liste abgezogen wird

Return Value

  • Gibt ein Element zurück

Beispiele

Standardfälle

chooseFromComplement(list(a,b,c),list(a,b))   --> returns c

Benutzung mit Variablen

chooseFromComplement(list([var=a],b,c),list([var=b],b))
chooseFromComplement(list(a,[var=a],c),list(a,b))
chooseFromComplement(list(a,b,c),list(a,[var=a]))

Benutzung mit studentischen Eingaben

Jack2:
chooseFromComplement(list([pos=1],b,c),list([var=a],b))
chooseFromComplement(list([pos=1],[var=a],c),list(a,b))
Jack3:
chooseFromComplement(list([input=field1],b,c),list([var=a],b))
chooseFromComplement(list([input=field1],[var=a],c),list(a,b))
chooseFromComplement(list(a,b,c),list(a,[var=a]))

Hinweise

  • Das Komplement der beiden Mengen darf nicht die leere Menge sein!
  • Wenn Variablen genutzt werden muss darauf geachtet werden, dass diese die Voraussetzung erfüllen.
  • Wenn die Eingabe der Studierenden genutzt wird muss auch hier darauf geachtet werden, dass die Voraussetzungen erfüllt sind und ob diese an der Stelle genutzt werden können.