Section 13.2.5 : Livecodes et challenges
🎯 Objectif pédagogique
S'entraîner à résoudre des problèmes algorithmiques en Ruby dans un format livecode. Ces exercices développent la pensée logique et préparent aux entretiens techniques.
La méthodologie UPER
- →Understand : reformulez le problème, identifiez inputs/outputs/cas limites
- →Plan : pseudo-code en français
- →Execute : traduire en Ruby
- →Review : tester et optimiser
Challenge : Palindrome
def palindrome?(mot)
cleaned = mot.downcase.gsub(/[^a-z0-9]/, '')
cleaned == cleaned.reverse
end
puts palindrome?('kayak') # true
puts palindrome?('hello') # false
Challenge : Anagrammes
def anagrammes?(mot1, mot2)
normaliser = ->(m) { m.downcase.delete(' ').chars.sort }
normaliser.call(mot1) == normaliser.call(mot2)
end
puts anagrammes?('listen', 'silent') # true
Challenge : Chiffre de César
def caesar_cipher(text, shift)
text.chars.map do |char|
if char.match?(/[a-z]/)
((char.ord - 97 + shift) % 26 + 97).chr
elsif char.match?(/[A-Z]/)
((char.ord - 65 + shift) % 26 + 65).chr
else
char
end
end.join
end
puts caesar_cipher('Hello World', 3) # Khoor Zruog
Challenge : Mot le plus fréquent
def mot_frequent(texte)
mots = texte.downcase.scan(/\w+/)
frequences = mots.tally
frequences.max_by { |_mot, count| count }
end
mot, count = mot_frequent("le chat mange le poisson et le chat dort")
puts "#{mot} apparaît #{count} fois"
Quelle est la première étape de la méthode UPER ?
Apprendre l’IA, du premier prompt aux agents