GetFromOrderedList: Unterschied zwischen den Versionen

Aus JACK Wiki
Zur Navigation springen Zur Suche springen
 
(16 dazwischenliegende Versionen von 4 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
'''Die Funktion ''getFromOrderedList'' ist veraltet und wird in Jack3 nicht mehr unterstützt. Bitte nicht mehr verwenden!'''
Jack3: Die Funktion wird durch sortXList (X steht dabei für den Typ der Listenelemente) und [[getFromList]] ersetzt.
==Zugehörige Evaluatoren==
*'''MathEvaluator'''
=== Beschreibung ===
=== Beschreibung ===
Die Funktion ''getFromOrderedList'' wählt das Element an einer bestimmten Stelle aus einer vorher sortierten Zahlenliste aus. Dabei beginnt die Nummerierung der geordneten Elemente mit 0. Alternativ wird die Liste lexikographisch geordnet.
Die Funktion ''getFromOrderedList'' wählt das Element an einer bestimmten Stelle aus einer vorher sortierten Zahlenliste aus. Dabei beginnt die Nummerierung der geordneten Elemente mit 0. Alternativ wird die Liste lexikographisch geordnet.


Die Funktion erwartet eine Zahl, die Stelle an der das Element aus der Liste genommen wird und die Liste selbst. Es wird eine Zahl oder ein String zurückgegeben.
Die Funktion erwartet eine Zahl, die Stelle an der das Element aus der Liste genommen wird und die Liste selbst. Es wird ein Element zurückgegeben.


=== Syntax ===
=== Syntax ===
  getFromOrderedList(int stelle, Liste list)
  getFromOrderedList([[Ganzzahl]] stelle, [[List]] list)


=== Parameter ===
=== Parameter ===
Zeile 12: Zeile 17:


=== Return Value ===
=== Return Value ===
* Gibt eine Zahl/String zurück
* Gibt das Element an der Stelle zurück


=== Beispiele ===
=== Beispiele ===
  getFromOrderedList('3','{1;2;3;4}')  --> returns 4
  getFromOrderedList('3','{1;2;3;4}')  --> returns 4
  getFromOrderedList('3','{3;2;4;1}')  --> returns 4
  getFromOrderedList('3','{3;2;4;1}')  --> returns 4
====JUnit Tests====
<span class="mw-customtoggle-myDivision">[Anzeigen]</span>
<syntaxhighlight lang="java" class="mw-collapsible mw-collapsed" id="mw-customcollapsible-myDivision">
@BeforeClass
public static void beforeTest() {
OMOBJ zero = new OMOBJ();
OMOBJ mfour = new OMOBJ();
OMOBJ twenty = new OMOBJ();
zero.setOMI(OMCreator.createOMI(0));
mfour.setOMI(OMCreator.createOMI(-4));
twenty.setOMI(OMCreator.createOMI(20));
fillIn.put(1, zero);
fillIn.put(2, mfour);
fillIn.put(3, twenty);
exerVar.put("a", zero);
exerVar.put("b", mfour);
exerVar.put("c", twenty);
}
@Test
public void testGetFromOrderedSet1() {
assertTrue(3 == Evaluator.getNumberResult("getFromOrderedList('1', '{2;3;5;6}')", exerVar, fillIn));
}
@Test
public void testGetFromOrderedSet2() {
assertTrue(-2.6 == Evaluator.getNumberResult("getFromOrderedList('0', '{3;5;6;-2.6}')", exerVar, fillIn));
}
@Test
public void testGetFromOrderedSet3() {
assertTrue(0 == Evaluator.getNumberResult("getFromOrderedList('1', '{-2.6;3;5;0}')", exerVar, fillIn));
}
@Test
public void testGetFromOrderedSet4() {
assertTrue(5 == Evaluator.getNumberResult("getFromOrderedList('3', '{-2.6;3;5;0}')", exerVar, fillIn));
}
@Test
public void testGetFromOrderedSet5() {
assertTrue(1 == Evaluator.getNumberResult("getFromOrderedList('0', '{1;1;1;1}')", exerVar, fillIn));
}
@Test
public void testGetFromOrderedSet6() {
assertTrue(1 == Evaluator.getNumberResult("getFromOrderedList('3', '{1;1;1;1}')", exerVar, fillIn));
}
@Test
public void testGetFromOrderedSetWithInput1() {
assertTrue(20 == Evaluator.getNumberResult("getFromOrderedList('2', '{[pos=3];4;5}')", exerVar, fillIn));
}
@Test
public void testGetFromOrderedSetWithInput2() {
assertTrue(-4 == Evaluator.getNumberResult("getFromOrderedList('0', '{[pos=3];4;5;[pos=2]}')", exerVar, fillIn));
}
@Test
public void testGetFromOrderedSetWithInput3() {
assertTrue(-4 == Evaluator.getNumberResult("getFromOrderedList('[pos=1]', '{[pos=3];4;5;[pos=2]}')", exerVar,
fillIn));
}
@Test
public void testGetFromOrderedSetWithVariables1() {
assertTrue(20 == Evaluator.getNumberResult("getFromOrderedList('2', '{[var=c];4;5}')", exerVar, fillIn));
}
@Test
public void testGetFromOrderedSetWithVariables2() {
assertTrue(-4 == Evaluator.getNumberResult("getFromOrderedList('0', '{[var=c];4;5;[var=b]}')", exerVar, fillIn));
}
@Test
public void testGetFromOrderedSetWithVariables3() {
assertTrue(-4 == Evaluator.getNumberResult("getFromOrderedList('[var=a]', '{[var=c];4;5;[var=b]}')", exerVar,
fillIn));
}
@Test
public void testGetFromOrderedSetWithOneRationalAndOneTextArgument() {
assertTrue(4 == Evaluator.getNumberResult("getFromOrderedList('1', '{2;4;5}')", exerVar, fillIn));
}
@Test
public void testGetFromOrderedSetWithTwoTextArguments() {
assertTrue(4 == Evaluator.getNumberResult("getFromOrderedList('1', '{2;4;5}')", exerVar, fillIn));
}
@Test // (expected=FunctionInvalidArgumentTypeException.class) Now works, single chars
// are recognized as Variables
public void testGetFromOrderedSetWithWrongInputCharacters() {
assertEquals(OMCreator.createOMOBJ(OMCreator.createOMSTR("b")),
Evaluator.evaluate("getFromOrderedList('1', '{a;b;c;d}')", exerVar, fillIn));
}
@Test(expected = FunctionInvalidArgumentTypeException.class)
public void testGetFromOrderedSetWithWrongInputCharacterIndex() {
Evaluator.getNumberResult("getFromOrderedList('a', '{1;2;3;4}')", exerVar, fillIn);
}
@Test(expected = FunctionInvalidArgumentTypeException.class)
public void testGetFromOrderedSetWithWrongInputDoubleIndex() {
Evaluator.getNumberResult("getFromOrderedList('5.5', '{1;2;3;4}')", exerVar, fillIn);
}
@Test(expected = FunctionInvalidArgumentTypeException.class)
public void testGetFromOrderedSetWithWrongInputComma() {
Evaluator.getNumberResult("getFromOrderedList('3', '{1,5,3,7}')", exerVar, fillIn);
}
@Test(expected = FunctionInvalidNumberOfArgumentsException.class)
public void testGetFromOrderedSetWithOneArgument() {
Evaluator.getNumberResult("getFromOrderedList('7')", exerVar, fillIn);
}
@Test(expected = FunctionInvalidNumberOfArgumentsException.class)
public void testGetFromOrderedSetWithThreeArguments() {
Evaluator.getNumberResult("getFromOrderedList('4', '{3;1;-1}', '{12;-3}')", exerVar, fillIn);
}
@Test(expected = UndefinedFillInVariableException.class)
public void testGetFromOrderedSetWithMissingInput() {
Evaluator.getNumberResult("getFromOrderedList('2', '{[pos=42];4;5}')", exerVar, fillIn);
}
@Test(expected = UndefinedExerciseVariableException.class)
public void testGetFromOrderedSetWithMissingExerciseVariable() {
Evaluator.getNumberResult("getFromOrderedList('2', '{[var=j];4;5}')", exerVar, fillIn);
}
</syntaxhighlight>


=== Hinweise ===
=== Hinweise ===
Zeile 158: Zeile 28:
* Mengen werden mit geschweiften Klammern beschrieben, die Elemente sind mit Semikolons zu trennen.
* Mengen werden mit geschweiften Klammern beschrieben, die Elemente sind mit Semikolons zu trennen.


[[Kategorie:Evaluatorfunktion]]
[[Kategorie:Listfunktionen]][[Kategorie:JACK2]]

Aktuelle Version vom 27. März 2024, 13:36 Uhr

Die Funktion getFromOrderedList ist veraltet und wird in Jack3 nicht mehr unterstützt. Bitte nicht mehr verwenden!
Jack3: Die Funktion wird durch sortXList (X steht dabei für den Typ der Listenelemente) und getFromList ersetzt.

Zugehörige Evaluatoren

  • MathEvaluator

Beschreibung

Die Funktion getFromOrderedList wählt das Element an einer bestimmten Stelle aus einer vorher sortierten Zahlenliste aus. Dabei beginnt die Nummerierung der geordneten Elemente mit 0. Alternativ wird die Liste lexikographisch geordnet.

Die Funktion erwartet eine Zahl, die Stelle an der das Element aus der Liste genommen wird und die Liste selbst. Es wird ein Element zurückgegeben.

Syntax

getFromOrderedList(Ganzzahl stelle, List list)

Parameter

  • stelle - an der wievielten Stelle aus der geordneten Menge gezogen werden soll
  • list - die Liste, aus der gezogen wird

Return Value

  • Gibt das Element an der Stelle zurück

Beispiele

getFromOrderedList('3','{1;2;3;4}')   --> returns 4

getFromOrderedList('3','{3;2;4;1}')   --> returns 4

Hinweise

  • Egal in welcher Reihenfolge die Elemente in der Menge stehen, die Funktion ordnet sie zunächst der Größe nach und gibt dann das Element an der entsprechenden Stelle zurück.
  • Mengen werden mit geschweiften Klammern beschrieben, die Elemente sind mit Semikolons zu trennen.