Hi…COULD SOMEONE PLEASE SOLVE AND EXPLAIN THIS QUESTION TO ME
[I haven’t written a full code yet, though i have tried 4-6 time]
I used swapcase() first, then chr(ord( … ) +/- , etc…
Could you help me out @carre @galencolin @ssrivastava990
Hi…COULD SOMEONE PLEASE SOLVE AND EXPLAIN THIS QUESTION TO ME
[I haven’t written a full code yet, though i have tried 4-6 time]
I used swapcase() first, then chr(ord( … ) +/- , etc…
Could you help me out @carre @galencolin @ssrivastava990
Convert lowercase to uppercase and vice versa by subtracting or adding 32 to the ASCII value respectively.
Right-shift the lowercases by considering a-z numbered from 0-25. Do the right-shift as (value+R)%26
Left-shift the uppercases by considering A-Z as 0-25 . Do the left-shift as (value-L+26)%26
Print the frequency of every letter in the new string, lowercases and uppercases separately.
thanks, but what is wrong if i use swapcase() function (PYTH 3.6)?
Also, i used various methods for counting like set() + count() and dict.get() but they all come in curvy bracket thingys ( ‘{ }’ ) while the required output does not
Did you write a code? It would be much help
I’m sorry but I usually code in Java, so I might not be able to code in Python for this … and I’ve just now built up the logic and haven’t coded it yet
okay no problem…do tell me when you are done tho…thanks
Also. whats wrong with this approach:
def split(word):
return list(word)
for _ in range(int(input())):
N = int(input())
r,L = map(int , input().split())
S = input()
SS = S.swapcase()
x = split(SS)
for i in range(len(x)):
if(x[i].isupper()):
x[i] = chr(ord(x[i]) - L)
else:
x[i] = chr(ord(x[i]) + r)
listToStr = ' '.join(map(str, x))
print(listToStr)
res = {}
for keys in x:
res[keys] = res.get(keys, 0) + 1
#print(str(res))
i am getting the required output’s first line, i.e, kLfGc… but as separate characters and not one single word (k L f G c…)
And my count is coming as {k : ‘2’} instead of k 2
Why the “tutorial” tag?
i clicked it by mistake and was not able to remove it
def split(word):
return list(word)
for _ in range(int(input())):
N = int(input())
r,L = map(int , input().split())
S = input()
SS = S.swapcase()
#print(SS)
x = split(SS)
for i in range(len(x)):
if(x[i].isupper()):
x[i] = chr(ord(x[i]) - L)
else:
x[i] = chr(ord(x[i]) + r)
listToStr = ' '.join(map(str, x))
print(listToStr)
res = {}
for keys in x:
res[keys] = res.get(keys, 0) + 1
#print(str(res))
Well… one issue is that you have x = split(SS)
when I guess you want x = SS.split()
(which defaults to splitting by spaces)
def split(word):
return list(word)
for _ in range(int(input())):
N = int(input())
r, L = map(int, input().split())
S = input()
SS = S.swapcase()
# print(SS)
x = split(SS)
for i in range(len(x)):
if x[i]==' ':
continue
if (x[i].isupper()):
x[i] = chr(ord(x[i]) - L)
else:
x[i] = chr(ord(x[i]) + r)
listToStr = ''.join(map(str, x))
print(listToStr)
res = {}
for keys in x:
if keys==' ':
continue
res[keys] = res.get(keys, 0) + 1
for i in res:
print(i,res[i],end=" ")
print()
This would give output in desired format.
The checker for this problem seems to be incorrect.
thank you…it seems to be working on Command Prompt
Lemme submit it and see
It doesn’t. I’ve checked.
oh…
I noticed that though first line of output is correct, the order of the second line is wrong (according to example test case)… could that be the reason?
Yeah maybe…the author must have not used a custom judge to verify that thing. There could be multiple outputs.
I just noticed that the example test case prints the count in alphabetical order, while your code prints it according to appearance of character in string
Required output =
G 1 K 1 L 1 M 1 Q 1 R 1 S 1 W 2 c 1 e 1 f 1 k 2 p 1 t 1
Your output =
k 2 e 1 S 1 f 1 Q 1 K 1 L 1 c 1 t 1 G 1 R 1 W 2 p 1 M 1
^^^ this is not even order of appearance…how would one fix this?
It noticed the same now…you may try to print in that particular order (though the statement should have mentioned this thing).
could you explain how…I am a not very experienced in coding
oh kk thanks