Nous allons contester la «programmation de la compétition (compétition pro)» dans le cadre de l'apprentissage de Ruby. Nous sortirons ce que nous avons appris dans l'apprentissage à cette fin. Cette fois à partir de la première question (par conséquent) de "At Coder Beginners Contest 168". https://atcoder.jp/contests/abc168/tasks/abc168_a
Je vais le résumer en fonction de la solution que j'ai utilisée et du commentaire publié par le fonctionnaire.
Lors du comptage des crayons en japonais, "livre" est ajouté comme numéro auxiliaire après le nombre. La lecture de ce numéro auxiliaire diffère selon le numéro auquel il est attaché. Pour les nombres entiers de 999 ou moins, comment lire «livre» en disant «N livres»
・ Lorsque la 1ère place de N est "2,4,5,7,9", 'hon' ・ Lorsque la 1ère place de N est "0,1,6,8", 'pon' ・ Lorsque la 1ère place de N est "3", c'est "bon"
Étant donné N, imprimez le "livre" correspondant.
Contrainte N est un entier positif inférieur ou égal à 999
L'entrée est donnée sous la forme suivante.
N
#Exemple
16
Dans l'exemple ci-dessus, il peut être divisé jusqu'à 2 fois.
Exemple de sortie
#Dans le cas de l'exemple ci-dessus
=> pon
Le premier est le code que j'ai écrit en premier.
a = gets.to_i.modulo(10)
if [2,4,5,7,9].include?(a)
print "hon"
elsif [0,1,6,8].include?(a)
print "pon"
else
print "bon"
end
Utilisez la méthode modulo pour recevoir uniquement les chiffres des unités de l'entrée Le jugement est fait par la déclaration if et la méthode d'inclusion. comprendre? En ce qui concerne la méthode, j'ai écrit une fois sur l'article suivant, donc [Apprentissage Ruby avec AtCoder Beginners Selection [Quelques sommes] Augmentez les méthodes qui peuvent être utilisées](https://qiita.com/jag_507/items/cd3ad74d77ad933897b7#include%E3%83%A1%E3%82%BD%E3%83%83 % E3% 83% 89 plage% E3% 82% AF% E3% 83% A9% E3% 82% B9) Ici, je vais aborder la méthode modulo.
Renvoie le reste divisé par le nombre spécifié. Dans la réponse, le chiffre des unités est retiré comme reste en divisant l'entier par 10.
#Exemple
13.modulo(4)
=> 1
42.modulo(10)
=> 2
Dans le commentaire diffusé après le concours, Une manière plus intuitive de décrire avec une instruction de cas est introduite.
Dans ce qui suit, nous allons introduire la déclaration de cas après avoir répondu avec la déclaration de cas.
n = gets.to_i.modulo(10)
case n
when 2,4,5,7,9
print 'hon'
when 0,1,6,8
print 'pon'
else
print 'bon'
end
Dans la première réponse, j'ai mis la condition dans un tableau et j'ai fait un jugement avec la méthode include?, En utilisant l'instruction case, vous pouvez écrire le code comme si vous pensiez "Si la première place est 2,4,5,7,9 ...". Certainement celui-ci semble être meilleur.
Ceci est utile lors de la recherche d'une correspondance parmi plusieurs candidats pour une seule valeur. L'opérateur "===" détermine s'il correspond à ce qui est spécifié dans when.
case object
when value1
# object ===Instruction à exécuter lorsque value1
when value2
# object ===Instruction à exécuter lorsque value2
else
#Instruction à exécuter lorsque tous ne correspondent pas
end
L'opérateur "===" qui apparaît ici est Si l'objet mentionné ci-dessus est une chaîne de caractères ou une valeur numérique, définissez-le comme "==". Pour les expressions régulières, utilisez "= ~" Dans le cas d'une plage, il semble juger si la valeur y est incluse comme include? Il semble être flexible et facile à utiliser.
Jusqu'à présent, nous avons présenté les méthodes apprises à partir de la première question (Donc) de "AtCoder Beginners Contest 168".
Si vous avez des erreurs, je vous serais reconnaissant de bien vouloir les signaler.
Recommended Posts