-3
votes

Comment convertir des numéros de coussinet téléphonique en lettres

J'essaie d'écrire du code qui simule écrire un message texte à l'aide d'un multi-robinet clavier téléphonique dans Ruby. Ceci est le clavier de téléphone:

222 25533
  c a k e


4 commentaires

S'il vous plaît voir " Comment demander ", " Liste de contrôle des questions de dépassement de piles " et toutes leurs pages liées. Nous nous attendons à voir votre tentative de résoudre ce problème. Vous nous avez tenu actuellement une exigence que vous êtes censé résoudre et que nous souhaitons que nous écrivions du code pour vous. " Comment puis-je demander et répondre aux questions des devoirs? " expliquera.


@CarySwoveland C'est une Pause SO 222 peut enregistrer en tant que C . Sans espace, 2222 pourrait être AAAA , AAB , ABA , AC ou toute autre combinaison.


G13, j'espère que les modifications que @stefan et moi avaient été compatibles avec ce que vous essayez de faire. S'ils étaient, vous voudrez peut-être clarifier la dernière phrase, qui sont vos mots originaux. Si vous clarifiez cette phrase pour affirmer que vous souhaitez simplement encoder du texte, ou à la fois de coder et de décoder du texte, il est possible de rouvrir la question. C'est est une question intéressante.


Bonjour @CarySwoveland et @stefan! Désolé j'ai pris trop de temps, je fais de ces devoirs depuis longtemps, alors j'ai décidé de passer du temps à partir de l'ordinateur et de revenir il y a un peu de temps. J'ai testé les solutions de codage et de décodage et j'ai travaillé. Il m'a encouragé à regarder plus profondément dans Regex et sur la carte et cela m'a aidé à résoudre d'autres devoirs! Merci beaucoup d'avoir pris le temps de m'aider. Je vais faire plus attention quand j'ai une autre question. Maintenant, je vais le modifier avec les progrès que j'ai faits lors de la demande d'aide ici.


3 Réponses :


1
votes

Je commencerais avec la conversion "222 25533" dans un tableau [[2,3], [2,1], [5,2], [3,2]] où le Le premier numéro représente un chiffre et la seconde est un certain nombre de ses occurrences. Avoir cela, vous pouvez facilement trouver des lettres du clavier.


0 commentaires

3
votes

Vous êtes donné:

decode encoded_1
  #=> "cake"
decode encoded_2
  #=> "my dog has fleas"


0 commentaires

3
votes

(j'ai eu la partie codée d'abord lorsque Cary Swoveland a souligné que vous voudrez peut-être décoder. La réponse contient maintenant des façons et est devenue assez longue, j'espère que cela ne vous dérange pas) em>


Votre exemple de code ne fonctionne pas. Vous ne pouvez pas simplement attribuer à un littéral à chaîne. Cependant, vous pouvez utiliser un hasch comme ceci pour définir votre clavier dans Ruby: p> xxx pré>

décodage h3>

à tourner 222 25533 code> Dans Cake Code>, je commencerais par diviser les nombres consécutifs et délimités spatiaux. Vous pouvez utiliser une regex: p>

chunks.map { |chunk| chunk.map { |k, t| k * t }.join(' ') }.join
#=> "222 25533"


3 commentaires

Je reviendrai dans la matinée, mais je vais jeter un coup d'œil à la dernière phrase de la question (que je n'ai pas touchée). Cela me suggère que l'OP peut vouloir décoder au lieu de (ou en plus de) coder. Si vous avez le temps, vous voudrez peut-être couvrir le décodage en tout état de cause. je


@CarySwoveland Vous avez peut-être raison, j'ai totalement négligé ça! (l'a ajouté à ma réponse)


@CarySwoveland Bon points, mais cette réponse a déjà pris un peu trop longtemps, je laisserai cela comme "un exercice au lecteur" :-)