!7 sS yesName = "eine Beleidung"; sS noName = "keine Beleidigung"; sbool useMiddle = false; sS yesText = [[ Scheiß ]]; sS noText = [[ Prima ]]; 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 " + yesName, r { correct(s, true) }, "Es heißt " + noName, r { correct(s, false) }, useMiddle ? "Es heißt was anderes" : null, 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 '" + yesName + "'" : isFalse(b) ? "bedeutet '" + noName + "'" : "bedeutet weder " + yesName + " noch " + noName); } svoid controls2_default() { showControls2(jcenteredlabel("Schreib doch mal was " + yesName + "-iges oder " + noName + "-iges:")); } svoid correct(S input, Bool b) { print(formatSatz(input, b)); post(quote(input), "heißt", boolSwitch(b, yesName, noName, "weder " + yesName + " noch " + noName)); uploadOutputSinceLastInput(); reset(); } svoid reset { hideControls(); enableConsoleInput(); focusConsole(); } svoid onTriple(T3 t) { if (eqic(t.b, "heißt") && isQuoted(t.a)) { if (eqic(t.c, yesName)) add_withCollapsed(yesLiterals, unquote(t.a)); else if (eqic(t.c, noName)) add_withCollapsed(noLiterals, unquote(t.a)); } }