From cb28201e4174b15571268d53e1ee50cc92c9ee77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20Fra=C3=9F?= Date: Wed, 8 Nov 2017 19:47:56 +0100 Subject: [PATCH] sicherung --- quelldatein/aufbau/leser.ts | 61 ++++++++---- quelldatein/aufbau/transduktor.ts | 16 +++ quelldatein/aufbau/welt.ts | 110 +++++++++++++++------ quelldatein/darstellung_steuerung/welt.css | 17 +++- quelldatein/darstellung_steuerung/welt.ts | 16 +-- quelldatein/daten/aufgaben.json | 27 +++++ 6 files changed, 191 insertions(+), 56 deletions(-) create mode 100644 quelldatein/aufbau/transduktor.ts create mode 100644 quelldatein/daten/aufgaben.json diff --git a/quelldatein/aufbau/leser.ts b/quelldatein/aufbau/leser.ts index 702ed07..07609ce 100644 --- a/quelldatein/aufbau/leser.ts +++ b/quelldatein/aufbau/leser.ts @@ -18,9 +18,23 @@ module mod_vtm_aufbau /** * @author kcf */ - public constructor(richtung : typ_richtung = 0) + private symbol_links : typ_symbol; + + + /** + * @author kcf + */ + private symbol_rechts : typ_symbol; + + + /** + * @author kcf + */ + public constructor(richtung : typ_richtung = 0, symbol_links : typ_symbol = 0, symbol_rechts : typ_symbol = 1) { this.richtung = richtung; + this.symbol_links = symbol_links; + this.symbol_rechts = symbol_rechts; } @@ -33,6 +47,24 @@ module mod_vtm_aufbau } + /** + * @author kcf + */ + public symbol_links_lesen() : typ_symbol + { + return this.symbol_links; + } + + + /** + * @author kcf + */ + public symbol_rechts_lesen() : typ_symbol + { + return this.symbol_rechts; + } + + /** * @author kcf * @implementation @@ -55,24 +87,17 @@ module mod_vtm_aufbau { let symbol : typ_symbol = symbol_.lesen(); figur.schieben(); - switch (symbol) + if (symbol === this.symbol_links) { - case 0: - { - summand = +1; - break; - } - case 1: - { - summand = -1; - break; - } - default: - { - let meldung : string = ("ungültiges Symbol '" + String(symbol) + "'"); - throw (new Error(meldung)); - break; - } + summand = +2; + } + else if (symbol === this.symbol_rechts) + { + summand = -2; + } + else + { + summand = 0; } } else diff --git a/quelldatein/aufbau/transduktor.ts b/quelldatein/aufbau/transduktor.ts new file mode 100644 index 0000000..9b252f4 --- /dev/null +++ b/quelldatein/aufbau/transduktor.ts @@ -0,0 +1,16 @@ + +module mod_vtm_aufbau + { + + /** + * @author kcf + */ + export class klasse_transduktor + { + } + + + + + } + diff --git a/quelldatein/aufbau/welt.ts b/quelldatein/aufbau/welt.ts index 11c01ea..3a9e632 100644 --- a/quelldatein/aufbau/welt.ts +++ b/quelldatein/aufbau/welt.ts @@ -72,34 +72,88 @@ module mod_vtm_aufbau */ public feld_wechseln(stelle : typ_stelle) : void { - let liste : Array<{pruefer : (aktor : schnittstelle_aktor)=>boolean; ersteller : ()=>schnittstelle_aktor;}> = - [ - { - "pruefer": (aktor) => (aktor instanceof klasse_befoerderer), - "ersteller": () => new klasse_befoerderer(), - }, - { - "pruefer": (aktor) => ((aktor instanceof klasse_schreiber) && (((aktor)).symbol_lesen() === 0)), - "ersteller": () => new klasse_schreiber(0, 0), - }, - { - "pruefer": (aktor) => ((aktor instanceof klasse_schreiber) && (((aktor)).symbol_lesen() === 1)), - "ersteller": () => new klasse_schreiber(0, 1), - }, - { - "pruefer": (aktor) => (aktor instanceof klasse_leser), - "ersteller": () => new klasse_leser(), - }, - { - "pruefer": (aktor) => (aktor instanceof klasse_annehmer), - "ersteller": () => new klasse_annehmer(), - }, - { - "pruefer": (aktor) => (aktor instanceof klasse_verwerfer), - "ersteller": () => new klasse_verwerfer(), - }, - ] - ; + let liste : Array<{pruefer : (aktor : schnittstelle_aktor)=>boolean; ersteller : ()=>schnittstelle_aktor;}> = ( + [] + .concat + ( + [ + { + "pruefer": (aktor) => (aktor instanceof klasse_befoerderer), + "ersteller": () => new klasse_befoerderer(), + }, + ] + ) + .concat + ( + mod_vtm_helfer.sequenz(4).map + ( + symbol => ( + { + "pruefer": (aktor) => + { + if (aktor instanceof klasse_schreiber) + { + let schreiber : klasse_schreiber = (aktor); + return (schreiber.symbol_lesen() === symbol); + } + else + { + return false; + } + } + , + "ersteller": () => new klasse_schreiber(0, symbol), + } + ) + ) + ) + .concat + ( + mod_vtm_helfer.sequenz(2).map + ( + index => + { + let symbol_links : typ_symbol = (2*index+0); + let symbol_rechts : typ_symbol = (2*index+1); + return ( + { + "pruefer": (aktor) => + { + if (aktor instanceof klasse_leser) + { + let leser : klasse_leser = (aktor); + return ( + (leser.symbol_links_lesen() === symbol_links) + && + (leser.symbol_rechts_lesen() === symbol_rechts) + ); + } + else + { + return false; + } + } + , + "ersteller": () => new klasse_leser(0, symbol_links, 2*index+1), + } + ); + } + ) + ) + .concat + ( + [ + { + "pruefer": (aktor) => (aktor instanceof klasse_annehmer), + "ersteller": () => new klasse_annehmer(), + }, + { + "pruefer": (aktor) => (aktor instanceof klasse_verwerfer), + "ersteller": () => new klasse_verwerfer(), + }, + ] + ) + ); let index : int; let aktor_alt_ : schnittstelle_fehlermonade = this.felder.holen(stelle); if (aktor_alt_.ist_schlicht) diff --git a/quelldatein/darstellung_steuerung/welt.css b/quelldatein/darstellung_steuerung/welt.css index 01c6886..a562a3b 100644 --- a/quelldatein/darstellung_steuerung/welt.css +++ b/quelldatein/darstellung_steuerung/welt.css @@ -22,12 +22,22 @@ .symbol_0 { - fill: hsl( 0, 50%, 50%); + fill: hsl(000.0000000000000, 50%, 50%); } .symbol_1 { - fill: hsl(120, 50%, 50%); + fill: hsl(222.4922359499621, 50%, 50%); + } + +.symbol_2 + { + fill: hsl(084.9844718999243, 50%, 50%); + } + +.symbol_3 + { + fill: hsl(307.4767078498864, 50%, 50%); } .kreis @@ -50,7 +60,10 @@ .eintrag { + /* stroke: black; stroke-width: 0.01; + */ + stroke: none; } diff --git a/quelldatein/darstellung_steuerung/welt.ts b/quelldatein/darstellung_steuerung/welt.ts index 5671ea9..8697018 100644 --- a/quelldatein/darstellung_steuerung/welt.ts +++ b/quelldatein/darstellung_steuerung/welt.ts @@ -122,12 +122,12 @@ module mod_vtm_darstellung_steuerung "symbol": new klasse_nichts(), }, { - "summand": +1, - "symbol": new klasse_schlicht(0), + "summand": +2, + "symbol": new klasse_schlicht(leser.symbol_links_lesen()), }, { - "summand": -1, - "symbol": new klasse_schlicht(1), + "summand": -2, + "symbol": new klasse_schlicht(leser.symbol_rechts_lesen()), }, ] ; @@ -278,22 +278,22 @@ module mod_vtm_darstellung_steuerung (dummy, symbol, index) => { let r : float = 0.06125; - let x : float = (+0.1+(2*r)*index); + let x : float = (+0.1+(2*r*1.25)*index); let y : float = (-0.1); let knoten_eintrag : mod_vtm_helfer.schnittstelle_xmlknoten = ( new mod_vtm_helfer.klasse_xmlknoten_normal ( - "rect", + "circle", { - /* "cx": x.toFixed(svg_float_praezission), "cy": y.toFixed(svg_float_praezission), "r": r.toFixed(svg_float_praezission), - */ + /* "x": (x-r).toFixed(svg_float_praezission), "y": (y-r).toFixed(svg_float_praezission), "width": (2*r).toFixed(svg_float_praezission), "height": (2*r).toFixed(svg_float_praezission), + */ "class": ( [ "eintrag", diff --git a/quelldatein/daten/aufgaben.json b/quelldatein/daten/aufgaben.json new file mode 100644 index 0000000..1244db4 --- /dev/null +++ b/quelldatein/daten/aufgaben.json @@ -0,0 +1,27 @@ +{ + "blau_filter": [ + { + "titel": "Blau-Filter", + "text": "aus der Eingabe alle roten Einträge beibehalten und alle blauen entfernen", + "tests": [ + { + "eingabe": [0,0,0,1,0], + "ausgabe": [0,0,0,0], + }, + { + "eingabe": [1,0,1,0,1], + "ausgabe": [0,0,0], + }, + { + "eingabe": [1,1,1,1,0], + "ausgabe": [0], + }, + { + "eingabe": [0,1,1,0,0,1,0,1,1,1,0,1,0,0,1,1,1,1,1,1,0,1,0,1], + "ausgabe": [0,0,0,0,0,0,0,0,0], + }, + ] + } + ] +} +