!7 sS yesText = [[ y yes yeah y yup yo correct sure ok affirmative ja ok richtig gut mach das ja ich will bitte ist so isso jau jawohl stimmt ]]; sS noText = [[ no n nope negative don't do that nay nein nö negativ lass das ]]; static Set yesLiterals = ciSet(), noLiterals = ciSet(); static Bool algo_0_1(S s) { if (yesLiterals.contains(s)) true; if (noLiterals.contains(s)) false; null; } static Bool algo_0_2(S s) { s = trim(s); try bool algo_0_1(s); S s2 = collapseWord(s); if (neq(s, s2)) try bool algo_0_1(s2); null; } static Bool algo_0_3(S s) { try bool algo_0_2(s); S s2 = firstWord(s); if (neq(s, s2)) try bool algo_0_2(s); null; } p { autoRestart(); independentSmartBot(); onNewTriple(f onTriple); sahara(); consoleHeight(500); showMessagesInGerman(true); logModuleOutput(); readLinePrefix("[] Eingabe: "); addAll_withCollapsed(yesLiterals, tlftj(yesText)); addAll_withCollapsed(noLiterals, tlftj(noText)); for (T3 t : triplesWithB("heißt")) onTriple(t); bot(); centerBigConsole2(); focusConsole(random(tossCoin() ? yesLiterals : noLiterals); controls2_default(); } svoid controls_feedback(S text) { disableConsoleInput(); hideControls2(); showControls(withCenteredTitle("Ich glaube:", vstackWithSpacing(setFontSize(15, jcenteredBoldLabel(text)), centeredButtons( "Das ist korrekt", r { print("=> KORREKT"); uploadOutputSinceLastInput(); reset(); }, "Das ist nicht korrekt", r { print("=> INKORREKT"); fS s = lastInput(); //uploadOutputSinceLastInput(); showControls(vstackWithSpacing( setFontSize(13, jcenteredBoldLabel("Was heißt " + quote(s) + " denn?")), jcenteredbuttons( "Es heißt Ja", r { correct(s, true) }, "Es heißt Nein", r { correct(s, false) }, "Es heißt was anderes", r { correct(s, null) }))); })))); } answer { Bool b = algo_0_3(s); S a = formatSatz(s, b); controls_feedback(a); try answer a; } sS formatSatz(S s, Bool b) { ret quote(s) + " " + ( isTrue(b) ? "bedeutet 'Ja'" : isFalse(b) ? "bedeutet 'Nein'" : "bedeutet weder Ja noch Nein"); } svoid controls2_default() { showControls2(jcenteredlabel("Schreib doch mal was ja-iges oder nein-iges:")); } svoid correct(S input, Bool b) { print(formatSatz(input, b)); post(quote(input), "heißt", boolSwitch(b, "ja", "nein", "weder ja noch nein")); uploadOutputSinceLastInput(); reset(); } svoid reset { hideControls(); enableConsoleInput(); focusConsole(); } svoid onTriple(T3 t) { if (eqic(t.b, "heißt") && isQuoted(t.a)) { if (eqic(t.c, "ja")) add_withCollapsed(yesLiterals, unquote(t.a)); else if (eqic(t.c, "nein")) add_withCollapsed(noLiterals, unquote(t.a)); } }