Écrire une fonction aire
qui calcule l’aire d’un disque en fonction du rayon.
Formule : Aire=π*rayon*rayon
aire ← {⍵ × ○1}
aire 2
6.283185307
⍝ La notation ○1 correspond à Pi
⍝ Version 2
aire ← (○1 × ⊢)
aire 2
6.283185307
Une IA (Intelligence Artificielle) a contaminé votre texte et tous les caractères vont muter ! Exemples :
'abc' contamination 'z'
donne 'zzz'
'_3ebzgh4' contamination '&'
donne '&&&&&&&&'
contamination ← {(⍴⍺) ⍴ ⍵}
'abc' contamination 'z'
zzz
'_3ebzgh4' contamination '&'
&&&&&&&&
⍝ La notation ⍴ signifie "taille de", par exemple ⍴ 'abc' vaut 3
⍝ Mais sert aussi pour redimensionner un objet :
3 ⍴ '*'
***
2 3 ⍴ '*'
***
***
Écrire une fonction qui permet de masquer les chiffres d’un numéro de carte de crédit sauf les 4 derniers. Exemples :
masquer '123456789'
donne #####6789
masquer '4789'
donne 4789
masquer ← {(4 ↓ (⍴⍵) ⍴ '#'),¯4 ↑ ⍵}
masquer '123456789'
#####6789
masquer '789'
789
masquer '4789'
4789
⍝ ↓ pour oublier des éléments et ↑ pour les prendre :
3 ↑ 'bonjour'
bon
¯4 ↑ 'bonjour'
jour
3 ↓ 'bonjour'
jour
'du' {⍵,⍺} 'tor'
'elnopr'[2 1 5 1 6 1 3 4 1 2]
'surgir'{(3↑⍺),¯5↑⍵}'entreprise'
'surgir' {3↑⍺,¯5↑⍵}'entreprise'
'^*' {((⍴⍺)×⍴⍵)⍴⍺} 'sapin'
3 {⎕A[⍺ + ⎕A ⍳ ⍵]} 'BQLFIBABPKBFDBP'
majMin ← {⍵ ≥ 18 : 'Majeur' ⋄ 'Mineur'}
majMin 19
Majeur
majMin 9
Mineur
Un parc d’attraction est accessible aux enfants de 13 ans et plus. Il est également accessible aux enfants de moins de 13 ans s’ils sont accompagnés par un adulte. Écrire une fonction parc qui admet 2 paramètres, l’âge du visiteur et s’il est accompagné ou non d’un adulte (0 ou 1). En sortie on obtient 'Bonne journée' ou 'Entrée interdite'
14 parc 1
donne 'Bonne journée'
4 parc 0
donne 'Entrée interdite'
parc ← {⍺ ≥ 13 ∨ ⍵ : 'Bonne journée' ⋄ 'Entrée interdite'}
14 parc 1
Bonne journée
14 parc 0
Bonne journée
4 parc 0
Entrée interdite
4 parc 1
Bonne journée
Un ami veut trouver un nouveau nom pour son groupe de musique. Il aime les groupes qui utilisent la formule : 'The' + un nom avec la première lettre en majuscule.
groupe 'knife'
donne 'The knife'
Cependant, lorsqu'un nom commence et se termine avec la même lettre, il aime répéter le nom deux fois en les reliant et sans le « The » devant.
groupe 'alaska'
donne 'alaskalaska'
Pouvez-vous écrire une fonction qui prend en paramètre un mot et renvoie le nom du groupe ?
groupe ← {,/(⊃'The ' (¯1↓⍵) [1+⊃⍵ = ¯1↑⍵]) ⍵}
groupe 'knife'
The knife
groupe 'alaska'
alaskalaska
initiales ← {(⊃¨(1,' ' = ⍵) ⊂ ⍵) ∘., '.'}
initiales 'Jean Dujardin'
J. D.
ferme ← 'LVVLCVCCCMCCPVMM'
compte ← {+/ ⍺ ∊ ⍵}
// Nombre de Vaches dans la ferme
ferme compte 'V'
4
// Nombre de pattes des animaux
pattes ← {'224'['CP' ⍳ ⍵]}
pattes 'V'
4
pattes 'P'
2
kill ← {1 ↑¨ (⊃ ,/ ⍺ > 1 ↓¨ ⍵) / ⍵}
5 kill liste
┌─────────┬───────┐
│┌───────┐│┌─────┐│
││Tiffany│││Tyler││
│└───────┘│└─────┘│
└─────────┴───────┘
virus ← {'*' ∊ ⍵ : (⍴⍵) ⍴ '*' ⋄ ⍵}¨
zones ← 'aabc*' 'dde' '*' 'aff' 'ed*'
virus zones
┌─────┬───┬─┬───┬───┐
│*****│dde│*│aff│***│
└─────┴───┴─┴───┴───┘
code ← {⌽¨(' ' ≠ ⍵) ⊆ ⍵}
ph ← 'NOISSIM ETERCES RUOP SUOV'
code ph
┌───────┬───────┬────┬────┐
│MISSION│SECRETE│POUR│VOUS│
└───────┴───────┴────┴────┘
binaire ← {5 < ⍎¨ ⍵}
binaire '8124687574'
1 0 0 0 1 1 1 0 1 0
legumes ← 'AIL' 'ARTICHAUT' 'ASPERGE' 'AUBERGINE' 'AVOCAT' ...
⍴ legumes
63
{('O' ∊¨ ⍵) / ⍵} legumes
┌──────┬───────┬───────┬─────────┐
│AVOCAT│BROCOLI│CAROTTE│... │
└──────┴───────┴───────┴─────────┘
{(⊃,/ ('C' = 1 ↑¨ ⍵) ∧ 10 ≤ ⍴¨ ⍵) / ⍵} legumes
┌──────────┬──────────┐
│CHAMPIGNON│CITROUILLE│
└──────────┴──────────┘
{(⊃,/ 'E' = ¯1 ↑¨ ⍵) / ⍵} legumes
┌───────┬─────────┬─────┬─────────┐
│ASPERGE│AUBERGINE│BETTE│... │
└───────┴─────────┴─────┴─────────┘
Écrire une fonction mini qui admet une liste de mots en paramètre et renvoie le mot ayant le moins de lettres (on supposera qu’il n’y en a qu’un).
mots ← 'bonjour' 'salut' 'bye' 'coucou'
mini ← {⍵[⊃ ⍋ ⍴¨ ⍵]}
mini mots
┌───┐
│bye│
└───┘
adn ← {∧/ ⍵ ∊ 'ACTG': 'Brin ADN' ⋄ 'Pas ADN'}
brin1 ← 'ACCCCTGTGTGXAC'
brin2 ← 'ACCCCTGTGTGAC'
adn brin1
Pas ADN
adn brin2
Brin ADN
route ← '==000==0==00=000==00=0000===00=====000===00=000====0=0====00===='
vehicules ← {('=' ≠ ⍵) ⊆ ⍵}
vehicules route
┌───┬─┬──┬───┬──┬────┬──┬───┬──┬───┬─┬─┬──┐
│000│0│00│000│00│0000│00│000│00│000│0│0│00│
└───┴─┴──┴───┴──┴────┴──┴───┴──┴───┴─┴─┴──┘
nb_vehicules ← ⍴∘vehicules
nb_vehicules route
13
nb_voitures ← {+/ 3 > ⍴¨ vehicules ⍵}
nb_voitures route
┌─┐
│8│
└─┘
distances ← {('0' ≠ ⍵) ⊆ ⍵}
distances route
┌──┬──┬──┬─┬──┬─┬───┬─────┬───┬─┬────┬─┬────┬────┐
│==│==│==│=│==│=│===│=====│===│=│====│=│====│====│
└──┴──┴──┴─┴──┴─┴───┴─────┴───┴─┴────┴─┴────┴────┘
danger ← {+/ 1 = ⍴¨ distances ⍵}
danger route
┌─┐
│4│
└─┘
simple ← {'cv'[1 + 3 > ⍴¨ vehicules ⍵]}
simple route
cvvcvcvcvcvvv
)copy dfns.dws cmpx
HMS ← 3 44 29
cmpx '(3600×HMS[1]) + (60×HMS[2]) + HMS[3]' '+/ 3600 60 1 × HMS' '3600 60 1 +.× HMS' '60⊥HMS'
(3600×HMS[1]) + (60×HMS[2]) + HMS[3] → 1.1E¯6 | 0% ⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕
+/ 3600 60 1 × HMS → 3.9E¯7 | -66% ⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕
3600 60 1 +.× HMS → 3.3E¯7 | -71% ⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕
60⊥HMS → 1.1E¯7 | -91% ⎕⎕⎕⎕