Après avoir appris «Introduction à Ruby pour les professionnels», communément appelé Cherry Book Quand j'ai voulu bouger mes mains et mettre en pratique ce que j'apportais, j'ai trouvé un article de l'auteur. "Si vous rencontrez des problèmes avec le matériel de sortie!? J'ai collecté des problèmes de programmation pour les débutants Ruby (10 questions au total)"
Nous résolvons également d'autres problèmes. Première question: Problème de création de calendrier (problème de pratique Ruby amusant) Deuxième question: Problème de création de machine à karaoké Troisième question: Problème de création de carte de bingo Quatrième question: Problème de boisson bonus Cinquième question: Problème de création du répertoire
La première question listée ici
Il s'agit d'un problème de création de calendrier orthodoxe décrit dans "Fun Ruby". Si vous connaissez l'API de la classe Date, vous pouvez écrire du code avec seulement des connaissances de base en programmation.
Utilisez la classe Date pour trouver la date et le jour du premier et du dernier mois du mois et afficher le calendrier au format suivant:
Le but est de le faire ressembler à ça
May 2020
Su Mo Tu We Th Fr Sa
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
Quand j'ai cherché, j'ai trouvé diverses réponses, mais ma réponse était comme ça.
require 'date'
def monthly_calendar(this_day = Date.today) #Date d'éxecution
#Extraire le premier jour du mois d'exécution
first_day = Date.new(this_day.year,this_day.month,1)
#Dimanche de la première semaine du mois(En haut à gauche du calendrier)Extraire la date correspondant à
start_day = first_day - first_day.strftime('%w').to_i
# month year
puts this_day.strftime('%B %Y').center(21)
# weekdays
puts "\sSu\sMo\sTu\sWe\sTh\sFr\sSa"
# days
while start_day.month <= first_day.month
if start_day.month != first_day.month
print "\s\s\s"
elsif start_day.strftime('%u') == "6"
print "\s" + start_day.strftime('%e') + "\n"
else
print "\s" + start_day.strftime('%e')
end
start_day += 1
end
end
puts monthly_calendar
Même si je ne passais que l'année et le mois comme arguments, j'ai pu afficher le calendrier pour ce mois.
puts monthly_calendar(Date.new(1995,8)) #Peut être spécifié dans n'importe quel mois
August 1995
Su Mo Tu We Th Fr Sa
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Il semble que la valeur soit passée à la date <1995-08-01>.
S'il vous plaît laissez-nous savoir s'il y a des améliorations.
Recommended Posts