Merge branch 'master'

This commit is contained in:
Mstrdav 2021-02-04 20:08:48 +01:00
commit 1b316c5315
5 changed files with 363 additions and 84 deletions

View file

@ -0,0 +1,106 @@
code.highlight {
font-weight: bold;
color: #0000BB;
}
code.block {
display: inline-block;
border: thin dotted #44F;
padding: 0.4ex 1.5ex 0.5ex 1.5ex;
margin: 0.2ex 1ex 0.2ex 1ex;
box-shadow: 1px 1px 1px #CCC;
background: rgba(255, 255, 255, 0.5);
white-space: pre;
vertical-align: middle;
}
code.page {
margin-left: 8%;
box-shadow: 3px 3px 3px #DBD;
font-size: 11pt;
background: #F0FFFF;
}
span.comment {
color: rgba(0, 110, 0, 0.7);
font-style: italic;
font-family: sans;
font-size: 105%;
white-space: pre;
}
span.semi {
font-weight: bold;
color: rgba(196, 0, 128, 0.6);
}
span.operator {
color: #840;
font-weight: bold;
}
span.highcomment {
font-style: italic;
font-family: sans;
font-size: 105%;
white-space: pre;
font-size: 110%;
font-weight: bold;
color: rgba(0, 110, 0, 0.9);
margin: 0.25ex 0ex 0.25ex 0ex;
}
span.highercomment {
font-style: italic;
font-family: sans;
font-size: 105%;
white-space: pre;
font-size: 105%;
font-weight: bold;
color: #000;
background: #DDD;
padding: 0ex 4.5ex 0ex 4.5ex;
margin: 0.25ex 0ex 2.5ex -4ex;
border: thin solid black;
}
span.label {
font-style: italic;
color: #44F;
}
span.letvar {
color: #0000A0;
font-style: italic;
}
span.uident {
font-weight: bold;
font-size: 110%;
color: #080;
}
span.string, span.char {
color: #E22;
white-space: pre;
font-family: serif;
font-size: 92%;
}
span.kw, code.kw {
display: inline;
font-weight: bold;
color: #600080;
}
span.type {
font-weight: bold;
color: #069;
}
span.fname {
font-variant: small-caps;
font-weight: bold;
font-size: 110%;
color: #050;
}

View file

@ -0,0 +1,154 @@
<html class="ada2" lang="fr" id="h" xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>mission1.adb</title>
<meta content="text/html; charset=utf-8" http-equiv="content-type" />
<link media="all" href="../../../ystyle.css" rel="stylesheet" />
<script src="../../../Scripts/yfold.js"></script>
</head>
<body>
<div class="header" id="header">
<h1 id="title">mission1.adb</h1>
</div>
<main><code class="page block"><span class="kw">with</span> <span class="ident">Gada.Text_IO</span> ;<span class="eols">
</span><span class="kw">procedure</span> <span class="fname">Mission1</span> <span class="kw">is</span><span class="eols">
</span> <span class="kw">package</span> <span class="fname">Txt</span> <span class="kw">renames</span> <span class="ident">GAda.Text_IO</span> ;<span class="eols">
</span> <span class="kw">procedure</span> <span class="fname">Tracer_Ligne</span> (<span class="ident">Long</span> : <span class="type">Integer</span>) <span class="kw">is</span>
<span class="kw">begin</span>
<span class="comment">-- Tracer n fois le caractère # puis passer à la ligne.
</span> <span class="kw">for</span> <span class="ident">Colonne</span> <span class="kw">in</span> <span class="number">1</span>..<span class="ident">Long</span> <span class="kw">loop</span>
<span class="ident">Txt.Put</span>(<span class="string">&quot;#&quot;</span>) ;
<span class="kw">end</span> <span class="kw">loop</span> ;
<span class="ident">Txt.New_Line</span> ;
<span class="kw">end</span> <span class="fname">Tracer_Ligne</span> ;<span class="eols">
</span> <span class="kw">procedure</span> <span class="fname">Tracer_Rectangle</span> (<span class="ident">Largeur</span> : <span class="type">Integer</span> ; <span class="ident">Hauteur</span> : <span class="type">Integer</span>) <span
class="kw">is</span>
<span class="kw">begin</span>
<span class="comment">-- Première ligne, pleine
</span> <span class="ident">Tracer_Ligne</span>(<span class="ident">Largeur</span>) ;<span class="eols">
</span> <span class="comment">-- Les lignes suivantes (de 2 à Hauteur-1) ne contiennent que
</span> <span class="comment">-- le caractère # du début et celui de la fin.
</span> <span class="kw">for</span> <span class="ident">Ligne</span> <span class="kw">in</span> <span class="number">2</span>..<span class="ident">Hauteur</span> - <span class="number">1</span> <span class="kw">loop</span>
<span class="ident">Txt.Put</span>(<span class="string">&quot;#&quot;</span>) ;<span class="eols">
</span> <span class="comment">-- Des espaces au milieu.
</span> <span class="kw">for</span> <span class="ident">Col</span> <span class="kw">in</span> <span class="number">2</span>..<span class="ident">Largeur</span> - <span class="number">1</span> <span class="kw">loop</span>
<span class="ident">Txt.Put</span>(<span class="string">&quot; &quot;</span>) ;
<span class="kw">end</span> <span class="kw">loop</span> ;<span class="eols">
</span> <span class="ident">Txt.Put</span>(<span class="string">&quot;#&quot;</span>) ;
<span class="ident">Txt.New_Line</span> ;
<span class="kw">end</span> <span class="kw">loop</span> ;<span class="eols">
</span> <span class="comment">-- La dernière ligne est pleine.
</span> <span class="ident">Tracer_Ligne</span>(<span class="ident">Largeur</span>) ;
<span class="ident">Txt.New_Line</span> ;
<span class="kw">end</span> <span class="fname">Tracer_Rectangle</span> ;<span class="eols">
</span> <span class="kw">procedure</span> <span class="fname">Tracer_Quadrillage</span> (<span class="ident">Largeur</span> : <span class="type">Integer</span> ; <span class="ident">Hauteur</span> : <span class="type">Integer</span>) <span
class="kw">is</span>
<span class="kw">begin</span>
<span class="comment">-- On dessine ligne par ligne, colonne par colonne.
</span> <span class="kw">for</span> <span class="ident">Ligne</span> <span class="kw">in</span> <span class="number">1</span>..<span class="ident">Hauteur</span> <span class="kw">loop</span>
<span class="kw">for</span> <span class="ident">Col</span> <span class="kw">in</span> <span class="number">1</span>..<span class="ident">Largeur</span> <span class="kw">loop</span>
<span class="comment">-- Il suffit de tracer les lignes impaires et les colonnes impaires.
</span> <span class="kw">if</span> (<span class="ident">Ligne</span> <span class="kw">mod</span> <span class="number">2</span> = <span class="number">1</span>) <span class="kw">or</span> (<span class="ident">Col</span> <span
class="kw">mod</span> <span class="number">2</span> = <span class="number">1</span>) <span class="kw">then</span>
<span class="ident">Txt.Put</span>(<span class="string">&quot;#&quot;</span>) ;
<span class="kw">else</span>
<span class="ident">Txt.Put</span>(<span class="string">&quot; &quot;</span>) ;
<span class="kw">end</span> <span class="kw">if</span> ;
<span class="kw">end</span> <span class="kw">loop</span> ;
<span class="ident">Txt.New_Line</span> ;
<span class="kw">end</span> <span class="kw">loop</span> ;
<span class="ident">Txt.New_Line</span> ;
<span class="kw">end</span> <span class="fname">Tracer_Quadrillage</span> ;<span class="eols">
</span> <span class="kw">procedure</span> <span class="fname">Tracer_Damier</span> (<span class="ident">Largeur</span> : <span class="type">Integer</span> ; <span class="ident">Hauteur</span> : <span class="type">Integer</span>) <span
class="kw">is</span>
<span class="kw">begin</span>
<span class="comment">-- Même principe que Tester_Quadrillage
</span> <span class="kw">for</span> <span class="ident">Ligne</span> <span class="kw">in</span> <span class="number">1</span>..<span class="ident">Hauteur</span> <span class="kw">loop</span>
<span class="kw">for</span> <span class="ident">Col</span> <span class="kw">in</span> <span class="number">1</span>..<span class="ident">Largeur</span> <span class="kw">loop</span>
<span class="comment">-- Il suffit de tracer les cases telles que x+y est pair.
</span> <span class="kw">if</span> (<span class="ident">Ligne</span> + <span class="ident">Col</span>) <span class="kw">mod</span> <span class="number">2</span> = <span class="number">0</span> <span class="kw">then</span>
<span class="ident">Txt.Put</span>(<span class="string">&quot;#&quot;</span>) ;
<span class="kw">else</span>
<span class="ident">Txt.Put</span>(<span class="string">&quot; &quot;</span>) ;
<span class="kw">end</span> <span class="kw">if</span> ;
<span class="kw">end</span> <span class="kw">loop</span> ;
<span class="ident">Txt.New_Line</span> ;
<span class="kw">end</span> <span class="kw">loop</span> ;
<span class="ident">Txt.New_Line</span> ;
<span class="kw">end</span> <span class="fname">Tracer_Damier</span> ;<span class="eols">
</span> <span class="kw">procedure</span> <span class="fname">Tracer_Gros_Damier</span> (<span class="ident">Largeur</span> : <span class="type">Integer</span> ; <span class="ident">Hauteur</span> : <span class="type">Integer</span>) <span
class="kw">is</span>
<span class="kw">begin</span>
<span class="comment">-- Même principe, mais en divisant les coordonnées par 2 pour faire des paquets de 2x2.
</span> <span class="kw">for</span> <span class="ident">Ligne</span> <span class="kw">in</span> <span class="number">1</span>..<span class="ident">Hauteur</span> <span class="kw">loop</span>
<span class="kw">for</span> <span class="ident">Col</span> <span class="kw">in</span> <span class="number">1</span>..<span class="ident">Largeur</span> <span class="kw">loop</span><span class="eols">
</span> <span class="comment">-- On soustrait 1 car sinon le damier commence au milieu d'un paquet de 2x2 et ce n'est pas joli.
</span> <span class="kw">if</span> ((<span class="ident">Ligne</span>-<span class="number">1</span>)/<span class="number">2</span> + (<span class="ident">Col</span>-<span class="number">1</span>)/<span class="number">2</span>) <span
class="kw">mod</span> <span class="number">2</span> = <span class="number">1</span> <span class="kw">then</span>
<span class="ident">Txt.Put</span>(<span class="string">&quot;#&quot;</span>) ;
<span class="kw">else</span>
<span class="ident">Txt.Put</span>(<span class="string">&quot; &quot;</span>) ;
<span class="kw">end</span> <span class="kw">if</span> ;
<span class="kw">end</span> <span class="kw">loop</span> ;
<span class="ident">Txt.New_Line</span> ;
<span class="kw">end</span> <span class="kw">loop</span> ;
<span class="ident">Txt.New_Line</span> ;
<span class="kw">end</span> <span class="fname">Tracer_Gros_Damier</span> ;<span class="eols">
</span><span class="kw">begin</span><span class="eols">
</span> <span class="ident">Txt.Put_Line</span>(<span class="string">&quot;Test de Tracer_Ligne : &quot;</span>) ;
<span class="ident">Txt.New_Line</span> ;<span class="eols">
</span> <span class="ident">Tracer_Ligne</span>(<span class="number">3</span>) ;
<span class="ident">Tracer_Ligne</span>(<span class="number">8</span>) ;
<span class="ident">Tracer_Ligne</span>(<span class="number">20</span>) ;<span class="eols">
</span> <span class="ident">Txt.New_Line</span> ;
<span class="ident">Txt.Put_Line</span>(<span class="string">&quot;Test de Tracer_Rectangle : &quot;</span>) ;
<span class="ident">Txt.New_Line</span> ;<span class="eols">
</span> <span class="ident">Tracer_Rectangle</span>(<span class="number">5</span>, <span class="number">5</span>) ;
<span class="ident">Tracer_Rectangle</span>(<span class="number">14</span>, <span class="number">2</span>) ;
<span class="ident">Tracer_Rectangle</span>(<span class="number">4</span>, <span class="number">6</span>) ;<span class="eols">
</span> <span class="ident">Txt.New_Line</span> ;
<span class="ident">Txt.Put_Line</span>(<span class="string">&quot;Test de Tracer_Quadrillage : &quot;</span>) ;
<span class="ident">Txt.New_Line</span> ;<span class="eols">
</span> <span class="ident">Tracer_Quadrillage</span>(<span class="number">19</span>, <span class="number">11</span>) ;<span class="eols">
</span> <span class="ident">Txt.New_Line</span> ;
<span class="ident">Txt.Put_Line</span>(<span class="string">&quot;Test de Tracer_Damier : &quot;</span>) ;
<span class="ident">Txt.New_Line</span> ;<span class="eols">
</span> <span class="ident">Tracer_Damier</span>(<span class="number">18</span>, <span class="number">10</span>) ;<span class="eols">
</span> <span class="ident">Txt.New_Line</span> ;
<span class="ident">Txt.Put_Line</span>(<span class="string">&quot;Test de Tracer_Gros_Damier : &quot;</span>) ;
<span class="ident">Txt.New_Line</span> ;<span class="eols">
</span> <span class="ident">Tracer_Gros_Damier</span>(<span class="number">18</span>, <span class="number">10</span>) ;<span class="eols">
</span><span class="kw">end</span> <span class="fname">Mission1</span> ;
</code></main>
<footer><small class="pcom"><a class="caml_c" href="../../../yversion.html" data-eliom-c-onclick="GdR46hGdWKzn">Version information</a></small><a target="_blank" href="http://www.insa-toulouse.fr"><img title="INSA Toulouse"
style="width:73px;height:28px;" alt="INSA logo" src="../../../Images/logo-insa-light.jpg" /></a><a target="_blank" href="http://jigsaw.w3.org/css-validator/check/referer"><img title="Validate css stylesheet" style="width:28px;height:32px;"
alt="CSS3 logo" src="../../../Images/css3.png" /></a><a target="_blank" href="http://validator.w3.org/check/referer"><img title="Validate html5 content" style="width:32px;height:32px;" alt="HTML5 logo" src="../../../Images/html5.png" /></a>
</footer>
</body>
</html>

View file

@ -0,0 +1,80 @@
<html class="ada2" lang="fr" id="h" xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>mission2.ml</title>
<meta content="text/html; charset=utf-8" http-equiv="content-type" />
<link media="all" href="../../../ystyle.css" rel="stylesheet" />
<script src="../../../Scripts/yfold.js"></script>
</head>
<body>
<div class="header" id="header">
<h1 id="title">mission2.ml</h1>
</div>
<main><code class="page block"><span class="comment">(* Version OCaml de l'exercice sur les intervalles *)</span>
<span class="kw">type</span> t_intervalle =
{ inf: float ;
sup: float }
<span class="kw">let</span> <span class="letvar">sof</span> x = string_of_int (int_of_float x)
<span class="comment">(* Les trois premières fonctions demandées. *)</span>
<span class="kw">let</span> <span class="letvar">intervalle_image</span> it = <span class="string">&quot;[&quot;</span> ^ sof it.inf ^ <span class="string">&quot;, &quot;</span> ^ sof it.sup ^ <span class="string">&quot;]&quot;</span>
<span class="kw">let</span> <span class="letvar">est_inclus</span> a b = (a.inf &gt;= b.inf &amp;&amp; a.sup &lt;= b.sup)
<span class="kw">let</span> <span class="letvar">disjoints</span> a b = (a.sup &lt; b.inf || a.inf &gt; b.sup)
<span class="comment">(* Fonction d'affichage générique qui marchera pour t_intervalle et pour t_prod. *)</span>
<span class="kw">let</span> <span class="letvar">affichage_gen</span> f_inclus f_disjoint f_image i1 i2 =
<span class="kw">let</span> <span class="letvar">s1</span> = f_image i1
<span class="kw">and</span> <span class="letvar">s2</span> = f_image i2 <span class="kw">in</span>
<span class="kw">if</span> f_inclus i1 i2 <span class="kw">then</span> <span class="uident">Printf</span>.printf <span class="string">&quot;%s est inclus dans %s\n&quot;</span> s1 s2
<span class="kw">else</span> <span class="kw">if</span> f_inclus i2 i1 <span class="kw">then</span> <span class="uident">Printf</span>.printf <span class="string">&quot;%s est inclus dans %s\n&quot;</span> s2 s1
<span class="kw">else</span> <span class="kw">if</span> f_disjoint i1 i2 <span class="kw">then</span> <span class="uident">Printf</span>.printf <span class="string">&quot;%s et %s sont disjoints\n&quot;</span> s1 s2
<span class="kw">else</span> <span class="uident">Printf</span>.printf <span class="string">&quot;%s et %s ne sont pas disjoints, ni inclus\n&quot;</span> s1 s2
<span class="comment">(* Afficher_relation pour les intervalles. *)</span>
<span class="kw">let</span> <span class="letvar">afficher_relation</span> = affichage_gen est_inclus disjoints intervalle_image
<span class="comment">(* Produit cartésien *)</span>
<span class="kw">type</span> t_prod =
{ left: t_intervalle ;
right: t_intervalle }
<span class="comment">(* Les trois premières fonctions pour les produits cartésiens. *)</span>
<span class="kw">let</span> <span class="letvar">prod_image</span> p = intervalle_image p.left ^ <span class="string">&quot; x &quot;</span> ^ intervalle_image p.right
<span class="kw">let</span> <span class="letvar">prod_est_inclus</span> a b = est_inclus a.left b.left &amp;&amp; est_inclus a.right b.right
<span class="kw">let</span> <span class="letvar">prod_disjoints</span> a b = disjoints a.left b.left || disjoints a.right b.right
<span class="comment">(* La fonction d'affichage demandée. *)</span>
<span class="kw">let</span> <span class="letvar">prod_afficher_relation</span> = affichage_gen prod_est_inclus prod_disjoints prod_image
<span class="kw">let</span> <span class="letvar">prod</span> a b = { left = a ; right = b }
<span class="comment">(* Test *)</span>
<span class="kw">let</span> () =
<span class="kw">let</span> <span class="letvar">c</span> = { inf = <span class="number">5.0</span> ; sup = <span class="number">10.0</span> }
<span class="kw">and</span> <span class="letvar">d</span> = { inf = <span class="number">7.0</span> ; sup = <span class="number">8.0</span> }
<span class="kw">and</span> <span class="letvar">e</span> = { inf = <span class="number">4.0</span> ; sup = <span class="number">6.0</span> }
<span class="kw">in</span>
afficher_relation c d ;
afficher_relation d c ;
afficher_relation c e ;
afficher_relation d e ;
prod_afficher_relation (prod c c) (prod d d) ;
prod_afficher_relation (prod c d) (prod d c) ;
prod_afficher_relation (prod d c) (prod e c) ;
()
</code></main>
<footer><small class="pcom"><a class="caml_c" href="../../../yversion.html" data-eliom-c-onclick="UJHGP0o9lEGA">Version information</a></small><a target="_blank" href="http://www.insa-toulouse.fr"><img title="INSA Toulouse"
style="width:73px;height:28px;" alt="INSA logo" src="../../../Images/logo-insa-light.jpg" /></a><a target="_blank" href="http://jigsaw.w3.org/css-validator/check/referer"><img title="Validate css stylesheet" style="width:28px;height:32px;"
alt="CSS3 logo" src="../../../Images/css3.png" /></a><a target="_blank" href="http://validator.w3.org/check/referer"><img title="Validate html5 content" style="width:32px;height:32px;" alt="HTML5 logo" src="../../../Images/html5.png" /></a>
</footer>
</body>
</html>

View file

@ -218,7 +218,7 @@ code {
margin-left: 3vw;
margin-top: 20px;
font-family: monospace;
display: inline-block;
display: block;
color: #ffffcc;
tab-size: 2;
@ -240,11 +240,31 @@ code * {
span.comment {
font-style: italic;
color: rgb(128, 139, 150);
white-space: pre;
}
span.kw {
color: rgb(203, 67, 53);
font-weight: bold;
color: rgb(227,99,99);
}
span.type {
color: rgb(203, 128, 53);
}
span.fname {
color: rgb(203, 203, 53);
}
span.string {
color: rgb(53, 203, 128);
}
span.letvar {
color: rgb(128, 203, 53);
}
span.uident{
color: rgb(203, 203, 53);
}

View file

@ -1,81 +0,0 @@
//
// Show/hide some sections by clicking on the title.
//
// Can be replaced by <details>, <summary> once it is supported by most browsers.
//
function saveStatus(id, shown) {
if (typeof(Storage) !== "undefined") {
localStorage.setItem("yfold-shown-" + id, shown) ;
}
}
// record : (when clicked), record the status in local storage
function setStatus(id, shown, content, record) {
// console.log ("setStatus (" + id + ", " + shown + ")") ;
var span = document.getElementById("arrow-" + id) ;
if (shown) {
content.classList.remove("anim-hide") ;
content.classList.remove("hidden") ;
span.innerHTML = "&#x25be;" ;
if (record) { content.classList.add("anim-show") ; }
else { content.classList.add("shown") ; }
}
else {
content.classList.remove("anim-show") ;
content.classList.remove("shown") ;
span.innerHTML = "&#x25b8;" ;
if (record) { content.classList.add("anim-hide") ; }
else { content.classList.add("hidden") ; }
}
if (record) { saveStatus(id, shown) ; }
}
// Invoked at load-time once for every yfold section.
function initYfold(id) {
// console.log ("initYfold (" + id + ")") ;
// console.log ("unknown " + id)
var shown = true ;
var content = document.getElementById("content-" + id) ;
// Sets the state according to local storage or default value.
if (typeof(Storage) !== "undefined") {
var local = localStorage.getItem("yfold-shown-" + id) ;
// console.log ("using storage value = " + local)
if (local === 'true') {
shown = true ;
}
else if (local === 'false') {
shown = false ;
}
else {
// Get default value
var defv = content.getAttribute("data-yfold-default") ;
if (defv === 'hide') {
shown = false ;
}
// console.log ("using default value = " + shown)
}
}
setStatus(id, shown, content, false) ;
}
// Function invoked when the title is clicked.
function toggleYfold(id) {
// console.log ("toggleYfold (" + id + ")") ;
var content = document.getElementById("content-" + id) ;
var expand = content.classList.contains("anim-hide") || content.classList.contains("hidden") ;
setStatus(id, expand, content, true) ;
}