Étudier à CodeWar (ruby) ②

À propos de cet article

Petit à petit, sortie de ce que j'ai appris grâce au Codewar récemment lancé

problème

An isogram is a word that has no repeating letters, consecutive or non-consecutive. Implement a function that determines whether a string that contains only letters is an isogram. Assume the empty string is an isogram. Ignore letter case.

Créez une méthode pour vérifier si la chaîne passée en argument est un isogramme. Cependant, les majuscules et les minuscules sont ignorées.


is_isogram("Dermatoglyphics" ) == true
is_isogram("aba" ) == false
is_isogram("moOse" ) == false # -- ignore letter case

La réponse que j'ai pensé

def is_isogram(string)
  string = string.downcase.chars
  if string == string.uniq
    return true
  else 
    return false
  end
end

(1) Tout d'abord, utilisez downcase pour rendre la chaîne de caractères passée comme argument plus basse, puis utilisez chars pour mettre chaque caractère dans le tableau. (2) Si chaque caractère placé dans le tableau et le tableau excluant les caractères en double par la méthode ʻuniqsont identiques,true` est renvoyé. ③ Si les séquences sont différentes, «false» est renvoyé.

Réponse idéale

def is_isogram(string)
  string.downcase.chars.uniq == string.downcase.chars
end

Même si vous ne prenez pas la peine de créer une branche conditionnelle, elle retournera vrai et faux avec ==. .. .. ..

Recommended Posts

Étudier à CodeWar (ruby) ②
Étudier à CodeWar (ruby) ⑥ inject
Étudier chez CodeWar
Étudier à CodeWar (ruby) ③ squeeze, gsub
Étudier à CodeWar (ruby) ⑤ Proc
Étudier à CodeWar (ruby) ④ cas ~ quand
[Chez Coder] Présentation de Competitive Pro avec Ruby