From 7139a249e2a05fa7d5669d1de6e2025191445379 Mon Sep 17 00:00:00 2001 From: Stefano Pigozzi Date: Sun, 24 May 2020 00:53:01 +0200 Subject: [PATCH] Update a lot of things --- src/components/Example.js | 10 ++ src/components/Example.less | 31 ++++ src/components/Image.js | 5 + src/components/{latex.css => Latex.css} | 0 src/components/{latex.js => Latex.js} | 21 ++- src/components/old/example.css | 10 -- src/components/old/example.js | 12 -- src/components/old/panel.js | 2 +- src/components/old/{panel.css => panel.less} | 6 +- src/contexts/LatexDefaultInline.js | 3 + src/index.less | 78 +++++----- src/routes/apprendimentoSistemiArtificiali.js | 4 +- src/routes/basiDiDati.js | 3 - src/routes/calcoloNumerico.js | 4 +- src/routes/fisica.js | 5 +- src/routes/ottimizzazioneLineare.js | 139 ++++++++++-------- src/routes/statistica.js | 109 +------------- src/styles/constants.less | 22 ++- src/styles/override-easymde.less | 2 +- 19 files changed, 221 insertions(+), 245 deletions(-) create mode 100644 src/components/Example.js create mode 100644 src/components/Example.less create mode 100644 src/components/Image.js rename src/components/{latex.css => Latex.css} (100%) rename src/components/{latex.js => Latex.js} (63%) delete mode 100644 src/components/old/example.css delete mode 100644 src/components/old/example.js rename src/components/old/{panel.css => panel.less} (54%) create mode 100644 src/contexts/LatexDefaultInline.js diff --git a/src/components/Example.js b/src/components/Example.js new file mode 100644 index 0000000..ae58bce --- /dev/null +++ b/src/components/Example.js @@ -0,0 +1,10 @@ +import style from "./Example.less"; +import {Component} from "preact"; + +export default function(props) { + return ( +
+ {props.children} +
+ ); +} diff --git a/src/components/Example.less b/src/components/Example.less new file mode 100644 index 0000000..460bda2 --- /dev/null +++ b/src/components/Example.less @@ -0,0 +1,31 @@ +@import "../styles/constants.less"; + +@eplus: fade(@example, 5%); +@eplusplus: fade(@example, 10%); + +.example { + color: @example; + background-color: @eplus; + padding: 4px; + border-radius: 4px; + margin: 4px 0; + + table { + border-spacing: 0; + border: 2px solid @eplusplus; + background-color: @eplus; + border-collapse: collapse; + + thead, tbody { + th, td { + padding: 4px; + border: 1px solid @eplusplus; + } + } + + thead { + background-color: @eplusplus; + color: @accent; + } + } +} diff --git a/src/components/Image.js b/src/components/Image.js new file mode 100644 index 0000000..ecb64d2 --- /dev/null +++ b/src/components/Image.js @@ -0,0 +1,5 @@ +export default function(props) { + return ( + {props.alt}/ + ) +} diff --git a/src/components/latex.css b/src/components/Latex.css similarity index 100% rename from src/components/latex.css rename to src/components/Latex.css diff --git a/src/components/latex.js b/src/components/Latex.js similarity index 63% rename from src/components/latex.js rename to src/components/Latex.js index b0d7b55..12c50cc 100644 --- a/src/components/latex.js +++ b/src/components/Latex.js @@ -1,18 +1,29 @@ -import style from './latex.css'; +import style from './Latex.css'; import {useContext} from "preact/hooks"; import LatexRenderColor from "../contexts/LatexRenderColor"; +import LatexDefaultInline from "../contexts/LatexDefaultInline"; export default function(props) { - let renderColor = useContext(LatexRenderColor); - // black, blue, brown, cyan, darkgray, gray, green, lightgray, lime, magenta, olive, orange, pink, purple, red, teal, violet, white, yellow - let inline = props.inline ? `\\inline` : ""; + let renderColor = useContext(LatexRenderColor); + let defaultInline = useContext(LatexDefaultInline); + let is_inline; + if(props.inline === undefined) { + is_inline = defaultInline; + } + else { + is_inline = props.inline; + } + + let inline = is_inline ? `\\inline` : ""; let equation = `${inline} {\\color{${renderColor}} ${props.children} }`; + return ( {props.children}); + /> + ); } diff --git a/src/components/old/example.css b/src/components/old/example.css deleted file mode 100644 index 3885fec..0000000 --- a/src/components/old/example.css +++ /dev/null @@ -1,10 +0,0 @@ -.example { - border: none; - color: #d3a1ff; - background-color: rgba(211, 161, 255, 0.1); - border-radius: 4px; -} - -.example::before { - content: "♦ "; -} \ No newline at end of file diff --git a/src/components/old/example.js b/src/components/old/example.js deleted file mode 100644 index 068061f..0000000 --- a/src/components/old/example.js +++ /dev/null @@ -1,12 +0,0 @@ -import style from "./example.css"; -import {Component} from "preact"; - -export default class Example extends Component { - render() { - return ( -
- {this.props.children} -
- ) - } -} diff --git a/src/components/old/panel.js b/src/components/old/panel.js index 0874b5c..42bf6c5 100644 --- a/src/components/old/panel.js +++ b/src/components/old/panel.js @@ -1,4 +1,4 @@ -import style from "./panel.css"; +import style from "./panel.less"; import { Component } from 'preact'; export default class Panel extends Component { diff --git a/src/components/old/panel.css b/src/components/old/panel.less similarity index 54% rename from src/components/old/panel.css rename to src/components/old/panel.less index 06a5406..b894ebd 100644 --- a/src/components/old/panel.css +++ b/src/components/old/panel.less @@ -1,6 +1,8 @@ +@import "../../styles/constants.less"; + .panel { - background-color: rgba(62.7%, 80%, 100%, 0.1); - padding: 4px; + background-color: @plus; + padding: 8px; border-radius: 4px; margin: 4px; height: calc(100% - 8px); diff --git a/src/contexts/LatexDefaultInline.js b/src/contexts/LatexDefaultInline.js new file mode 100644 index 0000000..f38b214 --- /dev/null +++ b/src/contexts/LatexDefaultInline.js @@ -0,0 +1,3 @@ +import {createContext} from "preact"; + +export default createContext(true); diff --git a/src/index.less b/src/index.less index 4671605..3aa098c 100644 --- a/src/index.less +++ b/src/index.less @@ -1,4 +1,4 @@ -@import "./styles/constants.less"; +@import "styles/constants.less"; * { box-sizing: border-box; @@ -14,10 +14,12 @@ h1, h2, h3, h4, h5, h6 { margin-top: 4px; margin-bottom: 4px; color: @accent; + font-family: @title; font-weight: normal; text-align: center; } +// By default h1 are as large as h2 h1 { font-size: xx-large; } @@ -27,46 +29,45 @@ a { text-decoration: none; &:hover { - color: #4affff; + color: @linkhover; } &:active { - color: #ffffff; + color: @linkactive; } } -img { +img, iframe { max-width: 100%; max-height: 300px; + border-radius: 4px; } -b { - color: @accent; -} - -code { +pre, code { font-family: @mono; + font-size: 14px; } blockquote { color: @fg; - border-left: 3px solid @fg; - background-color: fade(@fg, 10%); + border-left: 3px solid @plusplusplusplus; + background-color: @plus; padding: 4px 4px 4px 8px; - margin: 8px; + margin: 8px 0; } input[type="text"], input[type="password"] { color: @fg; background-color: @bg; - border: 1px solid @bg-lighter; + border: 1px solid @plusplus; border-radius: 4px; padding: 4px; font-size: medium; - &:disabled { - color: grey; - background-color: #1f1f1f; + &:disabled, &.disabled { + color: @disabledfg; + background-color: @disabledbg; + border-style: dotted; cursor: not-allowed; } } @@ -74,52 +75,53 @@ input[type="text"], input[type="password"] { button { color: @fg; background-color: @bg; - border: 1px solid @bg-lighter; + border: 1px solid @plusplus; border-radius: 4px; padding: 4px; font-size: medium; - &:hover { - background-color: @bg-light; + &:hover, &.hover { + background-color: @plusplus; border: 1px solid @fg; + color: @fg; } - &:active { - background-color: @bg-lighter; - border: 1px solid @fg; + &:active, &.active { + background-color: fade(@accent, 20%); + border: 1px solid @accent; + color: @accent; } - &.disabled { - color: grey; - background-color: #1f1f1f; + &:disabled, &.disabled { + color: @disabledfg; + background-color: @disabledbg; + border-style: dotted; cursor: not-allowed; } } hr { - border: 1px solid @bg-light; + border: 1px solid @plusplusplusplus; margin-top: 24px; margin-bottom: 24px; } table { border-spacing: 0; - border: 2px solid @bg-lighter; - background-color: @bg-light; - border-radius: 4px; + border: 2px solid @plusplus; + background-color: @plus; border-collapse: collapse; thead, tbody { th, td { padding: 4px; - border: 1px solid @bg-lighter; + border: 1px solid @plusplus; } } thead { - background-color: @bg-lighter; + background-color: @plusplus; color: @accent; - border-radius: 4px 4px 0 0; } } @@ -127,14 +129,10 @@ li { margin: 10px 0; } -.left { - text-align: left; +p:first-child { + margin-top: 0; } -.center { - text-align: center; -} - -.right { - text-align: right; +p:last-child { + margin-bottom: 0; } diff --git a/src/routes/apprendimentoSistemiArtificiali.js b/src/routes/apprendimentoSistemiArtificiali.js index e3c525e..47cd02f 100644 --- a/src/routes/apprendimentoSistemiArtificiali.js +++ b/src/routes/apprendimentoSistemiArtificiali.js @@ -1,9 +1,7 @@ import {Component} from 'preact' import Split from "../components/old/split"; -import Latex from "../components/latex"; import Panel from "../components/old/panel"; -import Example from "../components/old/example"; -import Todo from "../components/old/todo"; +import Example from "../components/example"; import Code from "../components/old/code"; const r = String.raw; diff --git a/src/routes/basiDiDati.js b/src/routes/basiDiDati.js index 2dc1bc4..9add7ca 100644 --- a/src/routes/basiDiDati.js +++ b/src/routes/basiDiDati.js @@ -1,9 +1,6 @@ import {Component} from 'preact' import Split from "../components/old/split"; -import Latex from "../components/latex"; import Panel from "../components/old/panel"; -import Example from "../components/old/example"; -import Todo from "../components/old/todo"; import Timer from "../components/old/timer"; const r = String.raw; diff --git a/src/routes/calcoloNumerico.js b/src/routes/calcoloNumerico.js index ac80370..be6e1ae 100644 --- a/src/routes/calcoloNumerico.js +++ b/src/routes/calcoloNumerico.js @@ -1,8 +1,8 @@ import {Component} from 'preact' import Split from "../components/old/split"; -import Latex from "../components/latex"; +import Latex from "../components/Latex"; import Panel from "../components/old/panel"; -import Example from "../components/old/example"; +import Example from "../components/example"; import Todo from "../components/old/todo"; import Timer from "../components/old/timer"; diff --git a/src/routes/fisica.js b/src/routes/fisica.js index ac2386e..7bf0127 100644 --- a/src/routes/fisica.js +++ b/src/routes/fisica.js @@ -1,16 +1,18 @@ import { Component } from 'preact'; -import Latex from '../components/latex'; +import Latex from '../components/Latex'; import Panel from '../components/old/panel'; import Split from '../components/old/split'; import Plus from '../components/old/plus'; import Minus from '../components/old/minus'; import Todo from '../components/old/todo'; +import LatexDefaultInline from "../contexts/LatexDefaultInline"; const r = String.raw; export default class Fisica extends Component { render() { return ( +

Fisica

@@ -1187,6 +1189,7 @@ export default class Fisica extends Component {
+
) } } diff --git a/src/routes/ottimizzazioneLineare.js b/src/routes/ottimizzazioneLineare.js index 9e61248..629e78a 100644 --- a/src/routes/ottimizzazioneLineare.js +++ b/src/routes/ottimizzazioneLineare.js @@ -1,12 +1,14 @@ import {Component} from 'preact' import Split from "../components/old/split"; -import Latex from "../components/latex"; +import Latex from "../components/Latex"; import Panel from "../components/old/panel"; -import Example from "../components/old/example"; +import Example from "../components/example"; import Todo from "../components/old/todo"; import Minus from "../components/old/minus"; import Plus from "../components/old/plus"; import Code from "../components/old/code"; +import Timer from "../components/old/timer"; +import Image from "../components/Image"; const r = String.raw; @@ -15,7 +17,7 @@ export default class OttimizzazioneLineare extends Component { return (

Ottimizzazione lineare intera

- +

Ho rimosso il rumore in sottofondo da tutti i video di Ricerca Operativa! @@ -24,6 +26,13 @@ export default class OttimizzazioneLineare extends Component { Guardate i video qui!

+ +
    +
  1. +
  2. +
  3. +
+
@@ -112,67 +121,73 @@ export default class OttimizzazioneLineare extends Component { Un modo per rappresentare sistemi in forma standard, anche noto come matrice equivalente completa del sistema.

- Il sistema:

- {r` - \begin{cases} - 2000A + 1000B = z\\ - 1A \leq 3\\ - 1B \leq 3\\ - 2A + 2B \leq 7 - \end{cases} - `}

- Diventa in forma di tableau:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
TNABs_1s_2
z2000100000
31010
30101
72200
+ Il sistema:

+ {r` + \begin{cases} + 2000A + 1000B = z\\ + 1A \leq 3\\ + 1B \leq 3\\ + 2A + 2B \leq 7 + \end{cases} + `}

+ Diventa in forma di tableau:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TNx_1x_2s_1s_2
z2000100000
31010
30101
72200

- TODO: come spiegarla? + Variabili che hanno tutti 0 e un 1 nella loro colonna del tableu. +

+

+ La loro controparte sono le variabili fuori base. +

+

+ Un sistema lineare è risolto quando tutte le variabili originali (x_n) sono nella base.

- +

Un algoritmo per massimizzare efficientemente variabili di sistemi lineari, derivato da Gauss-Jordan.

@@ -186,7 +201,7 @@ export default class OttimizzazioneLineare extends Component {
  • Finchè ci sono variabili con coefficienti positivi nella funzione obiettivo:
    1. Scegli una variabile della funzione obiettivo, chiamandola variabile entrante. Come? Vedi nel prossimo pannello.
    2. -
    3. Trova la variabile di base (detta variabile uscente) con il valore minore per questo rapporto: termine noto / coeff. variabile entrante
    4. +
    5. Trova la variabile di base (detta variabile uscente) con il valore minore per il rapporto {r`\frac{termine\ noto}{coeff.\ variabile\ entrante}`}
    6. Riscrivi tutte le funzioni del sistema in termini della variabile entrante.
  • @@ -203,9 +218,17 @@ export default class OttimizzazioneLineare extends Component {
  • Coefficiente maggiore nella funzione obiettivo.
  • Incremento maggiore della funzione obiettivo.
  • A caso.
  • -
  • Regola di Bland: scegli variabili entranti e uscenti con indice minore. Impedisce cicli infiniti!
  • +
  • Regola di Bland: scegli variabili entranti e uscenti con indice minore (ovvero, prendi le prime possibili). È usato nella teoria perchè impedisce i cicli infiniti!
  • + + + Ho risolto il problema 3 del file Ex_LP_testo con il Simplex: +

    + +

    +
    +
    diff --git a/src/routes/statistica.js b/src/routes/statistica.js index e28dee8..d95f97c 100644 --- a/src/routes/statistica.js +++ b/src/routes/statistica.js @@ -1,118 +1,18 @@ import { Component } from 'preact'; -import Latex from '../components/latex'; +import Latex from '../components/Latex'; import Panel from '../components/old/panel'; import Split from '../components/old/split'; -import Todo from '../components/old/todo'; -import Theorem from "../components/old/theorem"; -import Hypothesis from "../components/old/hypothesis"; -import Thesis from "../components/old/thesis"; -import Proof from "../components/old/proof"; -import Example from "../components/old/example"; +import Example from "../components/example"; import Plus from "../components/old/plus"; import Minus from "../components/old/minus"; +import LatexDefaultInline from "../contexts/LatexDefaultInline"; const r = String.raw; export default class Statistica extends Component { render() { - /* - - -

    - Gruppo intero di oggetti di cui si cercano informazioni. -

    -
    - -

    - Popolazione finita di oggetti concreti che possono essere campionati ciascuno solo una volta. -

    -
    - -

    - Popolazione di valori ottenuti da prove sperimentali indipendenti ripetute più volte. -

    -
    -
    - - -

    - Sottoinsieme della popolazione che contiene gli oggetti che si sono osservati. -

    -
    - Simple random sample}> -

    - Campione di una data dimensione in cui qualsiasi selezione di n elementi ha la stessa probabilità di costituire il campione. -

    -
    - Sample of convenience}> -

    - Campione ottenuto in un modo casuale non ben definito. -

    -
    - Sample with replacement}> -

    - Campione ottenuto sostituendo nella popolazione gli elementi estratti con dei nuovi elementi. -

    -

    - Dire che un campione è ottenuto with replacement è equivalente a dire che la popolazione che si sta campionando è infinita, e quindi che tutti gli elementi sono indipendenti. -

    -
    - -

    - Campione ottenuto da una popolazione in cui certi elementi hanno più probabilità di essere stati selezionati di altri. -

    -
    - Stratified random sample}> -

    - Campione ottenuto da un sottoinsieme della popolazione detto strato. -

    -
    - Cluster sample}> -

    - Campione ottenuto selezionando più cluster di elementi alla volta. -

    -
    -
    - - Sampling variation}> -

    - Differenza di informazioni presente tra due campioni diversi della stessa popolazione. -

    -
    - -

    - Gli elementi in un campione sono indipendenti se gli elementi estratti in precedenza non influsicono significativamente sulle probabilità di estrazione dell'elemento successivo. -

    -
    -
    - - -

    - Esperimento in cui c'è una sola popolazione da cui vengono estratti campioni. -

    -

    - Serve per verificare delle condizioni. -

    -
    - -

    - Esperimento in cui sono presenti più popolazioni (aventi caratteristiche differenti una dall'altra dette fattori) da cui vengono estratti campioni. -

    -

    - Serve per capire quali fattori influenzano il risultato dell'esperimento. -

    -
    -
    - - Numerico o quantitativo}> - Il dato descrive un valore numerico relativo all'elemento, come ad esempio una quantità fisica. - - Categorico o qualitativo}> - Il dato indica una categoria a cui appartiene l'elemento, come ad esempio il suo colore. - - - */ return ( +

    Statistica ed Elementi di Probabilità

    @@ -2095,6 +1995,7 @@ export default class Statistica extends Component {
    +
    ) } } diff --git a/src/styles/constants.less b/src/styles/constants.less index 8ceeb85..8a89240 100644 --- a/src/styles/constants.less +++ b/src/styles/constants.less @@ -1,9 +1,18 @@ @bg: #0d193b; -@bg-light: #1c2b4f; -@bg-lighter: #2a3d62; +@bg-light: #142245; +@bg-lighter: #1c2b4f; +@bg-lightest: #233358; @fg: #a0ccff; @accent: #ffffff; + @link: #00caca; +@linkhover: #00ffff; +@linkactive: #a0ffff; + +@plus: fade(@fg, 5%); +@plusplus: fade(@fg, 10%); +@plusplusplus: fade(@fg, 15%); +@plusplusplusplus: fade(@fg, 20%); @red: #ff7d7d; @orange: #ffbb7d; @@ -13,5 +22,12 @@ @blue: #7d7dff; @magenta: #ff7dff; -@sans: sans-serif; +@disabledfg: #808080; +@disabledbg: #1f1f1f; + +@sans: "Arial", sans-serif; +@text: "Calibri", sans-serif; +@title: "Arial", sans-serif; @mono: "Consolas", "SFMono-Regular", "Liberation Mono", "Menlo", monospace; + +@example: #d3a1ff; diff --git a/src/styles/override-easymde.less b/src/styles/override-easymde.less index 13bcd7b..919e508 100644 --- a/src/styles/override-easymde.less +++ b/src/styles/override-easymde.less @@ -1,4 +1,4 @@ -@import "./constants.less"; +@import "constants.less"; .CodeMirror { font-family: "Consolas", monospace !important;