From 51cdedeae1b45fcba0956be3522ae161b54883ee Mon Sep 17 00:00:00 2001 From: Louis Date: Fri, 29 Sep 2023 14:33:01 +0200 Subject: [PATCH] vault backup: 2023-09-29 14:33:01 --- .obsidian/workspace.json | 8 ++++---- Algo/Séminaire/Exercices seminaire.md | 29 +++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 4 deletions(-) diff --git a/.obsidian/workspace.json b/.obsidian/workspace.json index 46c08a9..abffc7b 100644 --- a/.obsidian/workspace.json +++ b/.obsidian/workspace.json @@ -13,7 +13,7 @@ "state": { "type": "markdown", "state": { - "file": "Algo/CM/CM du 27 septembre.md", + "file": "Algo/Séminaire/Exercices seminaire.md", "mode": "source", "source": false } @@ -85,7 +85,7 @@ "state": { "type": "backlink", "state": { - "file": "Algo/CM/CM du 27 septembre.md", + "file": "Algo/Séminaire/Exercices seminaire.md", "collapseAll": false, "extraContext": false, "sortOrder": "alphabetical", @@ -102,7 +102,7 @@ "state": { "type": "outgoing-link", "state": { - "file": "Algo/CM/CM du 27 septembre.md", + "file": "Algo/Séminaire/Exercices seminaire.md", "linksCollapsed": false, "unlinkedCollapsed": true } @@ -125,7 +125,7 @@ "state": { "type": "outline", "state": { - "file": "Algo/CM/CM du 27 septembre.md" + "file": "Algo/Séminaire/Exercices seminaire.md" } } }, diff --git a/Algo/Séminaire/Exercices seminaire.md b/Algo/Séminaire/Exercices seminaire.md index 72be35c..6b70fc8 100644 --- a/Algo/Séminaire/Exercices seminaire.md +++ b/Algo/Séminaire/Exercices seminaire.md @@ -476,3 +476,32 @@ let prime n = in (n = 2) || (n mod 2 = 1 and check n 3) ``` +## Hanoi +```Ocaml +(* displays moves: source -> destination *) + +let move source destination = +  print_int source ; +  print_string " -> " ; +  print_int destination ; +  print_newline() +;; + +let hanoi n = +  let rec play n source auxiliary destination = +    if n = 1 then +      move source destination +    else +    begin +      play (n-1) source destination auxiliary; +      move source destination; +      play (n-1) auxiliary source destination +    end +  in +  if n < 0 then +    invalid_arg "Hanoi: number of disks invalid" +  else +    play n 1 2 3 (* Appel initial avec les piquets source, auxiliaire et destination *) +;; +hanoi 3;; (* Pour déplacer 3 disques de la tige 1 à la tige 3 *) +```