Écrire une fonction en PHP, isAnagram, qui prend en entrée deux chaînes de caractères et retourne true si les deux chaînes sont des anagrammes l'une de l'autre, et false sinon. Deux chaînes sont considérées comme des anagrammes si elles contiennent les mêmes caractères avec la même fréquence.
Explication du test :
-La fonction isAnagram reçoit deux chaînes de caractères.
-On ne doit pas se soucier de la casse des mots
-On doit garder uniquement les chiffres et les lettres dans les mots (aucune ponctuation, aucun caractère spécial)
-Si une chaine de caractères contient un espace au milieu du mot, il faut retourner false
-Il faut supprimer les espace au début et en fin de chaine
-On essaye d'optimiser pour limiter les boucles
La fonction vérifie si les deux chaînes contiennent les mêmes caractères avec la même fréquence.
La fonction retourne true si les chaînes sont des anagrammes, false sinon.
function isAnagram($str1, $str2) {
return false
}
<?php
use PHPUnit\Framework\TestCase;
class ExampleTest extends TestCase
{
public function testSimple() {
echo "Test simple";
$this->assertEquals(true, isAnagram("listen", "silent"));
}
public function testMajuscule() {
echo "Test Majuscule";
$this->assertEquals(true, isAnagram("listen", "Silent"));
}
public function testPonctuation() {
echo "Test Majuscule";
$this->assertEquals(true, isAnagram("listen", "silent!"));
}
public function testEspaceMilieu() {
echo "Test Espace Milieu";
$this->assertEquals(false, isAnagram("listen", "sil ent"));
}
public function testChiffre() {
echo "Test Chiffre";
$this->assertEquals(true, isAnagram("listen4", "silent4"));
}
public function testEspaceFin() {
echo "Test Espace Fin";
$this->assertEquals(true, isAnagram("listen", " silent "));
}
}
Votre tâche consiste à implémenter une fonction en PHP qui analyse un texte pour trouver la fréquence des mots et renvoie les N mots les plus fréquents dans le texte.
Paramètres :
La fonction prend en entrée deux paramètres :
$text : une chaîne de caractères représentant le texte à analyser.
$n : un entier représentant le nombre de mots les plus fréquents à retourner.
Retour :
La fonction doit retourner un tableau associatif où les clés sont les mots les plus fréquents et les valeurs sont leurs fréquences respectives.
Contraintes :
-Ignorer la casse (majuscule/minuscule) des mots.
-Si le mots est inférieur ou égale à 3 lettres, on ne le prend pas en compte
-Ignorer les signes de ponctuation (virgule, point d'exclamation, point d'intérogation exclusivement)
-Ne pas utiliser la fonctions PHP intégrées array_count_values.
function getTopNFrequentWords($text, $n) {
return 0;
}
<?php
use PHPUnit\Framework\TestCase;
class ExampleTest extends TestCase
{
public function testSimple() {
echo "Test simple";
$this->assertEquals([
"bateau" => 1,
"bleu" => 2],
getTopNFrequentWords("le bateau de mon père est bleu bleu comme l'océan", 2));
}
public function testDoubleEspace() {
echo "Test Double espace";
$this->assertEquals([
"bateau" => 1,
"bleu" => 2],
getTopNFrequentWords("le bateau de mon père est bleu bleu comme l'océan", 2));
}
public function testPonctuation() {
echo "Test ponctuation";
$this->assertEquals([
"bateau" => 1,
"bleu" => 2],
getTopNFrequentWords("le bateau, de mon, père est bleu, bleu comme l'océan ! tu es sur ?", 2));
}
public function testMajuscule() {
echo "Test Majuscule";
$this->assertEquals([
"bateau" => 1,
"bleu" => 2],
getTopNFrequentWords("le bateau de mon père est Bleu bleu comme l'océan", 2));
}
}
function closestToZero(array $ints) { return 0; } ?>
- function closestToZero(array $ints) {
// ici vous pouvez mettre votre code- return 0;
- }
- ?>
<?php use PHPUnit\Framework\TestCase; class ExampleTest extends TestCase { public function testSimple() { echo "Test [7, 5, 9, 1, 4]"; $this->assertEquals(1, closestToZero([7, 5, 9, 1, 4])); } public function testNegative() { echo "Test [7,-4, -3, -12, 5, 9, -2, 4]"; $this->assertEquals(-2, closestToZero([7,-4, -3, -12, 5, 9, -2, 4])); } public function testSame() { echo "Test [-5, -5]"; $this->assertEquals(-5, closestToZero([-5, -5])); } public function testWithZero() { echo "Test [-5, 0, 1, 5]"; $this->assertEquals(0, closestToZero([-5, 0, 1, 5])); } public function testSameDistance() { echo "Test [-5, -1, 1, 5]"; $this->assertEquals(1, closestToZero([-5, -1, 1, 5])); } public function testEmpty() { echo "Test []"; $this->assertEquals(0, closestToZero([])); } }
- <?php
- use PHPUnit\Framework\TestCase;
- class ExampleTest extends TestCase
- {
- public function testSimple() {
- echo "Test [7, 5, 9, 1, 4]";
- $this->assertEquals(1, closestToZero([7, 5, 9, 1, 4]));
- }
- public function testNegative() {
- echo "Test [7,-4, -3, -12, 5, 9, -2, 4]";
- $this->assertEquals(-2, closestToZero([7,-4, -3, -12, 5, 9, -2, 4]));
- }
- public function testSame() {
- echo "Test [-5, -5]";
- $this->assertEquals(-5, closestToZero([-5, -5]));
- }
public function testEmpty() {echo "Test []";$this->assertEquals(0, closestToZero([]));}public function testWithZero() {- public function testWithZero() {
- echo "Test [-5, 0, 1, 5]";
- $this->assertEquals(0, closestToZero([-5, 0, 1, 5]));
- }
- public function testSameDistance() {
- echo "Test [-5, -1, 1, 5]";
- $this->assertEquals(1, closestToZero([-5, -1, 1, 5]));
- }
- public function testEmpty() {
- echo "Test []";
- $this->assertEquals(0, closestToZero([]));
- }
- }
Vous travaillez pour un magasin qui souhaite offrir une réduction ($discount) sur le produit le plus cher acheté par un client donné pendant la période des soldes. Un seul produit peut bénéficier de la réduction.
Le responsable du magasin vous demande de développer la fonction calculateTotalPrice.
Cette fonction :
-Prend en paramètres la liste de prix des produits achetés par le client et le pourcentage de réduction ($discount).
-Retourne le prix de vente total (arrondi à l'entier inférieur si le total ne tombe pas rond).
Contraintes:
0 ≤ $discount ≤ 100
0 < prix d'un produit < 100000
0 < nombre de produits < 100
<?php
function calculateTotalPrice(array $prices, $discount) {
return 1;
}
?>
<?php
use PHPUnit\Framework\TestCase;
class ExampleTest extends TestCase
{
public function testSimple() {
$this->assertEquals(28, calculateTotalPrice([10,20], 10));
}
public function testSameMaxPrice() {
$this->assertEquals(48, calculateTotalPrice([10, 20, 20], 10));
}
public function testRound() {
$this->assertEquals(26, calculateTotalPrice([10, 18], 10));
}
public function testRoundSup() {
$this->assertEquals(32, calculateTotalPrice([10, 18, 5.9], 10));
}
public function testFree() {
$this->assertEquals(15, calculateTotalPrice([10, 20, 5.9], 100));
}
public function testNoDiscount() {
$this->assertEquals(30, calculateTotalPrice([10, 20], 0));
}
}
Implémentez la fonction closestToZero pour renvoyer l'entier du tableau $ints le plus proche de zéro.
S'il y a deux entiers tout aussi proches de zéro, considérez l'entier positif comme étant le plus proche de zéro (par exemple si $ints contient -5 et 5, retournez 5).
Si $ints est vide, retournez 0 (zéro).
S'il y a un zero, dans la liste, retournez zero
Données : les entiers dans $ints ont des valeurs allant de -2147483647 à 2147483647.
function closestToZero(array $ints) {
// ici vous pouvez mettre votre code
return 0;
}
?>
<?php
use PHPUnit\Framework\TestCase;
class ExampleTest extends TestCase
{
public function testSimple() {
echo "Test [7, 5, 9, 1, 4]";
$this->assertEquals(1, closestToZero([7, 5, 9, 1, 4]));
}
public function testNegative() {
echo "Test [7,-4, -3, -12, 5, 9, -2, 4]";
$this->assertEquals(-2, closestToZero([7,-4, -3, -12, 5, 9, -2, 4]));
}
public function testSame() {
echo "Test [-5, -5]";
$this->assertEquals(-5, closestToZero([-5, -5]));
}
public function testEmpty() {
echo "Test []";
$this->assertEquals(0, closestToZero([]));
}
public function testWithZero() {
echo "Test [-5, 0, 1, 5]";
$this->assertEquals(0, closestToZero([-5, 0, 1, 5]));
}
public function testSameDistance() {
echo "Test [-5, -1, 1, 5]";
$this->assertEquals(1, closestToZero([-5, -1, 1, 5]));
}
}