Compare commits
No commits in common. "b193d1d61e9c0da86237bbe252aef8341cf1cda2" and "0f1b426f9475ab46761457ba81de1be0f7109b9a" have entirely different histories.
b193d1d61e
...
0f1b426f94
@ -68,10 +68,7 @@ var optionsConfigFile = argparse.Options{
|
|||||||
// Parst cli flags.
|
// Parst cli flags.
|
||||||
func ParseCli(args []string) (*types.CliArguments, error) {
|
func ParseCli(args []string) (*types.CliArguments, error) {
|
||||||
var err error
|
var err error
|
||||||
Parser = argparse.NewParser(
|
Parser = argparse.NewParser("cli parser", "Liest Optionen + Flags von Kommandozeile.")
|
||||||
"cli parser",
|
|
||||||
"\033[93;2mEin Programm zur Ausführung verschiedener Algorithmen aus dem Kurs AlgoDat I.\033[0m",
|
|
||||||
)
|
|
||||||
arguments := types.CliArguments{
|
arguments := types.CliArguments{
|
||||||
ModeHelp: Parser.NewCommand("help", "Hilfsanleitung anzeigen"),
|
ModeHelp: Parser.NewCommand("help", "Hilfsanleitung anzeigen"),
|
||||||
ModeVersion: Parser.NewCommand("version", "Version anzeigen."),
|
ModeVersion: Parser.NewCommand("version", "Version anzeigen."),
|
||||||
|
@ -38,7 +38,7 @@ func ReadAsset(key string) string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* ---------------------------------------------------------------- *
|
/* ---------------------------------------------------------------- *
|
||||||
* METHODS assets
|
* METHODS templates
|
||||||
* ---------------------------------------------------------------- */
|
* ---------------------------------------------------------------- */
|
||||||
|
|
||||||
func Help() string {
|
func Help() string {
|
||||||
|
@ -38,11 +38,9 @@ var (
|
|||||||
* ---------------------------------------------------------------- */
|
* ---------------------------------------------------------------- */
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
var err error
|
||||||
var arguments *types.CliArguments
|
var arguments *types.CliArguments
|
||||||
var (
|
var (
|
||||||
err1 error
|
|
||||||
err2 error
|
|
||||||
err3 error
|
|
||||||
cmdMissing bool
|
cmdMissing bool
|
||||||
showChecks bool
|
showChecks bool
|
||||||
)
|
)
|
||||||
@ -52,12 +50,12 @@ func main() {
|
|||||||
setup.Assets = assets
|
setup.Assets = assets
|
||||||
|
|
||||||
// cli arguments parsen
|
// cli arguments parsen
|
||||||
arguments, err1 = cli.ParseCli(os.Args)
|
arguments, err = cli.ParseCli(os.Args)
|
||||||
cmdMissing = cli.ParseCliCommandMissing(err1)
|
cmdMissing = cli.ParseCliCommandMissing(err)
|
||||||
|
|
||||||
// Programmeinstellungen initialisieren
|
// initialisiere basic optionen wie Logging
|
||||||
showChecks = false
|
showChecks = false
|
||||||
if err1 == nil {
|
if err == nil {
|
||||||
if !(arguments.ModeRun.Happened() && arguments.InteractiveMode()) {
|
if !(arguments.ModeRun.Happened() && arguments.InteractiveMode()) {
|
||||||
logging.SetQuietMode(arguments.QuietModeOn())
|
logging.SetQuietMode(arguments.QuietModeOn())
|
||||||
logging.SetDebugMode(arguments.DebugModeOn())
|
logging.SetDebugMode(arguments.DebugModeOn())
|
||||||
@ -65,39 +63,34 @@ func main() {
|
|||||||
logging.SetAnsiMode(arguments.ShowColour())
|
logging.SetAnsiMode(arguments.ShowColour())
|
||||||
showChecks = arguments.ShowChecks()
|
showChecks = arguments.ShowChecks()
|
||||||
}
|
}
|
||||||
err2 = setup.AppConfigInitialise()
|
|
||||||
|
// app config (intern) intialisieren
|
||||||
|
err = setup.AppConfigInitialise()
|
||||||
setup.SetAppConfigPerformChecks(showChecks)
|
setup.SetAppConfigPerformChecks(showChecks)
|
||||||
|
|
||||||
// Fehler melden (fatal)
|
if err == nil {
|
||||||
if err1 != nil && !cmdMissing {
|
if arguments.ModeVersion.Happened() {
|
||||||
logging.Fatal(err1)
|
endpoints_print.Version()
|
||||||
}
|
return
|
||||||
if err2 != nil {
|
} else if arguments.ModeRun.Happened() {
|
||||||
logging.Fatal(err2)
|
if arguments.InteractiveMode() {
|
||||||
}
|
endpoints_run.RunInteractive()
|
||||||
// Wenn der Artefakt ohne Argument aufgerufen wird, keinen Fehler melden, sondern im it-Modus ausführen
|
} else {
|
||||||
if cmdMissing {
|
err = endpoints_run.RunNonInteractive(arguments.GetConfigFile())
|
||||||
endpoints_run.RunInteractive()
|
if err != nil {
|
||||||
return
|
logging.Fatal(err)
|
||||||
}
|
}
|
||||||
// Sonst Commands behandeln
|
|
||||||
if arguments.ModeHelp.Happened() {
|
|
||||||
endpoints_print.Help()
|
|
||||||
return
|
|
||||||
} else if arguments.ModeVersion.Happened() {
|
|
||||||
endpoints_print.Version()
|
|
||||||
return
|
|
||||||
} else if arguments.ModeRun.Happened() {
|
|
||||||
if arguments.InteractiveMode() {
|
|
||||||
endpoints_run.RunInteractive()
|
|
||||||
} else {
|
|
||||||
err3 = endpoints_run.RunNonInteractive(arguments.GetConfigFile())
|
|
||||||
if err3 != nil {
|
|
||||||
logging.Fatal(err3)
|
|
||||||
}
|
}
|
||||||
|
return
|
||||||
|
} else if arguments.ModeHelp.Happened() {
|
||||||
|
endpoints_print.Help()
|
||||||
|
return
|
||||||
|
} else {
|
||||||
|
endpoints_run.RunInteractive()
|
||||||
}
|
}
|
||||||
return
|
} else if cmdMissing {
|
||||||
} else {
|
|
||||||
endpoints_run.RunInteractive()
|
endpoints_run.RunInteractive()
|
||||||
|
} else {
|
||||||
|
logging.Fatal(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -17,7 +17,6 @@ import sys;
|
|||||||
sys.path.insert(0, os.path.abspath(os.path.join(os.path.abspath(__file__), '..')));
|
sys.path.insert(0, os.path.abspath(os.path.join(os.path.abspath(__file__), '..')));
|
||||||
|
|
||||||
from src.setup.cli import *;
|
from src.setup.cli import *;
|
||||||
from src.endpoints.exports import *;
|
|
||||||
from src.main import enter;
|
from src.main import enter;
|
||||||
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
@ -25,18 +24,10 @@ from src.main import enter;
|
|||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
sys.tracebacklimit = 0;
|
||||||
sys.tracebacklimit = 0;
|
sys.tracebacklimit = 0;
|
||||||
try:
|
try:
|
||||||
args = GetArgumentsFromCli(*sys.argv[1:]);
|
args = GetArgumentsFromCli(sys.argv[1:]);
|
||||||
except:
|
except:
|
||||||
endpoint_help();
|
|
||||||
exit(1);
|
exit(1);
|
||||||
enter(
|
enter(quiet=args.quiet, debug=args.debug, mode=args.mode[0], path=args.path);
|
||||||
mode=args.mode,
|
|
||||||
it=args.it,
|
|
||||||
quiet=args.quiet,
|
|
||||||
debug=args.debug,
|
|
||||||
checks=args.checks,
|
|
||||||
colour=args.colour,
|
|
||||||
config=args.config,
|
|
||||||
);
|
|
||||||
|
@ -6,14 +6,17 @@
|
|||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
from src.core.log import *;
|
from src.core.log import *;
|
||||||
from src.setup import assets;
|
from src.setup.cli import GetArgumentsFromCli;
|
||||||
|
from src.setup.cli import GetArgumentParser;
|
||||||
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
# ENDPOINT version
|
# ENDPOINT version
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
def version():
|
def version():
|
||||||
logPlain(assets.Version());
|
with open('assets/VERSION', 'r') as fp:
|
||||||
|
version = ('\n'.join(fp.readlines())).strip();
|
||||||
|
logPlain(version);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
@ -21,5 +24,6 @@ def version():
|
|||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
def help():
|
def help():
|
||||||
logPlain(assets.Help());
|
parser = GetArgumentParser();
|
||||||
|
parser.print_help();
|
||||||
return;
|
return;
|
||||||
|
@ -8,7 +8,6 @@
|
|||||||
from src.core.log import *;
|
from src.core.log import *;
|
||||||
from src.core.config import *;
|
from src.core.config import *;
|
||||||
from src.setup.display import *;
|
from src.setup.display import *;
|
||||||
from src.setup import assets;
|
|
||||||
from src.algorithms.exports import *;
|
from src.algorithms.exports import *;
|
||||||
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
@ -19,7 +18,6 @@ def runInteractive():
|
|||||||
'''
|
'''
|
||||||
Startet Programm im interaktiven Modus (Konsole).
|
Startet Programm im interaktiven Modus (Konsole).
|
||||||
'''
|
'''
|
||||||
logPlain(assets.Logo());
|
|
||||||
logWarn('Interaktiver Modus noch nicht implementiert.');
|
logWarn('Interaktiver Modus noch nicht implementiert.');
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@ -33,7 +31,6 @@ def runNonInteractive(path: str):
|
|||||||
'''
|
'''
|
||||||
config = ReadConfigFile(path);
|
config = ReadConfigFile(path);
|
||||||
cases = GetAttribute(config, 'parts', 'cases', expectedtype=list, default=[]);
|
cases = GetAttribute(config, 'parts', 'cases', expectedtype=list, default=[]);
|
||||||
logPlain(assets.Logo());
|
|
||||||
for caseindex, case in enumerate(cases):
|
for caseindex, case in enumerate(cases):
|
||||||
command = GetAttribute(case, 'command', expectedtype=str, default='');
|
command = GetAttribute(case, 'command', expectedtype=str, default='');
|
||||||
descr = GetAttribute(case, 'description', expectedtype=str, default='');
|
descr = GetAttribute(case, 'description', expectedtype=str, default='');
|
||||||
|
@ -13,6 +13,8 @@ sys.path.insert(0, _path_to_python_project);
|
|||||||
os.chdir(_path_to_python_project);
|
os.chdir(_path_to_python_project);
|
||||||
|
|
||||||
from src.core.log import *;
|
from src.core.log import *;
|
||||||
|
from src.core.utils import IsTrue;
|
||||||
|
from src.core.utils import IsFalse;
|
||||||
from src.setup.cli import *;
|
from src.setup.cli import *;
|
||||||
from src.setup import appconfig;
|
from src.setup import appconfig;
|
||||||
from src.endpoints.exports import *;
|
from src.endpoints.exports import *;
|
||||||
@ -28,16 +30,14 @@ PATH_TO_CONFIG: str = '../config.yml';
|
|||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
def enter(
|
def enter(
|
||||||
mode: Union[str, None],
|
mode: str,
|
||||||
it: bool,
|
it: bool,
|
||||||
quiet: bool,
|
quiet: bool,
|
||||||
debug: bool,
|
debug: bool,
|
||||||
checks: bool,
|
checks: bool,
|
||||||
colour: bool,
|
colour: bool,
|
||||||
config: Union[str, None],
|
config: Any, **_
|
||||||
**_
|
|
||||||
):
|
):
|
||||||
# Programmeinstellungen initialisieren
|
|
||||||
if not (mode == 'run' and it):
|
if not (mode == 'run' and it):
|
||||||
SetQuietMode(quiet);
|
SetQuietMode(quiet);
|
||||||
SetDebugMode(debug);
|
SetDebugMode(debug);
|
||||||
@ -46,15 +46,7 @@ def enter(
|
|||||||
|
|
||||||
config = config if isinstance(config, str) else PATH_TO_CONFIG;
|
config = config if isinstance(config, str) else PATH_TO_CONFIG;
|
||||||
|
|
||||||
# Wenn der Artefakt ohne Argument aufgerufen wird, keinen Fehler melden, sondern im it-Modus ausführen
|
if mode == 'version':
|
||||||
if mode is None:
|
|
||||||
endpoint_runInteractive();
|
|
||||||
return;
|
|
||||||
# Sonst Commands behandeln
|
|
||||||
if mode == 'help':
|
|
||||||
endpoint_help();
|
|
||||||
return;
|
|
||||||
elif mode == 'version':
|
|
||||||
endpoint_version();
|
endpoint_version();
|
||||||
return;
|
return;
|
||||||
elif mode == 'run':
|
elif mode == 'run':
|
||||||
@ -62,9 +54,8 @@ def enter(
|
|||||||
endpoint_runInteractive();
|
endpoint_runInteractive();
|
||||||
else:
|
else:
|
||||||
endpoint_runNonInteractive(path=config);
|
endpoint_runNonInteractive(path=config);
|
||||||
return;
|
else: # elif mode
|
||||||
else:
|
endpoint_help();
|
||||||
endpoint_runInteractive();
|
|
||||||
return;
|
return;
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@ -80,11 +71,11 @@ if __name__ == '__main__':
|
|||||||
endpoint_help();
|
endpoint_help();
|
||||||
exit(1);
|
exit(1);
|
||||||
enter(
|
enter(
|
||||||
mode=args.mode,
|
mode=args.mode[0],
|
||||||
it=args.it,
|
it=args.it,
|
||||||
quiet=args.quiet,
|
quiet=args.quiet,
|
||||||
debug=args.debug,
|
debug=args.debug,
|
||||||
checks=args.checks,
|
checks=IsTrue(args.checks[0]),
|
||||||
colour=args.colour,
|
colour=IsTrue(args.colour[0]),
|
||||||
config=args.config,
|
config=args.config,
|
||||||
);
|
);
|
||||||
|
@ -1,38 +0,0 @@
|
|||||||
#!/usr/bin/env python3
|
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
# IMPORTS
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
from src.local.io import *;
|
|
||||||
|
|
||||||
from src.core.utils import DedentIgnoreFirstLast
|
|
||||||
from src.setup.cli import GetArgumentParser;
|
|
||||||
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
# METHODS assets
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
def Help() -> str:
|
|
||||||
parser = GetArgumentParser();
|
|
||||||
with io.StringIO() as fp:
|
|
||||||
parser.print_help(fp)
|
|
||||||
text = fp.getvalue();
|
|
||||||
return text;
|
|
||||||
|
|
||||||
def Logo() -> str:
|
|
||||||
## NOTE: expandiert ansi nicht:
|
|
||||||
# with open('assets/LOGO', 'r') as fp:
|
|
||||||
# logo = (''.join(fp.readlines())).strip();
|
|
||||||
logo = DedentIgnoreFirstLast('''
|
|
||||||
+--------------------+
|
|
||||||
| \033[32;1mAlgoDat I\033[0m |
|
|
||||||
+--------------------+
|
|
||||||
''') + '\n';
|
|
||||||
return logo;
|
|
||||||
|
|
||||||
def Version() -> str:
|
|
||||||
with open('assets/VERSION', 'r') as fp:
|
|
||||||
version = (''.join(fp.readlines())).strip();
|
|
||||||
return version;
|
|
@ -10,8 +10,6 @@ from src.local.typing import *;
|
|||||||
|
|
||||||
from src.core.log import *;
|
from src.core.log import *;
|
||||||
from src.core.utils import DedentIgnoreFirstLast;
|
from src.core.utils import DedentIgnoreFirstLast;
|
||||||
from src.core.utils import IsTrue;
|
|
||||||
from src.core.utils import IsFalse;
|
|
||||||
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
# GLOBAL VARIABLES
|
# GLOBAL VARIABLES
|
||||||
@ -30,12 +28,12 @@ def GetArgumentParser() -> argparse.ArgumentParser:
|
|||||||
prog='code/main.py',
|
prog='code/main.py',
|
||||||
description=DedentIgnoreFirstLast('''
|
description=DedentIgnoreFirstLast('''
|
||||||
\033[93;1mBeschreibung:\033[0m
|
\033[93;1mBeschreibung:\033[0m
|
||||||
\033[93;2mEin Programm zur Ausführung verschiedener Algorithmen aus dem Kurs AlgoDat I.\033[0m
|
\033[93;2mEin Programm, das verschiedene Algorithmen aus dem Kurs AlgoDat I testet.\033[0m
|
||||||
'''),
|
'''),
|
||||||
formatter_class=argparse.RawTextHelpFormatter,
|
formatter_class=argparse.RawTextHelpFormatter,
|
||||||
);
|
);
|
||||||
parser.add_argument('mode',
|
parser.add_argument('mode',
|
||||||
nargs='?',
|
nargs=1,
|
||||||
choices=['version', 'help', 'run'],
|
choices=['version', 'help', 'run'],
|
||||||
help=DedentIgnoreFirstLast('''
|
help=DedentIgnoreFirstLast('''
|
||||||
help = Hilfsanleitung anzeigen.
|
help = Hilfsanleitung anzeigen.
|
||||||
@ -53,12 +51,9 @@ def GetArgumentParser() -> argparse.ArgumentParser:
|
|||||||
'''),
|
'''),
|
||||||
),
|
),
|
||||||
parser.add_argument('--colour', nargs=1, type=str, default=['False'], help='(bool) Ob Logging färblich angezeigt wird.')
|
parser.add_argument('--colour', nargs=1, type=str, default=['False'], help='(bool) Ob Logging färblich angezeigt wird.')
|
||||||
parser.add_argument('--config', nargs=1, type=str, help='(string) Pfad zur Configdatei (nur für run Endpunkt).');
|
parser.add_argument('--config', nargs=1, type=str, help='(string) Pfad zur Configdatei (nur für run Endpunkt).');
|
||||||
return parser;
|
return parser;
|
||||||
|
|
||||||
def GetArgumentsFromCli(*cli_args: str) -> argparse.Namespace:
|
def GetArgumentsFromCli(*cli_args: str) -> argparse.Namespace:
|
||||||
parser = GetArgumentParser();
|
parser = GetArgumentParser();
|
||||||
args = parser.parse_args(cli_args);
|
return parser.parse_args(cli_args);
|
||||||
args.checks=IsTrue(args.checks[0]);
|
|
||||||
args.colour=IsTrue(args.colour[0]);
|
|
||||||
return args;
|
|
||||||
|
@ -2,25 +2,13 @@
|
|||||||
|
|
||||||
## Agenda ##
|
## Agenda ##
|
||||||
|
|
||||||
- Gruppe 1:
|
- [ ]
|
||||||
- Verkettete Listen
|
- [ ]
|
||||||
- basic methods/attributes
|
|
||||||
- Stacks + Queues
|
|
||||||
- LIFO=FILO vs. FIFO=LILO
|
|
||||||
- PseudoCode-Algorithmus für NextGreaterElement mittels Stacks erarbeitet und diskutiert
|
|
||||||
- ACHTUNG: im code-Ordner ([go-Variante](../code/golang/pkg/algorithms/stacks/next_greater_element/next_greater_element.go) und [python-Variante](../code/python/src/algorithms/stacks/next_greater_element.py)) habe ich einen vereinfachten Algorithmus implementiert.
|
|
||||||
- Gruppe 2:
|
|
||||||
- PseudoCode-Algorithmus für NextGreaterElement mittels Stacks erarbeitet und diskutiert
|
|
||||||
- ACHTUNG: im code-Ordner ([go-Variante](../code/golang/pkg/algorithms/stacks/next_greater_element/next_greater_element.go) und [python-Variante](../code/python/src/algorithms/stacks/next_greater_element.py)) habe ich einen vereinfachten Algorithmus implementiert.
|
|
||||||
- Grundkonzepte für gerichtete/ungerichtete Graphen und Bäume besprochen
|
|
||||||
|
|
||||||
## Nächste Woche ##
|
## Nächste Woche ##
|
||||||
|
|
||||||
- ab selbstorganisierende Listen und Sortierungsalgorithmen
|
-
|
||||||
|
|
||||||
### TODOs (Studierende) ###
|
### TODOs (Studierende) ###
|
||||||
|
|
||||||
- VL-Inhalte aus Wochen 3 + 4 durchgehen
|
-
|
||||||
- jeden Sortierungsalgorithmus und MaxHeap verstehen
|
|
||||||
- Darstellung von Daten als Bäume verstehen
|
|
||||||
- freiwillige ÜB 4 + Pflichtserie 2
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user