Initial commit

This commit is contained in:
2024-12-18 10:13:48 +01:00
commit 8bc7b2bf58
31 changed files with 476 additions and 0 deletions

2
.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
.idea
.idea/

45
TD/.Rhistory Normal file
View File

@@ -0,0 +1,45 @@
print("Hello World")
x+2
print(x+2)
x+2
(5^2+5)/3
sum(log(32,2), 8^4, 4+5, 12/3)
sum(50, 3, 5)
log10(90+5*2)
variable2
variable2 + 2
mean(variable2)
variable2 <- c(12, 1, 15, 3, 20, 6, 11)
variable2
mean(variable2)
variable2 + 2
variable2 <- c(12, 1, 15, 3, 20, 6, 11)
variable2
mean(variable2)
variable2 + 2
x = c(1, 3, 5, 7, 9)
y = c(2, 3, 5, 7, 11, 13)
z = c(9, 3, 2, 5, 9, 2, 3, 9, 1)
x + 2
y * 3
length(x)
x + y
sum(x > 5)
sum(x[x > 5])
sum(x > 5 | x < 3)
y[3]
y[-3]
y[x]
(y > 7)
y[y > 7]
sort(z)
sort(z, dec = TRUE)
rev(z)
order(z)
unique(z)
duplicated(z)
table(z)
rep(z, 3)
vector1 <- c(1, 2, 3)
vector2 <- c(4, 5, 6)
vector3 <- c(vector1[1:2], vector2, vector1[3:length(vector1)])

View File

@@ -0,0 +1,9 @@
{
"sortOrder": [
{
"columnIndex": 2,
"ascending": true
}
],
"path": "C:/Users/BreizhHardware/Nextcloud/Programation/R/TD"
}

View File

@@ -0,0 +1,3 @@
{
"activeTab": 2
}

View File

@@ -0,0 +1,14 @@
{
"left": {
"splitterpos": 393,
"topwindowstate": "NORMAL",
"panelheight": 945,
"windowheight": 983
},
"right": {
"splitterpos": 589,
"topwindowstate": "NORMAL",
"panelheight": 945,
"windowheight": 983
}
}

View File

@@ -0,0 +1,5 @@
{
"TabSet1": 0,
"TabSet2": 0,
"TabZoom": {}
}

View File

@@ -0,0 +1,5 @@

View File

@@ -0,0 +1 @@
{"active_set":"","sets":[]}

View File

@@ -0,0 +1,26 @@
{
"id": "B62E70DA",
"path": "C:/Users/BreizhHardware/Nextcloud/Programation/R/TD/Exo3.R",
"project_path": "Exo3.R",
"type": "r_source",
"hash": "340809373",
"contents": "",
"dirty": false,
"created": 1733479137294.0,
"source_on_save": false,
"relative_order": 3,
"properties": {
"source_window_id": "",
"Source": "Source",
"cursorPosition": "0,0",
"scrollLine": "0"
},
"folds": "",
"lastKnownWriteTime": 1733479598,
"encoding": "UTF-8",
"collab_server": "",
"source_window": "",
"last_content_update": 1733479598,
"read_only": false,
"read_only_alternatives": []
}

View File

@@ -0,0 +1,14 @@
# Crée des vecteurs
# y0 constitué de la suite des entiers de 0 à 10 par pas de 2
y0 <- seq(0, 10, by=2)
# y1 constitué de tous les entiers pairs entre 1 et 18
y1 <- seq(2, 18, by=2)
# y2 constitué de 20 fois de suite la valeur 4
y2 <- rep(4, 20)
# y3 constitué de 20 nombres entre 0 et 10
y3 <- runif(20, 0, 10)
# Extraire de y3
# le troisième élément
y33 <- y3[2]
# tous les éléments sauf le troisième

View File

@@ -0,0 +1,26 @@
{
"id": "C229FEB4",
"path": "C:/Users/BreizhHardware/Nextcloud/Programation/R/TD/Exo2.R",
"project_path": "Exo2.R",
"type": "r_source",
"hash": "3327678100",
"contents": "",
"dirty": false,
"created": 1733478990873.0,
"source_on_save": false,
"relative_order": 2,
"properties": {
"source_window_id": "",
"Source": "Source",
"cursorPosition": "3,63",
"scrollLine": "0"
},
"folds": "",
"lastKnownWriteTime": 1733479100,
"encoding": "UTF-8",
"collab_server": "",
"source_window": "",
"last_content_update": 1733479100521,
"read_only": false,
"read_only_alternatives": []
}

View File

@@ -0,0 +1,4 @@
vector1 <- c(1, 2, 3)
vector2 <- c(4, 5, 6)
vector3 <- c(vector1[1:2], vector2, vector1[3:length(vector1)])

View File

@@ -0,0 +1,26 @@
{
"id": "DA0B538E",
"path": "C:/Users/BreizhHardware/Nextcloud/Programation/R/TD/Exo1.R",
"project_path": "Exo1.R",
"type": "r_source",
"hash": "1460566234",
"contents": "",
"dirty": false,
"created": 1733478588935.0,
"source_on_save": false,
"relative_order": 1,
"properties": {
"source_window_id": "",
"Source": "Source",
"cursorPosition": "19,8",
"scrollLine": "0"
},
"folds": "",
"lastKnownWriteTime": 1733478955,
"encoding": "UTF-8",
"collab_server": "",
"source_window": "",
"last_content_update": 1733478955036,
"read_only": false,
"read_only_alternatives": []
}

View File

@@ -0,0 +1,24 @@
x = c(1, 3, 5, 7, 9)
y = c(2, 3, 5, 7, 11, 13)
z = c(9, 3, 2, 5, 9, 2, 3, 9, 1)
x + 2
y * 3
length(x)
x + y
sum(x > 5)
sum(x[x > 5])
sum(x > 5 | x < 3)
y[3]
y[-3]
y[x]
(y > 7)
y[y > 7]
sort(z)
sort(z, dec = TRUE)
rev(z)
order(z)
unique(z)
duplicated(z)
table(z)
rep(z, 3)

View File

@@ -0,0 +1,6 @@
{
"source_window_id": "",
"Source": "Source",
"cursorPosition": "0,0",
"scrollLine": "0"
}

View File

@@ -0,0 +1,6 @@
{
"source_window_id": "",
"Source": "Source",
"cursorPosition": "3,63",
"scrollLine": "0"
}

View File

@@ -0,0 +1,6 @@
{
"source_window_id": "",
"Source": "Source",
"cursorPosition": "19,8",
"scrollLine": "0"
}

View File

@@ -0,0 +1,3 @@
C%3A%2FUsers%2FBreizhHardware%2FNextcloud%2FProgramation%2FR%2FTD%2FExo1.R="74FBB217"
C%3A%2FUsers%2FBreizhHardware%2FNextcloud%2FProgramation%2FR%2FTD%2FExo2.R="57E49702"
C%3A%2FUsers%2FBreizhHardware%2FNextcloud%2FProgramation%2FR%2FTD%2FExo3.R="1489AED4"

24
TD/Exo1.R Normal file
View File

@@ -0,0 +1,24 @@
x = c(1, 3, 5, 7, 9)
y = c(2, 3, 5, 7, 11, 13)
z = c(9, 3, 2, 5, 9, 2, 3, 9, 1)
x + 2
y * 3
length(x)
x + y
sum(x > 5)
sum(x[x > 5])
sum(x > 5 | x < 3)
y[3]
y[-3]
y[x]
(y > 7)
y[y > 7]
sort(z)
sort(z, dec = TRUE)
rev(z)
order(z)
unique(z)
duplicated(z)
table(z)
rep(z, 3)

4
TD/Exo2.R Normal file
View File

@@ -0,0 +1,4 @@
vector1 <- c(1, 2, 3)
vector2 <- c(4, 5, 6)
vector3 <- c(vector1[1:2], vector2, vector1[3:length(vector1)])

39
TD/Exo3.R Normal file
View File

@@ -0,0 +1,39 @@
# Crée des vecteurs
# y0 constitué de la suite des entiers de 0 à 10 par pas de 2
y0 <- seq(0, 10, by=2)
# y1 constitué de tous les entiers pairs entre 1 et 18
y1 <- seq(2, 18, by=2)
# y2 constitué de 20 fois de suite la valeur 4
y2 <- rep(4, 20)
# y3 constitué de 20 nombres entre 0 et 10
y3 <- runif(20, 0, 10)
# Extraire de y3
# le troisième élément
y33 <- y3[3]
# tous les éléments sauf le troisième
y34 <- y3[-3]
# Comparer les commandes suivantes
matrix(y3, nrow = 2)
matrix(y3, byrow = TRUE)
# Construire une matrice A comportant quatre lignes et trois colonnes remplies par lignes
# successives avec les éléments du vecteur 1:12
A <- matrix(1:12, nrow = 4, byrow = TRUE)
# Construire une matrice B comportant quatre lignes et trois colonnes remplies par
# colonnes successives avec les éléments du vecteur 1:12
B <- matrix(1:12, nrow = 4, byrow = FALSE)
# Extraire lélément situé en deuxième ligne et troisième colonne de A
A[2, 3]
# Extraire la première colonne de A, puis la deuxième ligne de A.
A[, 1]
A[2, ]
# Construire une matrice C constituée des lignes 1 et 4 de A.
C <- A[c(1, 4), ]
print(A)
print(C)

3
TD/Exo4.R Normal file
View File

@@ -0,0 +1,3 @@
# Construire une matrice comportant 9 lignes et 9 colonnes avec des 0 sur la diagonale et des 1
# partout ailleurs (on pourra utiliser la commande diag)
D <- matrix(1, nrow = 9, ncol = 9)

23
TD/Exo5.R Normal file
View File

@@ -0,0 +1,23 @@
# Créer un vecteur x = (x1, . . . , x11) contenant les réels compris entre 0 et 1 par pas de 0.1
x <- seq(0, 1, by=0.1)
# Afficher la longueur de x
print(length(x))
# En utilisant les opérations vectorielles, créer un vecteur y = 4x(1 x)
y <- 4*x*(1-x)
# Tracer la courbe rejoignant les points (x1, y1), . . . , (x11, y11) avec la commande plot
plot(x, y)
# Calculer le maximum des y1, . . . , y11
print(max(y))
# En quel point le maximum est-il atteint ?
print(x[which.max(y)])
# Tracer la courbe de la fonction f (x) = 4x2(1 x), x
# ∈ [2, 1], en rouge
x <- seq(-2, 1, by=0.1)
y <- 4*x^2*(1-x)
plot(x, y, col="red")

20
TD/Exo6.R Normal file
View File

@@ -0,0 +1,20 @@
# Utiliser R pour donner les valeurs numériques attendues :
# Combien y-a-t-il de carrés (4 cartes de même valeur) dans un jeu de 32 cartes ?
nb_carres <- 8
nb_carres
# Combien danagrammes peut-on faire avec le mot "dinosaure" ?
anagrammes <- factorial(9) / factorial(2)
anagrammes
# Combien de chances a-t-on de gagner le super jackpot à leuromillion ? (donc davoir 5
# bons numéros parmi 49, et 2 bons numéros étoilés parmi 10)
chances <- choose(49, 5) * choose(10, 2)
chances
# Chaque pièce dun nouveau jeu de domino est de la forme : a b avec (a, b) ∈ {0, . . . , 9}2
# en sachant quun domino reste le même si on le tourne à 180 degrés (par exemple, 8 = 8
# est un, et un seul domino). Déterminer le nombre de pièces différentes que contient un
# jeu complet de dominos
nb_dominos <- choose(10, 2) + 10
nb_dominos

BIN
TD/Rplots.pdf Normal file

Binary file not shown.

13
TD/TD.Rproj Normal file
View File

@@ -0,0 +1,13 @@
Version: 1.0
RestoreWorkspace: Default
SaveWorkspace: Default
AlwaysSaveHistory: Default
EnableCodeIndexing: Yes
UseSpacesForTab: Yes
NumSpacesForTab: 2
Encoding: UTF-8
RnwWeave: Sweave
LaTeX: pdfLaTeX

17
TD1/Exercice39.R Normal file
View File

@@ -0,0 +1,17 @@
# Question a
# Ici on cherche P(X <= 30) via une loi binomial avec 70 et 0.4
sum(dbinom(x=0:30,size=70,prob=0.4))
# Question b
# Ici on cherche P(X) >= 0.9 via la même loi binomial qu'avant
i <- 0
j <- 30
while (i < 0.9) {
i <- sum(dbinom(x=0:j, size=70, prob=0.4))
j <- j + 1
}
print(i)
print(j - 1)
# Bonus
print(dbinom(x=0:70, size=70, prob=0.4))

16
TD1/Exercice51.R Normal file
View File

@@ -0,0 +1,16 @@
# Dans une station-service, la demande hebdomadaire en essence, en milliers de litres, est
# une variable aléatoire X de densité f (x) = c(1 x)^4 1[0,1].
# a) Déterminer c
f <- function(x) {(1-x)^4}
result <- integrate(f, lower = 0, upper = 1)
# Je détermine C car intérale de c*f(x) = 1
c <- 1 / result$value
print(c)
# b) La station est réapprovisionnée chaque lundi à 20h. Quelle doit être la capacité du réservoir
# dessence pour que la probabilité dépuiser ce réservoir soit inférieure à 10^5 ?
F <- function(x) {
integrate(function(t) c * (1 - t)^4, lower = 0, upper = x)$value
}
cible <- 1 - 10^(-5)
capacite <- uniroot(function(x) F(x) - cible, lower = 0, upper = 1)$root
print(capacite * 1000)

17
TD1/Exo1.R Normal file
View File

@@ -0,0 +1,17 @@
# Une course oppose 20 concurrents, dont Émile
# a) Combien y-a-t-il de podiums possibles ?
podiums_total <- factorial(20) / factorial(20 - 3)
podiums_total
# b) Combien y-a-t-il de podiums possibles où Émile est premier ?
emile_premier <- 1 * (factorial(19) / factorial(17))
emile_premier
# c) Combien y-a-t-il de podiums possibles dont Émile fait partie ?
emile_podium <- 3 * (factorial(19) / factorial(17))
emile_podium
# d) On souhaite récompenser les 3 premiers en leur offrant un prix identique à chacun. Combien
# y-a-t-il de distributions de récompenses possibles ?
distributions <- choose(20, 3)
distributions

View File

@@ -0,0 +1,75 @@
simulate_guard <- function(input) {
# Transform the input into a matrix
rows <- unlist(strsplit(input, "\n"))
grid <- do.call(rbind, lapply(rows, function(row) unlist(strsplit(row, NULL))))
# Find the starting position and initial direction
start_pos <- which(grid %in% c("^", ">", "v", "<"), arr.ind = TRUE)
if (length(start_pos) == 0) {
stop("No starting position found in the input grid.")
}
if (is.vector(start_pos)) {
start_pos <- matrix(start_pos, nrow = 1)
}
directions <- list("^" = c(-1, 0), ">" = c(0, 1), "v" = c(1, 0), "<" = c(0, -1))
turns <- c("^" = ">", ">" = "v", "v" = "<", "<" = "^")
direction <- grid[start_pos[1, 1], start_pos[1, 2]]
visited <- list() # List of visited positions
# Initialize the position
x <- start_pos[1, 1]
print(x)
y <- start_pos[1, 2]
# Function to check the bounds of the grid
in_bounds <- function(x, y, grid) {
x > 0 && x <= nrow(grid) && y > 0 && y <= ncol(grid)
}
# Mark the initial position as visited
visited[[paste(x, y, sep = ",")]] <- TRUE
# Simulate the movement
repeat {
# Calculate the next position in the current direction
dx <- directions[[direction]][1]
dy <- directions[[direction]][2]
nx <- x + dx
ny <- y + dy
# If out of bounds or obstacle ahead, turn right
if (!in_bounds(nx, ny, grid) || grid[nx, ny] == "#") {
direction <- turns[direction]
} else {
# Move forward
x <- nx
y <- ny
# Mark the new position as visited
visited[[paste(x, y, sep = ",")]] <- TRUE
# If out of bounds, stop the simulation
if (!in_bounds(x, y, grid)) break
}
}
# Return the number of distinct positions visited
length(visited)
}
# Input as a single string (provided)
input <- "....#.....
.........#
..........
..#.......
.......#..
..........
.#..^.....
........#.
#.........
......#..."
# Call the function
distinct_positions <- simulate_guard(input)
cat("Distinct positions visited:", distinct_positions, "\n")