Compare commits
11 Commits
650d49c1f1
...
92379f9480
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
92379f9480 | ||
|
|
ec94b4ae3a | ||
|
|
de10a87bd5 | ||
|
|
477e49c6f2 | ||
|
|
aa169ffad0 | ||
|
|
93f3c11b60 | ||
|
|
78ea2a30c1 | ||
|
|
0d4f07c5bc | ||
|
|
9db4f43b39 | ||
|
|
1194d23d6c | ||
|
|
ca7771544d |
2
.gitignore
vendored
2
.gitignore
vendored
@@ -1 +1,3 @@
|
|||||||
.trash/
|
.trash/
|
||||||
|
.obsidian/snippets/
|
||||||
|
.obsidian/workspace.json
|
||||||
|
|||||||
3
.obsidian/community-plugins.json
vendored
3
.obsidian/community-plugins.json
vendored
@@ -10,5 +10,6 @@
|
|||||||
"darlal-switcher-plus",
|
"darlal-switcher-plus",
|
||||||
"dataview",
|
"dataview",
|
||||||
"obsidian-vimrc-support",
|
"obsidian-vimrc-support",
|
||||||
"emoji-shortcodes"
|
"emoji-shortcodes",
|
||||||
|
"execute-code"
|
||||||
]
|
]
|
||||||
205
.obsidian/plugins/execute-code/data.json
vendored
Normal file
205
.obsidian/plugins/execute-code/data.json
vendored
Normal file
@@ -0,0 +1,205 @@
|
|||||||
|
{
|
||||||
|
"releaseNote2_1_0wasShowed": true,
|
||||||
|
"persistentOuput": false,
|
||||||
|
"timeout": 10000,
|
||||||
|
"allowInput": true,
|
||||||
|
"wslMode": false,
|
||||||
|
"shellWSLMode": false,
|
||||||
|
"onlyCurrentBlock": false,
|
||||||
|
"nodePath": "node",
|
||||||
|
"nodeArgs": "",
|
||||||
|
"jsFileExtension": "js",
|
||||||
|
"jsInject": "",
|
||||||
|
"tsPath": "ts-node",
|
||||||
|
"tsArgs": "",
|
||||||
|
"tsInject": "",
|
||||||
|
"latexCompilerPath": "lualatex",
|
||||||
|
"latexCompilerArgs": "-interaction=nonstopmode",
|
||||||
|
"latexDoFilter": true,
|
||||||
|
"latexTexfotPath": "texfot",
|
||||||
|
"latexTexfotArgs": "--quiet",
|
||||||
|
"latexDocumentclass": "article",
|
||||||
|
"latexAdaptFont": "obsidian",
|
||||||
|
"latexKeepLog": false,
|
||||||
|
"latexSubprocessesUseShell": false,
|
||||||
|
"latexMaxFigures": 10,
|
||||||
|
"latexFigureTitlePattern": "[^\\n][^%`]*\\\\title\\s*\\{(?<name>[^\\}]*)\\}",
|
||||||
|
"latexDoCrop": false,
|
||||||
|
"latexCropPath": "pdfcrop",
|
||||||
|
"latexCropArgs": "--quiet",
|
||||||
|
"latexCropNoStandalone": true,
|
||||||
|
"latexCropNoPagenum": true,
|
||||||
|
"latexSaveSvg": "poppler",
|
||||||
|
"latexSvgPath": "pdftocairo",
|
||||||
|
"latexSvgArgs": "-svg",
|
||||||
|
"latexInkscapePath": "inkscape",
|
||||||
|
"latexInkscapeArgs": "--pages=all --export-plain-svg",
|
||||||
|
"latexSavePdf": true,
|
||||||
|
"latexSavePng": false,
|
||||||
|
"latexPngPath": "pdftocairo",
|
||||||
|
"latexPngArgs": "-singlefile -png",
|
||||||
|
"latexOutputEmbeddings": true,
|
||||||
|
"latexInvertFigures": true,
|
||||||
|
"latexCenterFigures": true,
|
||||||
|
"latexInject": "",
|
||||||
|
"leanPath": "lean",
|
||||||
|
"leanArgs": "",
|
||||||
|
"leanInject": "",
|
||||||
|
"luaPath": "lua",
|
||||||
|
"luaArgs": "",
|
||||||
|
"luaFileExtension": "lua",
|
||||||
|
"luaInject": "",
|
||||||
|
"dartPath": "dart",
|
||||||
|
"dartArgs": "",
|
||||||
|
"dartFileExtension": "dart",
|
||||||
|
"dartInject": "",
|
||||||
|
"csPath": "dotnet-script",
|
||||||
|
"csArgs": "",
|
||||||
|
"csFileExtension": "csx",
|
||||||
|
"csInject": "",
|
||||||
|
"pythonPath": "python",
|
||||||
|
"pythonArgs": "",
|
||||||
|
"pythonEmbedPlots": true,
|
||||||
|
"pythonFileExtension": "py",
|
||||||
|
"pythonInject": "",
|
||||||
|
"shellPath": "bash",
|
||||||
|
"shellArgs": "",
|
||||||
|
"shellFileExtension": "sh",
|
||||||
|
"shellInject": "",
|
||||||
|
"batchPath": "call",
|
||||||
|
"batchArgs": "",
|
||||||
|
"batchFileExtension": "bat",
|
||||||
|
"batchInject": "",
|
||||||
|
"groovyPath": "groovy",
|
||||||
|
"groovyArgs": "",
|
||||||
|
"groovyFileExtension": "groovy",
|
||||||
|
"groovyInject": "",
|
||||||
|
"golangPath": "go",
|
||||||
|
"golangArgs": "run",
|
||||||
|
"golangFileExtension": "go",
|
||||||
|
"goInject": "",
|
||||||
|
"javaPath": "java",
|
||||||
|
"javaArgs": "-ea",
|
||||||
|
"javaFileExtension": "java",
|
||||||
|
"javaInject": "",
|
||||||
|
"maxPrologAnswers": 15,
|
||||||
|
"prologInject": "",
|
||||||
|
"powershellPath": "powershell",
|
||||||
|
"powershellArgs": "-file",
|
||||||
|
"powershellFileExtension": "ps1",
|
||||||
|
"powershellInject": "$OutputEncoding = [console]::InputEncoding = [console]::OutputEncoding = New-Object System.Text.UTF8Encoding",
|
||||||
|
"powershellEncoding": "latin1",
|
||||||
|
"cargoPath": "cargo",
|
||||||
|
"cargoEvalArgs": "",
|
||||||
|
"rustInject": "",
|
||||||
|
"cppRunner": "cling",
|
||||||
|
"cppFileExtension": "cpp",
|
||||||
|
"cppInject": "",
|
||||||
|
"cppArgs": "",
|
||||||
|
"cppUseMain": false,
|
||||||
|
"clingPath": "cling",
|
||||||
|
"clingArgs": "",
|
||||||
|
"clingStd": "c++17",
|
||||||
|
"rustFileExtension": "rs",
|
||||||
|
"RPath": "Rscript",
|
||||||
|
"RArgs": "",
|
||||||
|
"REmbedPlots": true,
|
||||||
|
"RFileExtension": "R",
|
||||||
|
"rInject": "",
|
||||||
|
"kotlinPath": "kotlinc",
|
||||||
|
"kotlinArgs": "-script",
|
||||||
|
"kotlinFileExtension": "kts",
|
||||||
|
"kotlinInject": "",
|
||||||
|
"swiftPath": "swift",
|
||||||
|
"swiftArgs": "",
|
||||||
|
"swiftFileExtension": "swift",
|
||||||
|
"swiftInject": "",
|
||||||
|
"runghcPath": "runghc",
|
||||||
|
"ghcPath": "ghc",
|
||||||
|
"ghciPath": "ghci",
|
||||||
|
"useGhci": false,
|
||||||
|
"haskellInject": "",
|
||||||
|
"mathematicaPath": "wolframscript",
|
||||||
|
"mathematicaArgs": "-file",
|
||||||
|
"mathematicaFileExtension": "wls",
|
||||||
|
"mathematicaInject": "",
|
||||||
|
"scalaPath": "scala",
|
||||||
|
"scalaArgs": "",
|
||||||
|
"scalaFileExtension": "scala",
|
||||||
|
"scalaInject": "",
|
||||||
|
"racketPath": "racket",
|
||||||
|
"racketArgs": "",
|
||||||
|
"racketFileExtension": "rkt",
|
||||||
|
"racketInject": "#lang racket",
|
||||||
|
"fsharpPath": "dotnet",
|
||||||
|
"fsharpArgs": "fsi",
|
||||||
|
"fsharpInject": "",
|
||||||
|
"fsharpFileExtension": "fsx",
|
||||||
|
"cArgs": "",
|
||||||
|
"cUseMain": true,
|
||||||
|
"cInject": "",
|
||||||
|
"rubyPath": "ruby",
|
||||||
|
"rubyArgs": "",
|
||||||
|
"rubyFileExtension": "rb",
|
||||||
|
"rubyInject": "",
|
||||||
|
"sqlPath": "psql",
|
||||||
|
"sqlArgs": "-d <database> -U <user> -f",
|
||||||
|
"sqlInject": "",
|
||||||
|
"octavePath": "octave",
|
||||||
|
"octaveArgs": "-q",
|
||||||
|
"octaveFileExtension": "m",
|
||||||
|
"octaveInject": "figure('visible','off') # Necessary to embed plots",
|
||||||
|
"maximaPath": "maxima",
|
||||||
|
"maximaArgs": "-qb",
|
||||||
|
"maximaFileExtension": "mx",
|
||||||
|
"maximaInject": "",
|
||||||
|
"applescriptPath": "osascript",
|
||||||
|
"applescriptArgs": "",
|
||||||
|
"applescriptFileExtension": "scpt",
|
||||||
|
"applescriptInject": "",
|
||||||
|
"zigPath": "zig",
|
||||||
|
"zigArgs": "run",
|
||||||
|
"zigInject": "",
|
||||||
|
"ocamlPath": "ocaml",
|
||||||
|
"ocamlArgs": "",
|
||||||
|
"ocamlInject": "",
|
||||||
|
"phpPath": "php",
|
||||||
|
"phpArgs": "",
|
||||||
|
"phpFileExtension": "php",
|
||||||
|
"phpInject": "",
|
||||||
|
"jsInteractive": true,
|
||||||
|
"tsInteractive": false,
|
||||||
|
"csInteractive": false,
|
||||||
|
"latexInteractive": false,
|
||||||
|
"leanInteractive": false,
|
||||||
|
"luaInteractive": false,
|
||||||
|
"dartInteractive": false,
|
||||||
|
"pythonInteractive": true,
|
||||||
|
"cppInteractive": false,
|
||||||
|
"prologInteractive": false,
|
||||||
|
"shellInteractive": false,
|
||||||
|
"batchInteractive": false,
|
||||||
|
"bashInteractive": false,
|
||||||
|
"groovyInteractive": false,
|
||||||
|
"rInteractive": false,
|
||||||
|
"goInteractive": false,
|
||||||
|
"rustInteractive": false,
|
||||||
|
"javaInteractive": false,
|
||||||
|
"powershellInteractive": false,
|
||||||
|
"kotlinInteractive": false,
|
||||||
|
"swiftInteractive": false,
|
||||||
|
"mathematicaInteractive": false,
|
||||||
|
"haskellInteractive": false,
|
||||||
|
"scalaInteractive": false,
|
||||||
|
"fsharpInteractive": false,
|
||||||
|
"cInteractive": false,
|
||||||
|
"racketInteractive": false,
|
||||||
|
"rubyInteractive": false,
|
||||||
|
"sqlInteractive": false,
|
||||||
|
"octaveInteractive": false,
|
||||||
|
"maximaInteractive": false,
|
||||||
|
"applescriptInteractive": false,
|
||||||
|
"zigInteractive": false,
|
||||||
|
"ocamlInteractive": false,
|
||||||
|
"phpInteractive": false
|
||||||
|
}
|
||||||
14220
.obsidian/plugins/execute-code/main.js
vendored
Normal file
14220
.obsidian/plugins/execute-code/main.js
vendored
Normal file
File diff suppressed because one or more lines are too long
10
.obsidian/plugins/execute-code/manifest.json
vendored
Normal file
10
.obsidian/plugins/execute-code/manifest.json
vendored
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"id": "execute-code",
|
||||||
|
"name": "Execute Code",
|
||||||
|
"version": "2.1.2",
|
||||||
|
"minAppVersion": "1.7.2",
|
||||||
|
"description": "Allows you to execute code snippets within a note. Support C, C++, Python, R, JavaScript, TypeScript, LaTeX, SQL, and many more.",
|
||||||
|
"author": "twibiral",
|
||||||
|
"authorUrl": "https://www.github.com/twibiral",
|
||||||
|
"isDesktopOnly": true
|
||||||
|
}
|
||||||
276
.obsidian/plugins/execute-code/styles.css
vendored
Normal file
276
.obsidian/plugins/execute-code/styles.css
vendored
Normal file
@@ -0,0 +1,276 @@
|
|||||||
|
/* @settings
|
||||||
|
|
||||||
|
name: Execute Code Settings
|
||||||
|
id: obsidian-execute-code
|
||||||
|
settings:
|
||||||
|
-
|
||||||
|
id: color-section-title
|
||||||
|
title: Color Settings
|
||||||
|
type: heading
|
||||||
|
level: 3
|
||||||
|
-
|
||||||
|
id: use-custom-output-color
|
||||||
|
title: Custom Code Output Color
|
||||||
|
description: Use a custom color for the output of code blocks
|
||||||
|
type: class-toggle
|
||||||
|
default: false
|
||||||
|
-
|
||||||
|
id: code-output-text-color
|
||||||
|
title: Output Text Color
|
||||||
|
type: variable-color
|
||||||
|
format: hex
|
||||||
|
opacity: false
|
||||||
|
default: '#FFFFFF'
|
||||||
|
-
|
||||||
|
id: use-custom-error-color
|
||||||
|
title: Custom Code Error Color
|
||||||
|
description: Use a custom color for the error output of code blocks
|
||||||
|
type: class-toggle
|
||||||
|
default: false
|
||||||
|
-
|
||||||
|
id: code-error-text-color
|
||||||
|
title: Error Text Color
|
||||||
|
type: variable-color
|
||||||
|
format: hex
|
||||||
|
opacity: false
|
||||||
|
default: '#FF0000'
|
||||||
|
*/
|
||||||
|
|
||||||
|
button.run-code-button {
|
||||||
|
display: none;
|
||||||
|
color: var(--text-muted);
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0;
|
||||||
|
right: 0;
|
||||||
|
margin: 5px;
|
||||||
|
padding: 5px 20px 5px 20px;
|
||||||
|
z-index: 100;
|
||||||
|
}
|
||||||
|
|
||||||
|
button.clear-button {
|
||||||
|
display: none;
|
||||||
|
color: var(--text-muted);
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0;
|
||||||
|
left: 0;
|
||||||
|
margin: 5px;
|
||||||
|
padding: 5px 20px 5px 20px;
|
||||||
|
z-index: 100;
|
||||||
|
}
|
||||||
|
|
||||||
|
pre:hover .run-code-button,
|
||||||
|
pre:hover .clear-button {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
pre:hover .run-button-disabled,
|
||||||
|
pre:hover .clear-button-disabled {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.run-button-disabled,
|
||||||
|
.clear-button-disabled {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
pre:hover code.language-output {
|
||||||
|
margin-bottom: 28px;
|
||||||
|
}
|
||||||
|
|
||||||
|
:not(.use-custom-output-color) code.language-output span.stdout {
|
||||||
|
color: var(--text-muted) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.use-custom-output-color code.language-output span.stdout {
|
||||||
|
color: var(--code-output-text-color) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
:not(.use-custom-error-color) code.language-output span.stderr {
|
||||||
|
color: red !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.use-custom-error-color code.language-output span.stderr {
|
||||||
|
color: var(--code-error-text-color) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
code.language-output hr {
|
||||||
|
margin: 0 0 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.settings-code-input-box textarea,
|
||||||
|
.settings-code-input-box input {
|
||||||
|
min-width: 400px;
|
||||||
|
min-height: 100px;
|
||||||
|
font-family: monospace;
|
||||||
|
resize: vertical;
|
||||||
|
}
|
||||||
|
|
||||||
|
input.interactive-stdin {
|
||||||
|
font: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
.manage-executors-view h3 {
|
||||||
|
margin: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.manage-executors-view ul {
|
||||||
|
margin: 1em;
|
||||||
|
padding: 0;
|
||||||
|
list-style-type: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.manage-executors-view ul li {
|
||||||
|
padding: 0.5em;
|
||||||
|
background: var(--background-primary-alt);
|
||||||
|
border-radius: 4px;
|
||||||
|
display: grid;
|
||||||
|
flex-direction: column;
|
||||||
|
margin-bottom: 0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.manage-executors-view small {
|
||||||
|
text-transform: uppercase;
|
||||||
|
font-weight: bold;
|
||||||
|
letter-spacing: 0.1ch;
|
||||||
|
grid-row: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.manage-executors-view .filename {
|
||||||
|
grid-row: 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
.manage-executors-view li button {
|
||||||
|
grid-column: 2;
|
||||||
|
grid-row: 1 / 3;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0.25em;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
color: var(--text-muted);
|
||||||
|
background: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.manage-executors-view li button:hover {
|
||||||
|
background: var(--background-tertiary);
|
||||||
|
color: var(--icon-color-hover);
|
||||||
|
}
|
||||||
|
|
||||||
|
.manage-executors-view>div {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.manage-executors-view .empty-state {
|
||||||
|
color: var(--text-muted);
|
||||||
|
padding: 0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.has-run-code-button {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.load-state-indicator {
|
||||||
|
position: absolute;
|
||||||
|
top: 0.1em;
|
||||||
|
left: -2em;
|
||||||
|
width: 2em;
|
||||||
|
height: 2em;
|
||||||
|
background: var(--background-primary-alt);
|
||||||
|
border-top-left-radius: 4px;
|
||||||
|
border-bottom-left-radius: 4px;
|
||||||
|
color: var(--tx1);
|
||||||
|
transform: translateX(2em);
|
||||||
|
transition: transform 0.25s, opacity 0.25s;
|
||||||
|
opacity: 0;
|
||||||
|
pointer-events: none;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.load-state-indicator svg {
|
||||||
|
width: 1.5em;
|
||||||
|
height: 1.5em;
|
||||||
|
margin: 0.25em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.load-state-indicator.visible {
|
||||||
|
transform: translateX(0);
|
||||||
|
opacity: 1;
|
||||||
|
pointer-events: all;
|
||||||
|
}
|
||||||
|
|
||||||
|
.load-state-indicator::before {
|
||||||
|
content: "";
|
||||||
|
box-shadow: -1em 0 1em -0.75em inset var(--background-modifier-box-shadow);
|
||||||
|
position: absolute;
|
||||||
|
display: block;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
transform: translateX(-2em);
|
||||||
|
opacity: 0;
|
||||||
|
transition: transform 0.25s, opacity 0.25s;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.load-state-indicator.visible::before {
|
||||||
|
transform: translateX(0);
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Hide code blocks with language-output only in markdown view using "markdown-preview-view"*/
|
||||||
|
.markdown-preview-view pre.language-output {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-rendered pre.language-output {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Do not hide code block when exporting to PDF */
|
||||||
|
@media print {
|
||||||
|
pre.language-output {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Hide code blocks with language-output only in markdown view using "markdown-preview-view"*/
|
||||||
|
.markdown-preview-view pre.language-output {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-rendered pre.language-output {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Center LaTeX vector graphics, confine to text width */
|
||||||
|
.center-latex-figures img[src*="/figure%20"][src$=".svg"],
|
||||||
|
.center-latex-figures img[src*="/figure%20"][src*=".svg?"],
|
||||||
|
.center-latex-figures .stdout img[src*=".svg?"] {
|
||||||
|
display: block;
|
||||||
|
margin: auto;
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Invert LaTeX vector graphics in dark mode */
|
||||||
|
.theme-dark.invert-latex-figures img[src*="/figure%20"][src$=".svg"],
|
||||||
|
.theme-dark.invert-latex-figures img[src*="/figure%20"][src*=".svg?"],
|
||||||
|
.theme-dark.invert-latex-figures .stdout img[src*=".svg?"] {
|
||||||
|
filter: invert(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Allow descriptions in LaTeX settings to be selected and copied. */
|
||||||
|
.selectable-description-text {
|
||||||
|
-moz-user-select: text;
|
||||||
|
-khtml-user-select: text;
|
||||||
|
-webkit-user-select: text;
|
||||||
|
-ms-user-select: text;
|
||||||
|
user-select: text;
|
||||||
|
}
|
||||||
|
|
||||||
|
.insert-figure-icon {
|
||||||
|
margin-left: 0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Try to keep description of cmd arguments in LaTeX settings on the same line. */
|
||||||
|
code.selectable-description-text {
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"cascadeColors": false,
|
"cascadeColors": true,
|
||||||
"colorBackground": false,
|
"colorBackground": false,
|
||||||
"palette": [],
|
"palette": [],
|
||||||
"fileColors": []
|
"fileColors": []
|
||||||
|
|||||||
164
.obsidian/snippets/matugen.css
vendored
164
.obsidian/snippets/matugen.css
vendored
@@ -6,113 +6,113 @@
|
|||||||
.theme-dark, .theme-light {
|
.theme-dark, .theme-light {
|
||||||
|
|
||||||
/* ── Material You RGB helpers ──────────────────────────── */
|
/* ── Material You RGB helpers ──────────────────────────── */
|
||||||
--mat-bg-rgb: 19, 18, 29;
|
--mat-bg-rgb: 14, 21, 13;
|
||||||
--mat-surface-rgb: 19, 18, 29;
|
--mat-surface-rgb: 14, 21, 13;
|
||||||
--mat-on-surface-rgb: 228, 224, 240;
|
--mat-on-surface-rgb: 221, 229, 215;
|
||||||
--mat-primary-rgb: 195, 192, 255;
|
--mat-primary-rgb: 88, 225, 104;
|
||||||
--mat-on-primary-rgb: 29, 0, 165;
|
--mat-on-primary-rgb: 0, 57, 13;
|
||||||
|
|
||||||
/* ── Core Backgrounds ──────────────────────────────────── */
|
/* ── Core Backgrounds ──────────────────────────────────── */
|
||||||
--background-primary: #13121d;
|
--background-primary: #0e150d;
|
||||||
--background-primary-alt: #13121d;
|
--background-primary-alt: #0e150d;
|
||||||
--background-secondary: #1b1a25;
|
--background-secondary: #161d15;
|
||||||
--background-secondary-alt: #1f1e29;
|
--background-secondary-alt: #1a2219;
|
||||||
|
|
||||||
/* ── Titlebar ──────────────────────────────────────────── */
|
/* ── Titlebar ──────────────────────────────────────────── */
|
||||||
--titlebar-background: #13121d;
|
--titlebar-background: #0e150d;
|
||||||
--titlebar-background-focused: #1b1a25;
|
--titlebar-background-focused: #161d15;
|
||||||
--titlebar-text-color: #e4e0f0;
|
--titlebar-text-color: #dde5d7;
|
||||||
|
|
||||||
/* ── Borders & Dividers ────────────────────────────────── */
|
/* ── Borders & Dividers ────────────────────────────────── */
|
||||||
--background-modifier-border: #464557;
|
--background-modifier-border: #3d4a3b;
|
||||||
--background-modifier-border-focus: #918fa3;
|
--background-modifier-border-focus: #879583;
|
||||||
--background-modifier-border-hover: #918fa3;
|
--background-modifier-border-hover: #879583;
|
||||||
|
|
||||||
/* ── Text Colors ───────────────────────────────────────── */
|
/* ── Text Colors ───────────────────────────────────────── */
|
||||||
--text-normal: #e4e0f0;
|
--text-normal: #dde5d7;
|
||||||
--text-muted: #c7c4da;
|
--text-muted: #bccbb7;
|
||||||
--text-faint: #918fa3;
|
--text-faint: #879583;
|
||||||
--text-on-accent: #1d00a5;
|
--text-on-accent: #00390d;
|
||||||
--text-selection: rgba(195, 192, 255, 0.25);
|
--text-selection: rgba(88, 225, 104, 0.25);
|
||||||
|
|
||||||
/* ── Accent & Interactive ──────────────────────────────── */
|
/* ── Accent & Interactive ──────────────────────────────── */
|
||||||
--interactive-accent: #c3c0ff;
|
--interactive-accent: #58e168;
|
||||||
--interactive-accent-hover: #3c24f6;
|
--interactive-accent-hover: #16af3e;
|
||||||
--interactive-accent-rgb: 195, 192, 255;
|
--interactive-accent-rgb: 88, 225, 104;
|
||||||
--text-accent: #c3c0ff;
|
--text-accent: #58e168;
|
||||||
--text-accent-hover: #3c24f6;
|
--text-accent-hover: #16af3e;
|
||||||
|
|
||||||
/* ── Hover & Active Modifiers ──────────────────────────── */
|
/* ── Hover & Active Modifiers ──────────────────────────── */
|
||||||
--background-modifier-hover: rgba(var(--mat-on-surface-rgb), 0.06);
|
--background-modifier-hover: rgba(var(--mat-on-surface-rgb), 0.06);
|
||||||
--background-modifier-active-hover: rgba(var(--mat-primary-rgb), 0.15);
|
--background-modifier-active-hover: rgba(var(--mat-primary-rgb), 0.15);
|
||||||
--background-modifier-success: #a32200;
|
--background-modifier-success: #fe5f8c;
|
||||||
--background-modifier-error: #93000a;
|
--background-modifier-error: #93000a;
|
||||||
--background-modifier-error-hover: #ffb4ab;
|
--background-modifier-error-hover: #ffb4ab;
|
||||||
|
|
||||||
/* ── Obsidian Color Scale (--color-base-XX) ────────────── */
|
/* ── Obsidian Color Scale (--color-base-XX) ────────────── */
|
||||||
--color-base-00: #13121d;
|
--color-base-00: #0e150d;
|
||||||
--color-base-05: #13121d;
|
--color-base-05: #0e150d;
|
||||||
--color-base-10: #0d0d17;
|
--color-base-10: #091008;
|
||||||
--color-base-20: #1b1a25;
|
--color-base-20: #161d15;
|
||||||
--color-base-25: #1f1e29;
|
--color-base-25: #1a2219;
|
||||||
--color-base-30: #292934;
|
--color-base-30: #242c23;
|
||||||
--color-base-35: #34343f;
|
--color-base-35: #2f372d;
|
||||||
--color-base-40: #464557;
|
--color-base-40: #3d4a3b;
|
||||||
--color-base-50: #918fa3;
|
--color-base-50: #879583;
|
||||||
--color-base-60: #c7c4da;
|
--color-base-60: #bccbb7;
|
||||||
--color-base-70: #e4e0f0;
|
--color-base-70: #dde5d7;
|
||||||
--color-base-100: #e4e0f0;
|
--color-base-100: #dde5d7;
|
||||||
|
|
||||||
/* ── Semantic Colors ───────────────────────────────────── */
|
/* ── Semantic Colors ───────────────────────────────────── */
|
||||||
--color-red: #ffb4ab;
|
--color-red: #ffb4ab;
|
||||||
--color-orange: #ffb4a3;
|
--color-orange: #ffb1c1;
|
||||||
--color-yellow: #c3c0ff;
|
--color-yellow: #98d695;
|
||||||
--color-green: #a32200;
|
--color-green: #fe5f8c;
|
||||||
--color-cyan: #3e3a96;
|
--color-cyan: #1a5422;
|
||||||
--color-blue: #c3c0ff;
|
--color-blue: #58e168;
|
||||||
--color-purple: #c3c0ff;
|
--color-purple: #98d695;
|
||||||
--color-pink: #ffb4a3;
|
--color-pink: #ffb1c1;
|
||||||
|
|
||||||
/* ── Headings ──────────────────────────────────────────── */
|
/* ── Headings ──────────────────────────────────────────── */
|
||||||
--h1-color: #c3c0ff;
|
--h1-color: #58e168;
|
||||||
--h2-color: #c3c0ff;
|
--h2-color: #58e168;
|
||||||
--h3-color: #c3c0ff;
|
--h3-color: #98d695;
|
||||||
--h4-color: #ffb4a3;
|
--h4-color: #ffb1c1;
|
||||||
--h5-color: #c7c4da;
|
--h5-color: #bccbb7;
|
||||||
--h6-color: #918fa3;
|
--h6-color: #879583;
|
||||||
|
|
||||||
/* ── Links ─────────────────────────────────────────────── */
|
/* ── Links ─────────────────────────────────────────────── */
|
||||||
--link-color: #c3c0ff;
|
--link-color: #58e168;
|
||||||
--link-color-hover: #faf6ff;
|
--link-color-hover: #000601;
|
||||||
--link-external-color: #ffb4a3;
|
--link-external-color: #ffb1c1;
|
||||||
--link-unresolved-color: #918fa3;
|
--link-unresolved-color: #879583;
|
||||||
|
|
||||||
/* ── Tags ──────────────────────────────────────────────── */
|
/* ── Tags ──────────────────────────────────────────────── */
|
||||||
--tag-color: #faf6ff;
|
--tag-color: #000601;
|
||||||
--tag-background: #3c24f6;
|
--tag-background: #16af3e;
|
||||||
--tag-border-color: #c3c0ff;
|
--tag-border-color: #58e168;
|
||||||
--tag-color-hover: #1d00a5;
|
--tag-color-hover: #00390d;
|
||||||
--tag-background-hover: #c3c0ff;
|
--tag-background-hover: #58e168;
|
||||||
|
|
||||||
/* ── Checkboxes ────────────────────────────────────────── */
|
/* ── Checkboxes ────────────────────────────────────────── */
|
||||||
--checkbox-color: #c3c0ff;
|
--checkbox-color: #58e168;
|
||||||
--checkbox-color-hover: #3c24f6;
|
--checkbox-color-hover: #16af3e;
|
||||||
--checkbox-border-color: #918fa3;
|
--checkbox-border-color: #879583;
|
||||||
--checkbox-marker-color: #1d00a5;
|
--checkbox-marker-color: #00390d;
|
||||||
|
|
||||||
/* ── Code Blocks ───────────────────────────────────────── */
|
/* ── Code Blocks ───────────────────────────────────────── */
|
||||||
--code-background: #1b1a25;
|
--code-background: #161d15;
|
||||||
--code-normal: #e4e0f0;
|
--code-normal: #dde5d7;
|
||||||
--code-comment: #918fa3;
|
--code-comment: #879583;
|
||||||
--code-function: #c3c0ff;
|
--code-function: #58e168;
|
||||||
--code-important: #ffb4ab;
|
--code-important: #ffb4ab;
|
||||||
--code-keyword: #c3c0ff;
|
--code-keyword: #98d695;
|
||||||
--code-operator: #ffb4a3;
|
--code-operator: #ffb1c1;
|
||||||
--code-property: #c7c4da;
|
--code-property: #bccbb7;
|
||||||
--code-punctuation: #464557;
|
--code-punctuation: #3d4a3b;
|
||||||
--code-string: #ffb4a3;
|
--code-string: #ffb1c1;
|
||||||
--code-tag: #ffb4ab;
|
--code-tag: #ffb4ab;
|
||||||
--code-value: #c3c0ff;
|
--code-value: #98d695;
|
||||||
|
|
||||||
/* ── Scrollbar ─────────────────────────────────────────── */
|
/* ── Scrollbar ─────────────────────────────────────────── */
|
||||||
--scrollbar-thumb-bg: rgba(var(--mat-on-surface-rgb), 0.12);
|
--scrollbar-thumb-bg: rgba(var(--mat-on-surface-rgb), 0.12);
|
||||||
@@ -121,16 +121,16 @@
|
|||||||
|
|
||||||
/* ── Inputs ────────────────────────────────────────────── */
|
/* ── Inputs ────────────────────────────────────────────── */
|
||||||
--input-shadow: none;
|
--input-shadow: none;
|
||||||
--input-shadow-hover: 0 0 0 2px #918fa3;
|
--input-shadow-hover: 0 0 0 2px #879583;
|
||||||
|
|
||||||
/* ── Graph View ────────────────────────────────────────── */
|
/* ── Graph View ────────────────────────────────────────── */
|
||||||
--graph-node: #c3c0ff;
|
--graph-node: #58e168;
|
||||||
--graph-node-unresolved: #918fa3;
|
--graph-node-unresolved: #879583;
|
||||||
--graph-node-focused: #faf6ff;
|
--graph-node-focused: #000601;
|
||||||
--graph-node-tag: #c3c0ff;
|
--graph-node-tag: #98d695;
|
||||||
--graph-node-attachment: #ffb4a3;
|
--graph-node-attachment: #ffb1c1;
|
||||||
--graph-line: #464557;
|
--graph-line: #3d4a3b;
|
||||||
--graph-background: #13121d;
|
--graph-background: #0e150d;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
220
.obsidian/workspace.json
vendored
220
.obsidian/workspace.json
vendored
@@ -1,220 +0,0 @@
|
|||||||
{
|
|
||||||
"main": {
|
|
||||||
"id": "687d1c86232da224",
|
|
||||||
"type": "split",
|
|
||||||
"children": [
|
|
||||||
{
|
|
||||||
"id": "a9fc2a0864d18743",
|
|
||||||
"type": "tabs",
|
|
||||||
"children": [
|
|
||||||
{
|
|
||||||
"id": "668037a66202e3ed",
|
|
||||||
"type": "leaf",
|
|
||||||
"state": {
|
|
||||||
"type": "empty",
|
|
||||||
"state": {},
|
|
||||||
"icon": "lucide-file",
|
|
||||||
"title": "New tab"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"direction": "vertical"
|
|
||||||
},
|
|
||||||
"left": {
|
|
||||||
"id": "9ec91dab2caa0289",
|
|
||||||
"type": "split",
|
|
||||||
"children": [
|
|
||||||
{
|
|
||||||
"id": "3eac170f3e784f0a",
|
|
||||||
"type": "tabs",
|
|
||||||
"children": [
|
|
||||||
{
|
|
||||||
"id": "7a0e7b37bd89861d",
|
|
||||||
"type": "leaf",
|
|
||||||
"state": {
|
|
||||||
"type": "file-explorer",
|
|
||||||
"state": {
|
|
||||||
"sortOrder": "alphabetical",
|
|
||||||
"autoReveal": false
|
|
||||||
},
|
|
||||||
"icon": "lucide-folder-closed",
|
|
||||||
"title": "Files"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "4f49c1281d39a560",
|
|
||||||
"type": "leaf",
|
|
||||||
"state": {
|
|
||||||
"type": "search",
|
|
||||||
"state": {
|
|
||||||
"query": "",
|
|
||||||
"matchingCase": false,
|
|
||||||
"explainSearch": false,
|
|
||||||
"collapseAll": false,
|
|
||||||
"extraContext": false,
|
|
||||||
"sortOrder": "alphabetical"
|
|
||||||
},
|
|
||||||
"icon": "lucide-search",
|
|
||||||
"title": "Search"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "2e48ff6ec7a1cd18",
|
|
||||||
"type": "leaf",
|
|
||||||
"state": {
|
|
||||||
"type": "bookmarks",
|
|
||||||
"state": {},
|
|
||||||
"icon": "lucide-bookmark",
|
|
||||||
"title": "Bookmarks"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"direction": "horizontal",
|
|
||||||
"width": 200
|
|
||||||
},
|
|
||||||
"right": {
|
|
||||||
"id": "8a65bc0c1d4d98f2",
|
|
||||||
"type": "split",
|
|
||||||
"children": [
|
|
||||||
{
|
|
||||||
"id": "9a7ddad3818b86d0",
|
|
||||||
"type": "tabs",
|
|
||||||
"children": [
|
|
||||||
{
|
|
||||||
"id": "93d7330db83403ee",
|
|
||||||
"type": "leaf",
|
|
||||||
"state": {
|
|
||||||
"type": "backlink",
|
|
||||||
"state": {
|
|
||||||
"file": "Studium.md",
|
|
||||||
"collapseAll": false,
|
|
||||||
"extraContext": false,
|
|
||||||
"sortOrder": "alphabetical",
|
|
||||||
"showSearch": false,
|
|
||||||
"searchQuery": "",
|
|
||||||
"backlinkCollapsed": false,
|
|
||||||
"unlinkedCollapsed": true
|
|
||||||
},
|
|
||||||
"icon": "links-coming-in",
|
|
||||||
"title": "Backlinks for Studium"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "6d8323e062c2ca0a",
|
|
||||||
"type": "leaf",
|
|
||||||
"state": {
|
|
||||||
"type": "outgoing-link",
|
|
||||||
"state": {
|
|
||||||
"linksCollapsed": false,
|
|
||||||
"unlinkedCollapsed": true
|
|
||||||
},
|
|
||||||
"icon": "links-going-out",
|
|
||||||
"title": "Outgoing links"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "10b1fc99e21f5952",
|
|
||||||
"type": "leaf",
|
|
||||||
"state": {
|
|
||||||
"type": "tag",
|
|
||||||
"state": {
|
|
||||||
"sortOrder": "frequency",
|
|
||||||
"useHierarchy": true,
|
|
||||||
"showSearch": false,
|
|
||||||
"searchQuery": ""
|
|
||||||
},
|
|
||||||
"icon": "lucide-tags",
|
|
||||||
"title": "Tags"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "9ef86e6061e150c0",
|
|
||||||
"type": "leaf",
|
|
||||||
"state": {
|
|
||||||
"type": "outline",
|
|
||||||
"state": {
|
|
||||||
"followCursor": false,
|
|
||||||
"showSearch": false,
|
|
||||||
"searchQuery": ""
|
|
||||||
},
|
|
||||||
"icon": "lucide-list",
|
|
||||||
"title": "Outline"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "7cc839bdf6f45717",
|
|
||||||
"type": "leaf",
|
|
||||||
"state": {
|
|
||||||
"type": "git-view",
|
|
||||||
"state": {},
|
|
||||||
"icon": "lucide-file",
|
|
||||||
"title": "Plugin no longer active"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"currentTab": 4
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"direction": "horizontal",
|
|
||||||
"width": 300,
|
|
||||||
"collapsed": true
|
|
||||||
},
|
|
||||||
"left-ribbon": {
|
|
||||||
"hiddenItems": {
|
|
||||||
"switcher:Open quick switcher": false,
|
|
||||||
"graph:Open graph view": false,
|
|
||||||
"canvas:Create new canvas": false,
|
|
||||||
"daily-notes:Open today's daily note": false,
|
|
||||||
"templates:Insert template": false,
|
|
||||||
"command-palette:Open command palette": false,
|
|
||||||
"obsidian-git:Open Git source control": false,
|
|
||||||
"templater-obsidian:Templater": false,
|
|
||||||
"darlal-switcher-plus:Open in Headings Mode": false,
|
|
||||||
"darlal-switcher-plus:Open Symbols for the active editor": false
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"active": "7a0e7b37bd89861d",
|
|
||||||
"lastOpenFiles": [
|
|
||||||
"10 Courses/02 - SoSe 2026/Automatentheorie und formale Sprachen/29593952 - Regular Languages.md",
|
|
||||||
"10 Courses/02 - SoSe 2026/Automatentheorie und formale Sprachen/29593852 - Strings.md",
|
|
||||||
"00 Inbox/29593975 - Regular Expressions.md",
|
|
||||||
"10 Courses/02 - SoSe 2026/Automatentheorie und formale Sprachen/29593940 - Formal Languages.md",
|
|
||||||
"10 Courses/02 - SoSe 2026/Automatentheorie und formale Sprachen/29593958 - Kleene star of languages.md",
|
|
||||||
"30 Library/29593962 - atfl-st2026-l02-finite-representation-of-languages-full.pdf",
|
|
||||||
"30 Library/normalize_name.sh",
|
|
||||||
"30 Library/atfl-st2026-l02-finite-representation-of-languages-full.pdf",
|
|
||||||
"10 Courses/02 - SoSe 2026/Automatentheorie und formale Sprachen/29593935 - Kleene.md",
|
|
||||||
"30 Library/29593895 - atfl-st2026-l01-formal-languages-full.pdf",
|
|
||||||
"10 Courses/02 - SoSe 2026/Automatentheorie und formale Sprachen/29593929 - Alphabets.md",
|
|
||||||
"30 Library/29592593 - ET_II_Folien_gesamt_020426.pdf",
|
|
||||||
"30 Library/29592593 - 29592593 - ET_II_Folien_gesamt_020426.pdf",
|
|
||||||
"30 Library/atfl-st2026-l01-formal-languages-full.pdf",
|
|
||||||
"10 Courses/02 - SoSe 2026/Automatentheorie und formale Sprachen/29593850 - Automationtheory.md",
|
|
||||||
"10 Courses/02 - SoSe 2026/ET II/29592673 - Elektrotechnik II.md",
|
|
||||||
"99 Templates/New File Template.md",
|
|
||||||
"99 Templates/New File Template.md~",
|
|
||||||
"00 Inbox/29593849 - Automationtheory.md",
|
|
||||||
"00 Inbox/29593844 - Basics of formal languages.md",
|
|
||||||
"00 Inbox/29593844 - Automationtheory.md",
|
|
||||||
"00 Inbox/29593843 - newFile.md",
|
|
||||||
"00 Inbox/29593843 - newFile.md",
|
|
||||||
"lol.md",
|
|
||||||
"Natural and Formal Languages.md",
|
|
||||||
"00 Inbox/newfile.md",
|
|
||||||
"00 Inbox/29593832 - 2026-04-08.md",
|
|
||||||
"10 Courses/02 - SoSe 2026/ET II/29592733 - Zählpfeilsysteme.md",
|
|
||||||
"10 Courses/02 - SoSe 2026/Automatentheorie und formale Sprachen",
|
|
||||||
"10 Courses/02 - SoSe 2026/ET II/29592751 - Übungsaufgabe 1.md",
|
|
||||||
"10 Courses/02 - SoSe 2026/ET II/29592755 - Übungsaufgabe 2.md",
|
|
||||||
"20 Atlas/ET II - Map of Content.md",
|
|
||||||
"00 Inbox/29593226 - ET_II_Folien_gesamt_020426.pdf.md",
|
|
||||||
"10 Courses/02 - SoSe 2026/ET II/29592722 - Zeitabhängige Größen.md",
|
|
||||||
"10 Courses/02 - SoSe 2026/ET II/29592709 - Klausur.md",
|
|
||||||
"20 Atlas",
|
|
||||||
"10 Courses/01 - WiSe 2025_26/ET/images/beispiel_knotenregel.png"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
71
00 Inbox/29605546 - 29593852 - Strings.md
Normal file
71
00 Inbox/29605546 - 29593852 - Strings.md
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
---
|
||||||
|
created: 2026-04-08 08:52
|
||||||
|
course: "[[29593850 - Automationtheory]]"
|
||||||
|
topic: strings
|
||||||
|
related: "[[29593929 - Alphabets]]"
|
||||||
|
type: lecture
|
||||||
|
status: 🔴
|
||||||
|
tags:
|
||||||
|
- university
|
||||||
|
---
|
||||||
|
## 📌 Summary
|
||||||
|
|
||||||
|
> [!abstract]
|
||||||
|
> Overview of lecture 1 on `Wednesday, 2026/Apr/08`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📝 Content
|
||||||
|
|
||||||
|
A word (or _string_) is a finite sequence $w = a_1 a_2 ... a_n$ if characters from $Sigma$.
|
||||||
|
|
||||||
|
> [!CONVENTION]
|
||||||
|
> We will use small letters to describe strings that are part of a language.
|
||||||
|
|
||||||
|
> [!EXAMPLE]
|
||||||
|
> $"aa", "ab", "bba"$ and $"baab"$ are strings over $Sigma = {a, b}.
|
||||||
|
|
||||||
|
#### Length of a string
|
||||||
|
The _length_ $abs(x)$ of a string $x = a_1 ... a_n$ is its number $abs(x) = n$ of characters.
|
||||||
|
#### Empty String
|
||||||
|
The empty string is denoted by $epsilon$, this is the neutral element.
|
||||||
|
-> $abs(epsilon) = 0$
|
||||||
|
|
||||||
|
## String Operations
|
||||||
|
### Concatenation
|
||||||
|
String can be concatenated, where one string is appended to another.
|
||||||
|
For strings $x = a_1 ... a_n$ and $y = b_1 ... b_m$ over alphabets $Sigma_x$ and $Sigma_y$, their _concatenation_ over the alphabet $Sigma = Sigma_x union Sigma_y$ is the string
|
||||||
|
$$x circle.small y = x y = a_1 a_2 ... a_n b_1 b_2 ... b_m$$
|
||||||
|
> This string is of the length $abs(x y) = n + m$
|
||||||
|
|
||||||
|
> [!EXAMPLE]
|
||||||
|
> $x = "apple"$
|
||||||
|
> $y = "pie"$
|
||||||
|
> $x circle.small y = "applepie"$
|
||||||
|
|
||||||
|
Order of operations / Brackets do _not matter_. (Concatenation is associative but **not** commutative $x y eq.not y x$)
|
||||||
|
> $(x circle.small y) circle.small z = x circle.small (y circle.small z)$
|
||||||
|
|
||||||
|
Any string concatenated with the empty string $epsilon$ will result in itself.
|
||||||
|
> $x circle.small epsilon = x = epsilon circle.small x$
|
||||||
|
|
||||||
|
### Exponentiation
|
||||||
|
|
||||||
|
The $n^"th"$ power $x^n$ of a string $x$ is the $(n-1)$-fold concatenation of $x$ with itself.
|
||||||
|
> $x^0 := epsilon$
|
||||||
|
> $x^n := x^(n-1) circle.small x$ for $n in NN$
|
||||||
|
|
||||||
|
> [!Example]
|
||||||
|
> $x^4 = x x x x$
|
||||||
|
> $(a b)^3 = a b a b a b$
|
||||||
|
|
||||||
|
### Reversing / Mirroring
|
||||||
|
For a string $x = a_1 a_2 ... a_(n-1) a_n$ of length $n$, it's _mirrored string_ is given by
|
||||||
|
$$ x^("Rev") = a_n a_(n-1)...a_2 a_1$$
|
||||||
|
## Substrings
|
||||||
|
A string $x$ is a _substring_ of a string $y$ if $y = u x v$, where $u$ and $v$ can be arbitrary strings.
|
||||||
|
- If $u = epsilon$ then $x$ is a _prefix_ of $y$.
|
||||||
|
- If $v = epsilon$ then $x$ is a suffix of $y$.
|
||||||
|
|
||||||
|
For strings $x$ and $y$ the quantity $abs(y)_x$ is the number of times that $x$ is a substring of $y$.
|
||||||
|
|
||||||
18
00 Inbox/29605547 - 29605397 - OOP.md
Normal file
18
00 Inbox/29605547 - 29605397 - OOP.md
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
---
|
||||||
|
created: 2026-04-16 11:47
|
||||||
|
course: "[[29605547 - 29605397 - OOP]]"
|
||||||
|
tags:
|
||||||
|
- university
|
||||||
|
topic:
|
||||||
|
related:
|
||||||
|
type: lecture
|
||||||
|
status: 🔴
|
||||||
|
---
|
||||||
|
## 📌 Summary
|
||||||
|
|
||||||
|
> [!abstract]
|
||||||
|
>
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📝 Content
|
||||||
18
00 Inbox/29605548 - 29605397 - OOP.md
Normal file
18
00 Inbox/29605548 - 29605397 - OOP.md
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
---
|
||||||
|
created: 2026-04-16 11:48
|
||||||
|
course: "[[29605548 - 29605397 - OOP]]"
|
||||||
|
tags:
|
||||||
|
- university
|
||||||
|
topic:
|
||||||
|
related:
|
||||||
|
type: lecture
|
||||||
|
status: 🔴
|
||||||
|
---
|
||||||
|
## 📌 Summary
|
||||||
|
|
||||||
|
> [!abstract]
|
||||||
|
>
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📝 Content
|
||||||
@@ -1,7 +1,18 @@
|
|||||||
---
|
---
|
||||||
created: 2026-04-08 08:50
|
created: 2026-04-16 11:46
|
||||||
course: "[[29593850 - Automationtheory]]"
|
course: "[[29593850 - Automationtheory]]"
|
||||||
type: overview
|
type: lecture
|
||||||
tags:
|
tags:
|
||||||
- university
|
- university
|
||||||
|
topic:
|
||||||
|
related:
|
||||||
|
status: 🔴
|
||||||
---
|
---
|
||||||
|
## 📌 Summary
|
||||||
|
|
||||||
|
> [!abstract]
|
||||||
|
>
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📝 Content
|
||||||
|
|||||||
161
10 Courses/02 - SoSe 2026/OOP/29605321 - Classes.md
Normal file
161
10 Courses/02 - SoSe 2026/OOP/29605321 - Classes.md
Normal file
@@ -0,0 +1,161 @@
|
|||||||
|
---
|
||||||
|
created: 2026-04-16 08:01
|
||||||
|
course: "[[29605548 - 29605397 - OOP]]"
|
||||||
|
topic: classes
|
||||||
|
related:
|
||||||
|
type: lecture
|
||||||
|
status: 🔴
|
||||||
|
tags:
|
||||||
|
- university
|
||||||
|
- cpp
|
||||||
|
---
|
||||||
|
## 📌 Summary
|
||||||
|
|
||||||
|
> [!abstract]
|
||||||
|
> Introduction of Classes and visibility modifiers
|
||||||
|
>
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📝 Content
|
||||||
|
|
||||||
|
C approach of defining a Pokemon:
|
||||||
|
```C
|
||||||
|
typedef struct {
|
||||||
|
int exp;
|
||||||
|
int level;
|
||||||
|
int attack;
|
||||||
|
int defense;
|
||||||
|
int speed;
|
||||||
|
int hp;
|
||||||
|
} Pokemon;
|
||||||
|
|
||||||
|
void upgrade(*Pokemon p, int gainedExp) {
|
||||||
|
p->exp += gainedExp;
|
||||||
|
if (p->exp >= 4000) {
|
||||||
|
p->exp -= 4000;
|
||||||
|
p->level += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
Pokemon fukano = {3600, 1, 400, 400, 20, 1200};
|
||||||
|
printf("Exp of fukano: %d", fukano);
|
||||||
|
upgrade(&fukano, 400);
|
||||||
|
printf("Exp of fukano: %d", fukano);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
In C++ we use classes:
|
||||||
|
```C++
|
||||||
|
class Pokemon {
|
||||||
|
public: // visibility modifier
|
||||||
|
int exp;
|
||||||
|
int level;
|
||||||
|
int hp;
|
||||||
|
|
||||||
|
void upgrade(int gainedExp) {
|
||||||
|
exp += gainedExp;
|
||||||
|
if (exp >= 4000) {
|
||||||
|
exp -= 4000;
|
||||||
|
level += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
Pokemon fukano = {3600, 1, 1200};
|
||||||
|
cout << "Exp of fukano: " << fukano.exp << endl;
|
||||||
|
fukano.upgrade(400);
|
||||||
|
cout << "Exp of fukano: " << fukano.exp << endl;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Scope Modifiers
|
||||||
|
If we want to hide data beyond the class itself we can use the `private` visibility modifier:
|
||||||
|
|
||||||
|
```C++
|
||||||
|
class Pokemon {
|
||||||
|
public:
|
||||||
|
string name;
|
||||||
|
|
||||||
|
private:
|
||||||
|
int exp;
|
||||||
|
int level;
|
||||||
|
int hp;
|
||||||
|
|
||||||
|
public:
|
||||||
|
void upgrade(int gainedExp) {
|
||||||
|
exp += gainedExp;
|
||||||
|
if (exp >= 4000) {
|
||||||
|
exp -= 4000;
|
||||||
|
level += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
Pokemon fukano = {3600, 1, 1200};
|
||||||
|
fukano.upgrade(400); // this is OK
|
||||||
|
fukano.exp += 400; // this is not OK
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Getters and Setters
|
||||||
|
_Getters and Setters_ allow **controlling the change** like:
|
||||||
|
- ensuring a number is in a range
|
||||||
|
- update depending parameters (like level with exp)
|
||||||
|
|
||||||
|
```c++
|
||||||
|
class Pokemon {
|
||||||
|
// ...
|
||||||
|
public:
|
||||||
|
void setExp() { /*...*/ }
|
||||||
|
int getExp() { /*...*/ }
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Constructors
|
||||||
|
|
||||||
|
Given the class:
|
||||||
|
```C++
|
||||||
|
class Pokemon {
|
||||||
|
private:
|
||||||
|
int exp;
|
||||||
|
int level;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
We can create a new instance using the _basic constructor_:
|
||||||
|
```C++
|
||||||
|
class Pokemon {
|
||||||
|
// ...
|
||||||
|
public:
|
||||||
|
// Default constructor: allows Pokemon <name>; -> exp = 0, level = 0;
|
||||||
|
Pokemon(): exp(0), level(0) {};
|
||||||
|
// or
|
||||||
|
Pokemon(0, 0);
|
||||||
|
|
||||||
|
// Base constructor
|
||||||
|
Pokemon(int e, int l) {
|
||||||
|
exp = e;
|
||||||
|
level = l;
|
||||||
|
}
|
||||||
|
// or as
|
||||||
|
Pokemon(int e, int l): exp(e), level(l) {};
|
||||||
|
}
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
Pokemon fukano(3600, 1);
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
We can also create an instance as a copy of another object of the _same class_:
|
||||||
|
```C++
|
||||||
|
class Pokemon {
|
||||||
|
// ...
|
||||||
|
public:
|
||||||
|
Pokemon(const Pokemon& other): exp(other.exp), level(other.level) {}
|
||||||
|
}
|
||||||
|
```
|
||||||
1
40 Extras/OOP_Lecture
Submodule
1
40 Extras/OOP_Lecture
Submodule
Submodule 40 Extras/OOP_Lecture added at 55aef6d92e
Reference in New Issue
Block a user