Je soupçonne qu'il y a une puissance plus propre, plus idiomatique, de Ruby-Way pour résoudre ce casse-tête que ce que j'ai fait. Je suis trop nouveau à Ruby, cependant, pour confirmer. Toutes mes recherches n'ont pas abordé la question de savoir comment écrire de rubis dans les exemples que je donne ci-dessous.
Le puzzle, est-ce que je dois prendre une entrée de chaîne et la transformer en matrice. Les lignes sont séparées par E.g. L'entrée de chaîne c'est ma solution: p> explication de ce qui se passe p> Je me sens comme ce code n'est pas très lisible, mais je viens de rouille, donc je ne suis pas habitué au bon style p> Je ne suis pas assez familier avec Ruby pour comprendre bonnes façons d'écrire ce type de solutions. J'ai essayé d'utiliser plus de lignes comme si p> mais je me sens toujours laissé dans le noir sur ce qui pourrait être considéré comme un bon style, ou quelles autres options sont disponibles. P> L'exactitude du code va bien. Pour moi, une bonne réponse est une bonne réponse qui me donnera un aperçu de ce qu'il faut rechercher lors de la plongée dans des problèmes similaires à l'avenir et d'avoir plus de confiance en ma compréhension de ce qui fait du code rubis élégant. P> C'est ce que j'ai fini avec:
'\ n' code>, les éléments de ligne sont séparés par
'' ' code> p>
"2 6 4 \ n7 9 8" code> a une sortie
[[2, 6, 4], [7, 9, 8]] code> I.e. la matrice: p>
"2 6 4 \ n7 9 8" code> => divisé par nouvelle ligne =>
["2 6 4", "7 9 8"] code> li>
'' code> =>
[["2", "6", "4"], "4", "9", "8"]] code> li>
INT CODE> S (Cela se produit une fois pour chaque ligne) LI>
DO-fin code> (je vais encore apprendre). Si quelqu'un veut éditer cela, fantastique. Li>
ul>
@rows = in_string.split (/ \ n /). Carte (| CHRS | chrs.split.map (&: to_i)) CODE> P> P> P> P> P>
4 Réponses :
Votre code me semble bien.
in_string.split(/\n/).map { |row| row.split.map(&:to_i) }
Merci! Ce sont goo. Je ne connais pas do-fin code>, mais je suis sûr que je peux le comprendre
Oui, mais cela ne supprime pas le \ n code>. Je ne sais pas
Je pense que c'est assez bon. Si vous pensez que le bloc imbriqué n'est pas bon à lire. Vous pouvez définir une méthode comme BTW, mieux utiliser finalement code> dans le bloc multiline p> p> p>
C'est le premier que j'ai entendu parler de finalement code>. Est-ce l'une des choses qui peuvent facilement être trouvées ou vaut-elle la peine de demander un exemple?
@Benph, il y a des guides de style rubis dans github, comme cet Github.com/airbnb/Ruby#Syntax a>. "Évitez d'utiliser {...} pour les blocs multilignes"
Ruby a beaucoup de commodité intégrées pour "lisibilité propre", par exemple
chaque_line code> et divisés code> li>
- symboles avec le
.TO_PROC code> raccourci, & code> li>
ul> xxx pré> p>
str = "2 6 4\n7 9 8\n" arr = str.split.map(&:to_i) #=> [2, 6, 4, 7, 9, 8] arr.each_slice(arr.size/str.lines.size).to_a #=> [[2, 6, 4], [7, 9, 8]]