Exercices ASP.NET
Série 1
- Créer un endpoint
/pair
qui retourne tous les entiers pairs entre 0 et 20- Par exemple,
GET /pair
retourne[0, 2, 4, 6, 8, 10, ..., 20]
- Par exemple,
- Créer un endpoint
/pair/{nb}
qui retourne tous les entiers pairs entre 0 et nb- Par exemple,
GET /pair/10
retourne[0, 2, 4, 6, 8, 10]
- Par exemple,
- Créer un endpoint
/impair/{nb}
qui retourne tous les entiers impairs entre 0 et nb- Par exemple,
GET /impair/10
retourne[1, 3, 5, 7, 9]
- Par exemple,
- Créer un endpoint
/consonnes/{word}
qui retourne la liste des consonnes d'un mot- Par exemple,
GET /consonnes/hello
retourne["h", "l", "l"]
- Par exemple,
- Créer un endpoint
/longueur/{word}
qui retourne longueurs de la chaîne de caractères word- Par exemple,
GET /longueur/hello
retourne5
- Par exemple,
Série 2
- Créer un endpoint
/palindrome/{word}
qui retourneEst un palindrome
siword
est un palindrome, sinonN'est pas un palindrome
- Par exemple,
GET /palindrome/toto
retourneN'est pas un palindrome
, etGET /palindrome/totot
retourneEst un palindrome
- Par exemple,
- Créer un endpoint
/schtroumpf/{nb1}/{nb2}
qui retourne le schtroumpf d'un tableau denb1
éléments aléatoires et d'un tableau denb2
éléments aléatoires. Les valeurs des deux tableaux sont comprises entre 1 et 12- voir définition dans les exos C#
- Par exemple,
GET /schtroumpf/4/2
avec les tableaux aléatoire[4, 8, 7, 12]
et[3, 6]
, le résultat sera279
- Créer un endpoint
/notes
qui génère 10 notes aléatoires et renvoie un json listant les notes, la moyenne et le nombre de notes supérieures à la moyenne.- Exemple
- Créer un endpoint
/notes/{nb}
qui génèrenb
notes aléatoires et renvoie un json listant les notes, la moyenne et le nombre de notes supérieurs à la moyenne.- Exemple:
/notes/10
- Exemple:
Solutions
code
using System.Reflection.Metadata.Ecma335;
bool IsPalindromeAlgo(string input)
{
for (int i = 0; i < input.Length / 2; i++)
{
if (input[i] != input[input.Length - i - 1])
{
return false;
}
}
return true;
}
bool IsPalindromeEz(string input) => string.Join("", input.Reverse()) == input;
List<int> generateRandomIntList(int nb)
{
List<int> items = [];
Random r = new();
for (int i = 0; i < nb; i++)
{
items.Add(r.Next(1, 12));
}
return items;
}
int ComputeSchtroumpf(List<int> items1, List<int> items2)
{
int result = 0;
foreach (var item1 in items1)
{
foreach (var item2 in items2)
{
result += item1 * item2;
}
}
return result;
}
int ComputeRandomSchtroumpf(int nb1, int nb2)
{
Random r = new();
List<int> items1 = generateRandomIntList(nb1);
List<int> items2 = generateRandomIntList(nb2);
return ComputeSchtroumpf(items1, items2);
}
int ComputeExampleSchtroumpf()
{
return ComputeSchtroumpf([4, 8, 7, 12], [3, 6]);
}
GradeResponse GenerateGradeResponse(int n = 10)
{
var rng = new Random();
List<int> notes = Enumerable.Range(1, n).Select(_ => rng.Next(20)).ToList();
var avg = notes.Average();
int nbSup = notes.Where(note => note > avg).Count();
return new GradeResponse(notes, avg, nbSup);
}
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapGet("/pair", () => Enumerable.Range(0, 11).Select(n => n * 2));
app.MapGet("/pair/{nb}", (int nb) => Enumerable.Range(0, nb + 1).Select(n => n % 2 == 0));
app.MapGet("/impair/{nb}", (int nb) => Enumerable.Range(0, nb + 1).Select(n => n % 2 != 0));
app.MapGet("/consonnes/{mot}", (string mot) => mot.ToLower().Where(c => !"aiueoy".Contains(c)));
app.MapGet("/longueur/{word}", (string word) => word.Length);
app.MapGet("/palindrome/{word}", (string word) => IsPalindromeAlgo(word) ? "Est un palindrome" : "n'est pas un palindrome");
app.MapGet("/ez/palindrome/{word}", (string word) => IsPalindromeEz(word) ? "Est un palindrome" : "n'est pas un palindrome");
app.MapGet("/schtroumpf/{nb1}/{nb2}", (int nb1, int nb2) => ComputeRandomSchtroumpf(nb1, nb2));
app.MapGet("/example/schtroumpf/", () => ComputeExampleSchtroumpf());
app.MapGet("/notes", GenerateGradeResponse);
app.MapGet("/notes/{nb}", (int nb) => GenerateGradeResponse(nb));
app.Run();
record GradeResponse(List<int> Notes, double Moyenne, int NbNotesSupMoyenne);
appels de test
@base_url=http://localhost:5286
###
{{base_url}}/pair
###
{{base_url}}/pair/5
###
{{base_url}}/consonnes/hello
###
{{base_url}}/consonnes/aaabb
###
{{base_url}}/palindrome/elle
###
{{base_url}}/palindrome/tintin
###
{{base_url}}/ez/palindrome/elle
###
{{base_url}}/ez/palindrome/tintin
###
{{base_url}}/example/schtroumpf/
###
{{base_url}}/schtroumpf/5/2
###
{{base_url}}/notes
###
{{base_url}}/notes/7