-1
votes

Comment puis-je faire le modèle suivant dans Ruby?

a

b b

C C C

d d d d d

e e e e e

Je ne sais pas, comment imprimer des alpahbets


3 commentaires

Comme vous êtes nouveau membre, je ne fais que donner un indice (procédure) comme réponse, mais vous devez la mettre en œuvre seul ...


Qu'avez-vous essayé et où vous êtes coincé?


1.UPTO (5) {| i | met (64 + i) .chr * i}


3 Réponses :


-4
votes

Ce n'est pas pour rubis code> ni pour une autre langue, son juste un flux:

Imprimer alphabets comme: P>

for (ch = 'a'; ch <= 'z'; ch++)
{
    System.out.println(ch);
}


3 commentaires

Cette question était spécifiquement étiquetée ruby, alors c'est pourquoi vous êtes probablement descendu


C'est une bonne réponse en utilisant du code pseudo, encourageant l'OP à trouver sa propre solution.


@Sagarpandya je suis en désaccord. Ce qui a été présenté ici est une approche procédurale lorsque la langue cible est orientée objet et a de fortes tendances fonctionnelles. Ce n'est pas idiomatique pour une question qui spécifie Ruby, comme vous pouvez le constater en contrastant cela avec la réponse de Ray.



0
votes

Vous pouvez faire quelque chose comme - xxx

ce qu'il fait -

  1. (1..5) - Exécutez une boucle avec index à partir de 1 jusqu'à 5.
  2. (1..index) - exécutez une autre boucle donc pour chacune de la boucle ci-dessus, elle fonctionne à partir d'un indice de 1 jusqu'à l'indice, qui sera contrôlé à partir de la (1..5). Cherchez.
  3. (65) .Chr -> A, (66) .Chr -> B et ainsi de suite ..
  4. met "\ n" pour ajouter une nouvelle ligne

    qui vous donnera la sortie - xxx

    si vous souhaitez ajouter quelque chose supplémentaire à tout ce que vous imprimez, vous pouvez faire quelque chose comme -

    impression "# {(index 64 +) .Chr} - Texte aléatoire"

    # {} Construct vous permettra d'écrire Ruby interpréter le code dans un bloc de chaîne`

    REMARQUE: # {} ne fonctionne que lorsque vous utilisez des guillemets doubles :)


3 commentaires

Vous êtes allé trop profond, vérifiez ma réponse et l'espace entre deux personnages sera beaucoup mieux.


@ray - Ouais, le tien est plus propre, puisque l'Op ressemblait à un débutant, je pensais que des boucles simples seraient faciles à comprendre


Mieux vaut obtenir les débutants habitués à des idiomes rubis telles que les itérateurs et les fermetures le plus rapidement possible, en particulier car ils sont souvent plus propres une fois qu'une personne passe devant le "mais c'est différent!" phase.



6
votes

Vous pouvez effectuer ce qui suit pour le calculer:

(lower_limit..upper_limit).each.with_index(1) { |letter,index| puts Array.new(index) { letter }.join(' ') }


8 commentaires

Vous n'avez pas besoin d'une matrice, utilisez simplement une plage ('a' .. 'Z') . Utilisez également chacun.with_index (1) pour éviter de devoir faire i + 1 sur chaque itération.


@Sagarpandya remercie édité, cela a aidé, je ne l'ai tout simplement pas remarqué à la hâte


Je pense que l'interpolation de n n'est pas nécessaire et si vous avez appelé vos variables lettre, index qui pourrait ajouter un peu de clarté. Bonne solution cependant!


@Jaydorsey L'interpolation est une manière propre d'obtenir les espaces, mais je suis d'accord que le renommer des variables ajouterait une clarté.


@PJS Tu as raison, je n'ai pas tenu compte des espaces entre lignes (je n'ai même pas vraiment "les voir" quand j'ai regardé). Je viens de supposer que c'était un bruit de copie / coller plutôt que d'une partie intégrante de la sortie. Mais, en op, il a des espaces pour que l'interpolation serait un moyen facile de le faire


@Jaydorsey Yup je garde toujours la clarté (les rails suggèrent bien que) tout en travaillant sur le projet, manquez ici, édité. L'interpolation n'a été ajoutée que pour les espaces.


@PJS Désolé d'être en retard, vous pouvez aller éditer ma réponse pour ajouter.


Merci à vous tous, c'est du travail et désolé pour ma réponse tardive.