[Sur 100 points] J'ai pensé à un test de codage pour les diplômés des écoles de programmation [Ruby]

introduction

Je m'appelle yuki. Grâce à DMMWEBCAMP, je travaille maintenant en tant qu'ingénieur WEB, rassemblant mes amis pour développer des services, enseignant la programmation en tant que tuteur et profitant de ma vie d'ingénieur au quotidien.

Nous fournissons également une assistance et des questions d'erreur pour ceux qui visent des inexpérimentés, donc si vous êtes intéressé, veuillez contacter DM.

Cette fois, à un moment donné, on m'a demandé: «Que feriez-vous faire un test de codage à un diplômé d'une école de programmation?», Alors j'aimerais écrire ma réponse à ce moment-là (il y a environ 6 mois). ..

Aujourd'hui, je veux entendre ** tri **, mais je vais le partager comme un souvenir de ces jours. Si vous venez de terminer l'apprentissage de Ruby, essayez-le. J'étais le même diplômé quand je l'ai fait.

problème

C'est un score parfait de 100 points.

【Énoncé du problème】
Vous êtes un étudiant en programmation et vous étudiez beaucoup chaque jour.
Supposons qu'aujourd'hui soit le premier jour du mois.
En tant que travailleur acharné, vous avez décidé de définir des règles sur la façon d'étudier la programmation ce mois-ci.
Veuillez répondre aux questions suivantes après avoir strictement observé les conditions.

【conditions】
・ Écrivez et soumettez le code dans les 90 minutes
・ Résolvez sans regarder Internet ou les notes que vous avez apprises jusqu'à présent
・ Selon l'énoncé du problème, aujourd'hui*1 novembre 2020*A résoudre en supposant
* Vous pouvez l'utiliser en fonction du mois de lecture de cet article.

・ Comme il s'agit d'une méthode d'ajout de points, essayez d'écrire autant de code que possible même si vous ne comprenez pas
* À ce moment-là, saisissez la partie que vous n'avez pas comprise comme commentaire

【problème】
(1) Sortez le dernier jour de ce mois à l'aide d'un objet date.
* Cependant, exiger'date'Vous pouvez l'utiliser en écrivant.

(2) Vous avez décidé de résoudre un problème chaque jour pendant vos études.
De plus, j'ai décidé de résoudre 2 questions les jours avec 4 à la date et 3 questions les jours avec des nombres premiers.
Si vous commencez à apprendre dès le premier jour, combien de questions pourrez-vous résoudre ce mois-ci?
* Cependant, l'utilisation de la classe Prime n'est pas possible.

(3) Veuillez sortir le calendrier de ce mois dans le format suivant.
https://drive.google.com/file/d/1_Km62H6c1WTzv1rWz4NfnwgVXDBC9r2c/view?usp=sharing

Réponses, explications et critères d'évaluation

answer.rb


#60 points ou plus sur 100 points réussis

# (1)Exemple de réponse
require 'date'
year = Date.today.year
month = Date.today.mon
lastday = Date.new(year, month , -1).day 
puts "(1)répondre:"+"#{lastday}"

=begin
    (1)Critères d'évaluation score parfait [10 points]
* L'année et le mois ne sont pas requis et aucun point ne sera déduit même si le dernier jour est directement entré comme 2020 5.
* Cependant, s'il y a un candidat à égalité.année ou.Évaluez ceux qui écrivent du code réutilisable tel que mon
    1.Date.nouveau est fait [5 points]
    2.La réponse est 28,29,30,L'un des 31 correspond au dernier jour de ce mois [5 points]
=end

# (2)Exemple de réponse
#Initialisation du nombre de problèmes résolus.
count = 0

#C'est une méthode pour déterminer les nombres premiers.#Appelez avec 1.
def prime?(num)
  return false if num == 1 
  (2..num).each do |i|
    if num % i == 0 && num == i
      return true
    elsif num % i == 0
      return false
    end
  end
end

#Itère du premier jour au dernier jour.
(1..lastday).to_a.each do |date|
    #C'est le processus lorsque le nombre 4 est inclus dans la date.
  if date.to_s.split("").include?("4")
    count += 2
    #C'est le processus lorsqu'un jour est un nombre premier.
  elsif prime?(date)
    count += 3
  else
    count += 1
  end
end
puts "(2)répondre:"+"#{count}"

=begin
(2)Critères d'évaluation score parfait [30 points]
    1.Le code de jugement du nombre premier peut s'écrire [10 points]
* Si tous les nombres premiers sont écrits, [5 points]
    2.Je peux écrire le code pour juger du jour où 4 est attaché(Tout peut être écrit) [5 points]
    3.Je peux écrire un code pour résoudre une question chaque jour en utilisant la répétition [5 points]
    4.Les variables qui ajoutent des points peuvent être initialisées et ajoutées [5 points]
    5.Il y a une réponse [5 points]
=end

# (3)Au sujet du problème
puts "(3)répondre:\n" 
week = ["Su","Mo","Tu","We","Th","Fr","Sa"]
puts week.join(" ") 

#Le premier jour de chaque mois est quantifié.
day = Date.new(year,month,1).wday
#journée+Espace demi-largeur pour la date à un chiffre=Il est justifié à droite pour la première semaine en multipliant par 3 espaces demi-largeur.
print "   " * day

(1..lastday).each do |date|
  print date.to_s.rjust(2) + " "
  day += 1
  if day % 7 == 0
    puts "\n"
  end
end

if day % 7 != 0
  print "\n"
end

=begin
(3)Critères d'évaluation score parfait [50 points]
    1.La sortie du jour de la première ligne est terminée [10 points]
    2.La date est sortie [5 points]
    3.J'ai conçu un moyen de sortir avec un espace demi-largeur entre chaque jour [5 points]
      ※"1 ","2 "Si vous entrez manuellement comme [5 points]
    4.Il est divisé en 7 jours [10 points]
* Si vous utilisez beaucoup de mises sans répéter ni utiliser de sauts de ligne, [5 points]
    5.Lors de la sortie d'une date à 1 chiffre, un espace peut être inséré au début [5 points]
    6.La première semaine est justifiée à droite [5 points]
    7.La dernière semaine est justifiée à gauche [5 points]
    8.Les réponses sont correctes [5 points]
=end

=begin
(Autre)Score parfait [10 points]
Du point de vue de la lisibilité du code réponse, prise en compte pour le lecteur, méthode de traitement, processus à dériver, etc.
Le évaluateur doit ajouter jusqu'à 10 points avec la raison de l'évaluation.
=end

Sommaire

Je pensais que c'était nostalgique. Bien sûr, j'avais quelques réflexions sur les raisons pour lesquelles j'avais un tel problème, mais je l'ai oublié après un long moment. Indépendamment du bien ou du mal du test de codage, j'aimerais revenir sur ces jours et réfléchir au type de test à faire maintenant.

Veuillez me contacter si vous pouvez le résoudre (◞´ • ௰ • `) ◞

Recommended Posts

[Sur 100 points] J'ai pensé à un test de codage pour les diplômés des écoles de programmation [Ruby]
Prise de conscience de l'orientation objet pendant six mois de programmation
J'ai créé une image Docker pour la version japonaise de SDAPS
[RSpec] J'ai écrit un test pour télécharger une image de profil.
J'ai une question sur la saisie de chiffres au clavier