From a47a8e30e338d4ba33d04b74ed4c8283bdce6778 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20Fra=C3=9F?= Date: Sun, 3 May 2020 12:25:05 +0200 Subject: [PATCH] [mod] save --- source/data/strings/de.dat.js | 8 ++-- source/data/strings/en.dat.js | 19 ++++++++- source/model/actuators/acceptor.ts | 2 +- source/model/actuators/conveyer.ts | 2 +- source/model/actuators/generator.ts | 2 +- source/model/actuators/reader.ts | 8 ++-- source/model/actuators/rejector.ts | 2 +- source/model/actuators/writer.ts | 2 +- source/model/game.ts | 64 ++++++++++++++--------------- source/model/tasks/task.ts | 2 +- source/model/world.ts | 41 +++++++++--------- 11 files changed, 84 insertions(+), 68 deletions(-) diff --git a/source/data/strings/de.dat.js b/source/data/strings/de.dat.js index c234a88..b7451f7 100644 --- a/source/data/strings/de.dat.js +++ b/source/data/strings/de.dat.js @@ -56,11 +56,11 @@ jsonp_handle( "tasks.dreifaltigkeit.title": "Dreifaltigkeit", "tasks.dreifaltigkeit.text": "Annehmen genau dann, wenn die Eingabe mindestens drei ${s1} enth\u00e4lt", "tasks.abwechslung_erfreuet.title": "Abwechslung erfreuet", - "tasks.abwechslung_erfreuet.text": "annehmen genau dann wenn: Die Farben der Eingabe (${s0} / ${s1}) sich immer abwechseln", + "tasks.abwechslung_erfreuet.text": "Annehmen genau dann wenn: Die Farben der Eingabe (${s0} / ${s1}) sich immer abwechseln", "tasks.ans_ende.title": "Ans Ende", - "tasks.ans_ende.text": "die Eingabe (${s0} / ${s1}), aber mit dem ersten Symbol am Ende", + "tasks.ans_ende.text": "Die Eingabe (${s0} / ${s1}), aber mit dem ersten Symbol am Ende", "tasks.tauschen.title": "Tauschen", - "tasks.tauschen.text": "aus der Eingabe (${s0} / ${s1}) alle ${s0} durch ${s2} ersetzen und alle ${s1} durch ${s3}", + "tasks.tauschen.text": "Aus der Eingabe (${s0} / ${s1}) alle ${s0} durch ${s2} ersetzen und alle ${s1} durch ${s3}", "tasks.waehlerisch.title": "W\u00e4hlerisch", "tasks.waehlerisch.text": "aus der Eingabe alle ${s0} entfernen und alle ${s1} beibehalten", "tasks.dekorator.title": "Dekorator", @@ -68,7 +68,7 @@ jsonp_handle( "tasks.alpha_und_omega.title": "Alpha und Omega", "tasks.alpha_und_omega.text": "Eingaben (${s0} / ${s1}), die mit den gleichen Symbolen anfangen und enden", "tasks.an_den_anfang.title": "An den Anfang", - "tasks.an_den_anfang.text": "die Eingabe (${s0} / ${s1}), aber mit dem letzten Symbol am Anfang", + "tasks.an_den_anfang.text": "Die Eingabe (${s0} / ${s1}), aber mit dem letzten Symbol am Anfang", "tasks.a_n_b_n.title": "a^n b^n", "tasks.a_n_b_n.text": "Jaja, die ber\u00fchmt ber\u00fcchtige Sprache, die sich mit einem endlichen Automaten nicht erkennen l\u00e4sst \u2026 Das ist deine Chance zu zeigen, dass dieses Ding hier mehr ist als so ein k\u00fcmmerlicher DEA \u2026 und das ganz ohne Kellerspeicher! Also: Eine beliebige Anzahl an ${s0}, dann die gleiche Anzahl an ${s1}!", "tasks.a_n_b_n.hinweise.hinweis1": "Ein Wort ist genau dann Element der Sprache ${s0}^n ${s1}^n, wenn sie entweder 1) leer ist (also n = 0 gilt) oder 2) sie mit ${s0} beginnt, mit ${s1} endet und dazwischen ein Wort der Form ${s0}^(n-1) ${s1}^(n-1) steht \u2026 Stichwort: Rekursion" diff --git a/source/data/strings/en.dat.js b/source/data/strings/en.dat.js index 35b2e93..0d4f47a 100644 --- a/source/data/strings/en.dat.js +++ b/source/data/strings/en.dat.js @@ -50,9 +50,24 @@ jsonp_handle( "help.tasks.transducer.description": "In a transducer task an output shall be generated, which has a certain relationship to to the input; in other words: to apply a function.", "help.tasks.transducer.example": "Example: The input repeated two times.", "tasks.einfuehrung.title": "Introduction", - "tasks.einfuehrung.text": "Move the token from the entrance (left) to the exit (rights)!", + "tasks.einfuehrung.text": "Move the token from the entrance (left) to the exit (right)!", "tasks.a_n_b_n.title": "a^n b^n", - "tasks.a_n_b_n.text": "Yeah, yeah, yeah … The far famed language, which can't be recognized by a finite automaton … This is your chance to prove that this gizmo here is mightier than any wimpy DFA; even without any stack! So: An arbitrary number of ${s0}, then the same number of ${s1}!" + "tasks.a_n_b_n.text": "Yeah, yeah, yeah … The far famed language, which can't be recognized by a finite automaton … This is your chance to prove that this gizmo here is mightier than any wimpy DFA; even without any stack! So: An arbitrary number of ${s0}, then the same number of ${s1}!", + + "tasks.start_symbol.title": "starting symbol", + "tasks.start_symbol.text": "Accept if the input commences with ${s1}; reject otherwise", + "tasks.dreifaltigkeit.title": "Trinity", + "tasks.dreifaltigkeit.text": "Accept only if the input contains ${s1} at least 3 times", + "tasks.abwechslung_erfreuet.title": "Variation pleases", + "tasks.abwechslung_erfreuet.text": "Accept only if the input colors (${s0} / ${s1}) alternate", + "tasks.ans_ende.title": "To the end", + "tasks.ans_ende.text": "The input, but with the first symbol moved to the end", + "tasks.tauschen.title": "Swap", + "tasks.tauschen.text": "In the input sequence (${s0} / ${s1}, replace all ${s0} by ${s2} and all ${s1} by ${s3}", + "tasks.waehlerisch.title": "Picky", + "tasks.waehlerisch.text": "remove all ${s0} from the input and keep all ${s1}", + "tasks.dekorator.title": "Decorator", + "tasks.dekorator.text": "Absolutely everything is better with ribbons, squiggle and trinkets of all kind! At least that's what people believe — shopping TV channels are the definite proof! But does it also hold for the tape of the token, if it contains only ${s0} and ${s1}? Let's find out: Put ${s2} to the begin and ${s3} to the end!" } } ); diff --git a/source/model/actuators/acceptor.ts b/source/model/actuators/acceptor.ts index 0d783da..3ea703d 100644 --- a/source/model/actuators/acceptor.ts +++ b/source/model/actuators/acceptor.ts @@ -31,7 +31,7 @@ module mod_vtm /** * @author kcf */ - let kind : string = "acceptor"; + const kind : string = "acceptor"; /** diff --git a/source/model/actuators/conveyer.ts b/source/model/actuators/conveyer.ts index 97034e2..7a5e603 100644 --- a/source/model/actuators/conveyer.ts +++ b/source/model/actuators/conveyer.ts @@ -31,7 +31,7 @@ module mod_vtm /** * @author kcf */ - let kind : string = "conveyer"; + const kind : string = "conveyer"; /** diff --git a/source/model/actuators/generator.ts b/source/model/actuators/generator.ts index f810aff..96df12d 100644 --- a/source/model/actuators/generator.ts +++ b/source/model/actuators/generator.ts @@ -31,7 +31,7 @@ module mod_vtm /** * @author kcf */ - let kind : string = "generator"; + const kind : string = "generator"; /** diff --git a/source/model/actuators/reader.ts b/source/model/actuators/reader.ts index d11faec..43c82c5 100644 --- a/source/model/actuators/reader.ts +++ b/source/model/actuators/reader.ts @@ -31,7 +31,7 @@ module mod_vtm /** * @author kcf */ - let kind : string = "reader"; + const kind : string = "reader"; /** @@ -155,11 +155,11 @@ module mod_vtm ) : void { - let symbol_ : lib_errormonade.type_errormonade = mod_token.read(token); + const symbol_ : lib_errormonade.type_errormonade = mod_token.read(token); let summand : mod_direction.type_direction; if (lib_errormonade.filled(symbol_)) { - let symbol : mod_symbol.type_symbol = lib_errormonade.read(symbol_); + const symbol : mod_symbol.type_symbol = lib_errormonade.read(symbol_); if (symbol === reader.symbol_links) { mod_token.shift(token); @@ -179,7 +179,7 @@ module mod_vtm { summand = 0; } - let direction : mod_direction.type_direction = mod_direction.add(reader.direction, summand); + const direction : mod_direction.type_direction = mod_direction.add(reader.direction, summand); mod_token.move(token, direction); } diff --git a/source/model/actuators/rejector.ts b/source/model/actuators/rejector.ts index 7ac59bc..14f74fb 100644 --- a/source/model/actuators/rejector.ts +++ b/source/model/actuators/rejector.ts @@ -31,7 +31,7 @@ module mod_vtm /** * @author kcf */ - let kind : string = "rejector"; + const kind : string = "rejector"; /** diff --git a/source/model/actuators/writer.ts b/source/model/actuators/writer.ts index 1de8583..ce18c2a 100644 --- a/source/model/actuators/writer.ts +++ b/source/model/actuators/writer.ts @@ -31,7 +31,7 @@ module mod_vtm /** * @author kcf */ - let kind : string = "writer"; + const kind : string = "writer"; /** diff --git a/source/model/game.ts b/source/model/game.ts index 5700a6c..dca46ba 100644 --- a/source/model/game.ts +++ b/source/model/game.ts @@ -56,15 +56,14 @@ module mod_vtm "task": task, "testindex": undefined, "mode": undefined, - "listeners": undefined, - } - ; - game.listeners = - { - "change_task": [], - "change_world": [], - "change_token": [], - "change_mode": [], + "listeners": + { + "change_task": [], + "change_world": [], + "change_token": [], + "change_mode": [], + } + , } ; world_clear(game, false); @@ -90,7 +89,7 @@ module mod_vtm } else { - let message : string = "kein Ereignis mit diesem Name"; + const message : string = "kein Ereignis mit diesem Name"; throw (new Error(message)); } } @@ -106,11 +105,12 @@ module mod_vtm data : any = {} ) : void { - if (event in game.listeners) + if (game.listeners.hasOwnProperty(event)) { - game.listeners[event].forEach + game.listeners[event] + .forEach ( - procedure => + (procedure) => { procedure(data); } @@ -119,7 +119,7 @@ module mod_vtm } else { - let message : string = "kein Ereignis mit diesem Name"; + const message : string = "kein Ereignis mit diesem Name"; throw (new Error(message)); } } @@ -276,7 +276,7 @@ module mod_vtm { if (! (game.mode === mod_mode.initial)) { - let message : string = "gesperrt"; + const message : string = "gesperrt"; } else { @@ -313,7 +313,7 @@ module mod_vtm { if (! (game.mode === mod_mode.initial)) { - let message : string = "gesperrt"; + const message : string = "gesperrt"; } else { @@ -345,9 +345,9 @@ module mod_vtm { if (! lib_errormonade.filled(game.token)) { - let test : mod_test.type_test = mod_task.tests(game.task)[lib_errormonade.read(game.testindex)]; - let tape : Array = lib_list.copy(mod_test.input(test)); - let spot : mod_spot.type_spot = mod_world.generator_finden(game.world); + const test : mod_test.type_test = mod_task.tests(game.task)[lib_errormonade.read(game.testindex)]; + const tape : Array = lib_list.copy(mod_test.input(test)); + const spot : mod_spot.type_spot = mod_world.generator_finden(game.world); game.token = ( lib_errormonade.create_just ( @@ -361,28 +361,28 @@ module mod_vtm } else { - let token : mod_token.type_token = lib_errormonade.read(game.token); - let spot : mod_spot.type_spot = mod_token.spot_read(token); - let actuator_ : lib_errormonade.type_errormonade = mod_world.tile_get(game.world, spot); - let actuator : mod_actuator.type_actuator = ( + const token : mod_token.type_token = lib_errormonade.read(game.token); + const spot : mod_spot.type_spot = mod_token.spot_read(token); + const actuator_ : lib_errormonade.type_errormonade = mod_world.tile_get(game.world, spot); + const actuator : mod_actuator.type_actuator = ( lib_errormonade.filled(actuator_) ? lib_errormonade.read(actuator_) : mod_actuator.mod_rejector.create_extended() ); mod_actuator.use(actuator, token); - let state : mod_state.type_state = mod_token.state_read(token); + const state : mod_state.type_state = mod_token.state_read(token); if (state === mod_state.running) { // nothing tun } else if ((state === mod_state.accepted) || (state === mod_state.rejected)) { - let accepted : boolean = (state === mod_state.accepted); - let output : Array = mod_token.tape_read(token); + const accepted : boolean = (state === mod_state.accepted); + const output : Array = mod_token.tape_read(token); game.token = (lib_errormonade.create_nothing()); let testindex : int = lib_errormonade.read(game.testindex); - let tests : Array = mod_task.tests(game.task); - let test : mod_test.type_test = tests[testindex]; + const tests : Array = mod_task.tests(game.task); + const test : mod_test.type_test = tests[testindex]; if (! mod_test.pruefen(test, accepted, output)) { game.mode = mod_mode.wrong; @@ -407,7 +407,7 @@ module mod_vtm } else { - let message : string = "unbehandelter Zustand"; + const message : string = "unbehandelter Zustand"; throw (new Error(message)); } } @@ -416,17 +416,17 @@ module mod_vtm } case mod_mode.wrong: { - // nothing tun + // do nothing break; } case mod_mode.correct: { - // nothing tun + // do nothing break; } default: { - let message : string = "unbehandelter Modus"; + const message : string = "unbehandelter Modus"; throw (new Error(message)); break; } diff --git a/source/model/tasks/task.ts b/source/model/tasks/task.ts index 88b6d2e..ceaf208 100644 --- a/source/model/tasks/task.ts +++ b/source/model/tasks/task.ts @@ -190,7 +190,7 @@ module mod_vtm } default: { - let message : string = "unbehandelte Art '" + task_raw["kind"] + "'"; + const message : string = "unbehandelte Art '" + task_raw["kind"] + "'"; throw (new Error(message)); break; } diff --git a/source/model/world.ts b/source/model/world.ts index ceccaa9..174e005 100644 --- a/source/model/world.ts +++ b/source/model/world.ts @@ -60,10 +60,10 @@ module mod_vtm : Array<{spot : mod_spot.type_spot; actuator : mod_actuator.type_actuator;}> { let tiles : Array<{spot : mod_spot.type_spot; actuator : mod_actuator.type_actuator;}> = []; - lib_hashmap.iterate + lib_hashmap.iterate ( world.tiles, - (spot, actuator) => tiles.push({"spot": spot, "actuator": actuator}) + (spot, actuator) => {tiles.push({"spot": spot, "actuator": actuator});} ) ; return tiles; @@ -110,8 +110,8 @@ module mod_vtm ) : void { - let extended : boolean = true; - let liste : Array<{pruefer : (actuator : mod_actuator.type_actuator)=>boolean; erspotr : ()=>mod_actuator.type_actuator;}> = ( + const extended : boolean = true; + const liste : Array<{pruefer : (actuator : mod_actuator.type_actuator)=>boolean; erspotr : ()=>mod_actuator.type_actuator;}> = ( [] .concat ( @@ -188,12 +188,13 @@ module mod_vtm ) ); let index_alt : lib_errormonade.type_errormonade; - let actuator_alt_ : lib_errormonade.type_errormonade = lib_hashmap.get(world.tiles, spot); + const actuator_alt_ : lib_errormonade.type_errormonade = lib_hashmap.get(world.tiles, spot); if (lib_errormonade.filled(actuator_alt_)) { - let actuator_alt : mod_actuator.type_actuator = lib_errormonade.read(actuator_alt_); - let gefunden : boolean = ( - liste.some + const actuator_alt : mod_actuator.type_actuator = lib_errormonade.read(actuator_alt_); + const gefunden : boolean = ( + liste + .some ( (entry, index) => { @@ -220,19 +221,19 @@ module mod_vtm } else { - let message : string = "kein Aktor gesetzt"; + const message : string = "kein Aktor gesetzt"; // console.warn(message); index_alt = (lib_errormonade.create_just(0)); } if (lib_errormonade.filled(index_alt)) { - let index_neu : int = lib_math.mod(lib_errormonade.read(index_alt) + (inverted ? -1 : +1), liste.length); - let actuator_neu : mod_actuator.type_actuator = liste[index_neu].erspotr(); + const index_neu : int = lib_math.mod(lib_errormonade.read(index_alt) + (inverted ? -1 : +1), liste.length); + const actuator_neu : mod_actuator.type_actuator = liste[index_neu].erspotr(); tile_set(world, spot, actuator_neu); } else { - let message : string = ("Aktor nicht gefunden"); + const message : string = ("Aktor nicht gefunden"); // throw (new Error(message)); console.warn(message); } @@ -282,7 +283,7 @@ module mod_vtm { if (lib_errormonade.filled(spot)) { - let message : string = "mehrere Erzeuger gefunden"; + const message : string = "mehrere Erzeuger gefunden"; throw (new Error(message)); } else @@ -299,7 +300,7 @@ module mod_vtm } else { - let message : string = "kein Erzeuger gefunden"; + const message : string = "kein Erzeuger gefunden"; throw (new Error(message)); } } @@ -321,7 +322,7 @@ module mod_vtm { if (Math.abs(u-v) <= groesse) { - let spot : mod_spot.type_spot = {"u": u, "v": v}; + const spot : mod_spot.type_spot = {"u": u, "v": v}; let actuator : mod_actuator.type_actuator; if ((u === -groesse) && (v === 0)) { @@ -359,8 +360,8 @@ module mod_vtm world.tiles, (spot, actuator) => { - let spot_ : string = mod_spot.export_(spot); - let actuator_ : any = mod_actuator.export_(actuator); + const spot_ : string = mod_spot.export_(spot); + const actuator_ : any = mod_actuator.export_(actuator); raw["tiles"][spot_] = actuator_; } ) @@ -381,9 +382,9 @@ module mod_vtm let tiles : lib_hashmap.type_hashmap = (lib_hashmap.create(mod_spot.hash)); for (let spot_ in raw["tiles"]) { - let spot : mod_spot.type_spot = mod_spot.import_(spot_); - let actuator_ : mod_actuator.type_actuator = raw["tiles"][spot_]; - let actuator : mod_actuator.type_actuator = mod_actuator.import_(actuator_); + const spot : mod_spot.type_spot = mod_spot.import_(spot_); + const actuator_ : mod_actuator.type_actuator = raw["tiles"][spot_]; + const actuator : mod_actuator.type_actuator = mod_actuator.import_(actuator_); lib_hashmap.set(tiles, spot, actuator); } return (