Problème de création de calendrier (problème de pratique amusant avec Ruby)

introduction

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

Problème de création de calendrier (problème de pratique amusant avec Ruby)
Problème de rubis ⑦
J'ai essayé un problème de calendrier avec Ruby
problème de recherche de rubis
[Ruby] Problème de FizzBuzz
Problème d'API ruby
Problème d'API ruby
Création de portfolio Ruby on Rails
Créer un calendrier avec Ruby
[Ruby] problème avec l'instruction if
Système de dépôt Ruby, problème d'algorithme