#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Wed May 28 09:28:34 2025

@author: pjoulaud
"""

def applique(fonc,liste):
    reponse =[]
    for elem in liste :
        var = fonc(elem)
        reponse.append(var)
    return reponse

def applique2(fonc,liste):
    return [fonc(elem) for elem in liste]

print(applique(len, ['Joe', 'Max-Bill', 'Alexandra']))
print(applique2(len, ['Joe', 'Max-Bill', 'Alexandra']))
print(applique(lambda x:x*x, [2, 4, 5]))
print(applique2(lambda x:x*x, [2, 4, 5]))

print(applique2(lambda x:x.upper(), ['Joe', 'Max-Bill', 'Alexandra']))

majuscule = lambda l:applique2(lambda x:x.upper(), l)
print(majuscule(['Joe', 'Max-Bill', 'Alexandra']))

reduit = lambda f,x,l:applique(f(x,y), l)
print(reduit(lambda x,y:x+y, '', ['a', 'b', 'c', 'd']))