I have been trying to figure this out for days. I just started learning how to code and I am not sure I understand instructions. Can someone please explain it to me and show how to solve it in Python? Thanks!

Coding Challenge
Decrypt string

Here’s a simple strategy to encode a message: before each character of the message, add a digit and series of other characters. The digit should correspond to the number of characters that will precede the message’s actual, meaningful character.

For example, the word “hey” could be coded with “0h2abe1zy”. To read the message, you would:

skip 0, find the ‘h’
skip 2 (‘a’ and ‘b’), find ‘e’
skip 1 (‘z’), find ‘y’
Other examples:

‘2xyz’ would be decoded as just ‘z’
‘0h2zyi2467’ would be decoded as ‘hi7’

Write a function named “plaintext”, which takes a single parameter of a string encoded in this format. It should return the decoded word in string form. Demonstrate good coding practices (clear variable names, comments, etc).You may assume that coded strings are always legally encoded with this system. You may also assume that the digit for the number of characters to skip will just be a single digit, not a multi-digit number (that is, you’ll never need to skip more than 9 characters)—but we welcome solutions that can handle multi-digit characters to skip.

@microsurfer03331 what have you tried so far on this problem?

This has us at a bit of a disadvantage since we don’t know what you know or are able to understand at this point. I could toss out a solution and you might not know all the finer details that surround what is essentially a very small piece of code with just three steps.

What do you know about strings and arrays, and the ways that we may manipulate them? That is what is central to this problem. As @rydan asked, what have you come up with so far? We can help you deconstruct the code and point you in the right dirrection if we see what you have done.

What I can show you is,

>>> s
'hey'
>>> en
[]
>>>

Consider, what is the setup for the problem? The return is expected to be a string. The count value will not exceed 9 (for now), the inputs are string of arbitrary length, and the encryption method is consistent. All this means we can develop an algorithm around it.

def plaintext (encoded_string):
# code
return decoded_string

None of the criteria suggest any limits be placed on the imagination of a solution approach, which means, any means. Think this one through with a pencil and paper close at hand (or an interactive interpreter that let’s you manually write the lines of each step, to exhaustion of the input string). That’s how I did it.

First and foremost, thank you all for your willingness to help. I truly appreciate it.

So for I have a bit of experience with HTML, JavaScript, and some CSS.

I’ve written some notes as to how this could be solved. This is what I have so far.

1. Write a function named “plaintext”
• def plaintext():
• My logic: plaintext(): is telling the program to look for the function called “plaintext” and execute the code inside it.
1. Let the function name plaintext takes a single parameter of a string encoded in this format.
• def plaintext (‘encoded string goes here’):
• My logic: put the encoded message between the parentheses so the function knows what to encode.

But how do I get the encoded string? Is it something I makeup myself or does Python generate the encoded string with a built-in function.

1. It should return the decoded word in string form.
• def plaintext (‘encoded string goes here’):
• return ‘decoded message’

1 Like

I think you mean `decode``.

For now we assume that this is generated for us beforehand. Our code should be able to accept a call such as the following:

print (plaintext("0h2abe1zy"))

Let’s presume the encoded string is the return value of,

cryptictext('hey', '021'))

or something of that nature. We’re probably going to have to work this one out, too, at some point. Pretend we have already.

Let’s settle on "my reasoning" and forego the term logic. They really are not the same thing. One leads to the other, in that order.

The purpose of pencil and paper is to construct pseudo code, the description of each step and how they are repeated.

You will need to have a firm grasp on,

while loops

slicing

concatenation

reassignment

@mtf You are so kind! Thank you for being so helpful I think I figured it out using index and concatenation.

1.Step one:

I found the index (number) for each character in the string:
0 = 0
h = 1
2 = 2
a = 3
b = 4
e = 5
1 = 6
z = 7
y = 8

Then, I printed the index:

plaintext = (“0h2abe1zy”)
print(plaintext[1])
print(plaintext[5])
print(plaintext[8])

but output was vertical like this:
‘h
_ e_
_ y’_

2. Next, I used the + operator between each index to add them together horizontally

plaintext = “0h2abe1zy”
print(plaintext[1]) + (plaintext[5]) + (plaintext[8])

the output was the word ‘hey’

1. Did I do it right?

That is for you and your teacher to decide. Does it work dynamically with arbitrary inputs? Is it simple and non-repetitive?