একটি ইনপুট দেওয়া হয়েছে, এটি এন অক্ষর দ্বারা কীবোর্ড বরাবর সরান


19

চ্যালেঞ্জ:

কোনও কীবোর্ডে টাইপ করা যায় এমন কোনও ইনপুট দেওয়া হয়েছে, এন অক্ষর সহ পাঠ্যটি সরান।

এখানে QWERTY কীবোর্ড ব্যবহার করা হবে। আপনি সংশোধক কীগুলি (শিফট, ক্যাপস, এন্টার, মুছুন এবং ট্যাব) উপেক্ষা করতে পারেন। একবার আপনি একপাশে (উদাহরণস্বরূপ পৌঁছানোর |লুপ ফিরে বৃত্তাকার), তাই |চলে যায় Qযদি N = 1

এখানে চিত্র বর্ণনা লিখুন

স্পেসগুলি বরাবর স্থানান্তরিত করতে হবে না (আপনি পরিবর্তনকারীগুলি এড়িয়ে যাওয়ার সাথে সাথে তারা স্পেসে ফিরে যেতে পারেন)। তাহলে শিফট (যেমন চরিত্র টাইপ করতে ব্যবহার করা হয়েছিল !এবং @) পরিবর্তিত চরিত্রটি বর্তমান শিফট ব্যবহার টাইপ করা হবে (অর্থাত !যায় @না 2যদি N = 1)।

ইউকে কীবোর্ডগুলি এর থেকে আলাদা, তবে দয়া করে এটি ব্যবহার করুন যাতে আমরা তুলনা করতে পারি।

ইনপুট:

উপরের কীবোর্ডে টাইপ করা যায় এমন কোনও বাক্য এবং তারপরে ধনাত্মক পূর্ণসংখ্যা হয়। এই পূর্ণসংখ্যার আকারের সর্বোচ্চ নেই is

আউটপুট:

একই বাক্যটি, এন দ্বারা স্থানান্তরিত

উদাহরণ:

My name is Tim 3
?o .f/y [g I[/
Hello World 7
Spgge Oe[g;
I Wi5h I h4d b3773r C@d3ing ski{{s 3
{ T[8l { l7h ,6006u N%h6[.k g'[QQg

এটি কোড গল্ফ, তাই সংক্ষিপ্ততম কোড জয়ী।


আমরা কি ধরে নিতে পারি যে N<= 13মূল চরিত্রে ফিরে আসতে আপনাকে আরও 13 টি স্থানান্তরিত করতে হবে?
flawr

1
@ ফ্লোর না, দুঃখিত এটি যে কোনও ধনাত্মক মান হতে পারে।
টিম

"হ্যালো ওয়ার্ল্ড 7" উদাহরণটি কি "স্পিগ্রে ও [g;" হওয়া উচিত নয়?
জেমস উইলিয়ামস

Hello World 7উদাহরণটি হওয়া উচিত নয় Spgge Oe[g;? দু'জনের oএকই চরিত্রের মানচিত্র করা উচিত
edc65

উত্তর:


2

সি, 217 বাইট

char*t=" @A$%^*a)_(~.=/z-234567890\"'>`?Z#SNVFRGHJOKL:<MP{WTDYIBECUX]q\\&=1snvfrghjokl;,mp[wtdyibecux}Q|!";l,d,k;f(char*s){for(l=strlen(s);s[--l]-32;);d=atoi(s+l);for(s[l]=0;d--;)for(k=l;k--;s[k]=t[s[k]-32]);puts(s);}

সাদা স্থান সহ আরও পঠনযোগ্য সংস্করণ ইত্যাদি:

#include <string.h>
#include <stdlib.h>
#include <stdio.h>

char* t = " @A$%^*a)_(~.=/z-234567890\"'>`?Z#SNVFRGHJOKL:<MP{WTDYIBECUX]q\\&=1snvfrghjokl;,mp[wtdyibecux}Q|!";
int l, d, k;

void f(char* s) {
    l = strlen(s);
    for( ; s[--l] - 32; );
    d = atoi(s + l);
    s[l] = 0;
    for ( ; d--; ) {
        for (k = l; k--; s[k] = t[s[k] - 32]);
    }
    puts(s);
}

কোডটি বেশ নিজের পক্ষে কথা বলে। কেবলমাত্র একটি সন্ধানের টেবিল যা প্রতিটি অক্ষর থেকে পরের অক্ষরে মানচিত্র দেয় যা প্রদত্ত সংখ্যার সময় প্রয়োগ করা হয়। কোডটির বেশিরভাগটি ইনপুটটির বাইরে নম্বর পার্স করার জন্য।


@Ypnypn আপনি সি তে অঘোষিত ফাংশন ব্যবহার করতে পারেন সুতরাং এটির নির্মাণের জন্য অন্তর্ভুক্তগুলির প্রয়োজন নেই। এটি সাধারণত সংকলক সতর্কতা দেয়, তবে আমাকে বলা হয়েছে যে যতক্ষণ না এটি তৈরি হয় এবং চালানো হয় ততক্ষণ এটি অনুমোদিত is
রেটো কোরাদি


1

পাইথ, 126 বাইট

XjdPczdsJc"~!@#$%^&*()_+ `1234567890-= qwertyuiop[]\ QWERTYUIOP{}| asdfghjkl;, ASDFGHJKL:\" zxcvbnm,./ ZXCVBNM<>?")sm.<dvecz)J

এটি অনলাইনে ব্যবহার করে দেখুন: বিক্ষোভ বা পরীক্ষার স্যুট

ব্যাখ্যা:

    czd                       split input by spaces
   P                          remove the last element
 jd                           join by spaces (=#1)

          "..."               string with the chars of each row
         c     )              split by spaces
        J                     assign to J
       sJ                     sum of J (=#2)

                       cz)    split input by spaces
                      e       take the last element
                     v        and evaluate it 
                 m        J   map each row d of J to:
                  .<d           rotate the row d by value
                s             sum (=#3)

X                             Take #1, and replace the chars in #2 by the chars in #3

1

পাইথন 3, 311 বাইট

*i,s=input().split()
r=["`1234567890-=","qwertyuiop[]\\","asdfghjkl;'","zxcvbnm,./","~!@#$%^&*()_+","QWERTYUIOP{}|",'ASDFGHJKL:"',"ZXCVBNM<>?"]
print("".join([[x[int(s):]+x[:int(s)]for x in r][r.index([x for x in r if c in x][0])][([x for x in r if c in x][0]).index(c)]if c!=" "else " " for c in " ".join(i)]))

" " for c in " "
এটিকে

0

পাইথন 3, 271 255 বাইট

বেসলাইন, প্রায় উদারভুক্ত, প্রশ্নটিতে স্থানান্তরিত শব্দগুলি তৈরি করতে ব্যবহৃত হত।

x=input().split()
n=int(x[-1])
x=' '.join(x[:-1])
l=['`1234567890-=','qwertyuiop[]\\',"asdfghjkl;'",'zxcvbnm,./', '~!@#$%^&*()_+','QWERTYUIOP{}|','ASDFGHJKL:"','ZXCVBNM<>?',' ']
y=''
for i in x:
 for q in l:
  if i in q:y+=q[(q.index(i)+n)%len(q)]
print(y)

ব্যাখ্যা:

x=input().split()    # Get input
n=int(x[-1])         # Get N from input
x=' '.join(x[:-1])   # Get the words from input
                     # Create list of letters

l=['`1234567890-=', 'qwertyuiop[]\\',
   "asdfghjkl;'",   'zxcvbnm,./',
   '~!@#$%^&*()_+', 'QWERTYUIOP{}|',
   'ASDFGHJKL:"',   'ZXCVBNM<>?',
   ' ']

y=''                 # Blank string
for i in x:          # Loop through letters in input
    for q in l:      # Loop through items in list
        if i in q:   # Is letter of input in item of list?
            y+=q[                          # Append letter to y
                 (q.index(i)+n)            # locate the letter in item, and add N
                               %len(q)]    # % is modulus, loop to beginning if big
print(y)             # Print out the offset word.

আমি মনে করি আপনার এটি মুছে ফেলা উচিত। অন্য লোকেরা তাদের নিজস্ব কৌশলগুলি তৈরি করতে দিন ...
mbomb007

@ এমবিম্ব ২০০7 এটি খুব গল্ফ হয় না, এবং এগুলি তৈরি করতে আমি এটি ব্যবহার করেছি ... আমি মনে করি এটি ব্যক্তিগতভাবে পোস্ট করার পক্ষে যথেষ্ট।
টিম

0

জাভাস্ক্রিপ্ট (ES6), 200 216

টেম্পলেট স্ট্রিং ব্যবহার করে, নতুন লাইনগুলি তাৎপর্যপূর্ণ এবং গণনা করা হয়।

সম্পর্কে দ্রষ্টব্য replace: দুটি স্নিপেট string.split('x').map(w=>...)এবং string.replace(/[^x]+/g,w=>...)পৃথককারী ব্যবহার করে স্ট্রিংয়ের প্রতিটি অংশের জন্য একটি ফাংশন সম্পাদন করার জন্য সমানভাবে বৈধ উপায়। বিভাজক হিসাবে একটি নিউলাইন ব্যবহার করা সহজ প্রতিস্থাপনের regexp হিসাবে হ'ল /.+/g, কারণ বিন্দুটি কোনও অ-নিউলাইনের সাথে মেলে। এবং টেম্পলেটেড স্ট্রিংগুলি ব্যবহার করে নতুন লাইনের কোনও অতিরিক্ত মূল্য নেই।

f=(t,d)=>[for(c of t)`~!@#$%^&*()_+
1234567890-=
QWERTYUIOP{}|
qwertyuiop[]\\
ASDFGHJKL:"
asdfghjkl;'
ZXCVBNM<>?
zxcvbnm,./`.replace(/.+/g,r=>(p=r.indexOf(c))<0?0:q=r[(p+d)%r.length],q=c)&&q].join('')

// less golfed
x=(t,d)=>
  [for(c of t)
    '~!@#$%^&*()_+ 1234567890-= QWERTYUIOP{}| qwertyuiop[]\\ ASDFGHJKL:" asdfghjkl;\' ZXCVBNM<>? zxcvbnm,./'
    .split(' ')
    .map(r=>(p=r.indexOf(c))<0?0:q=r[(p+d)%r.length],q=c)&&q
  ].join('')
  
// TEST

out=x=>O.innerHTML+=x+'\n'

;[['Hello World',7,],['My name is Tim',3],['I Wi5h I h4d b3773r C@d3ing ski{{s', 3]]
.forEach(p=>out(p+' -> '+f(p[0],p[1])))
<pre id=O></pre>


0

সিজেম, 107 বাইট

lS/)~\S*\",./ ;'  <>? :\"  _+~!@#$%^&*() -=`"A,s(++S/"zxcvbnm
asdfghjkl
[]\qwertyuiop"N/_32ff^+.+_@fm>s\ser

সিজেএম ইন্টারপ্রেটারে এটি অনলাইনে চেষ্টা করুন ।

কিভাবে এটা কাজ করে

lS/)   e# Read one line from STDIN, split at spaces and pop the last chunk.
~\S*\  e# Evaluate the popped chunk and join the remaining ones back together.
",./ ;'  <>? :\"  _+~!@#$%^&*() -=`"
       e# Push that string.
A,s(++ e# Concatenate it with "1234567890".
S/     e# Split at spaces.
"zxcvbnm asdfghjkl []\qwertyuiop"
       e# Push that string.
S/     e# Split at spaces. (`N/' would split at linefeeds.)
_32ff^ e# XOR each character of a copy with 32.
+      e# Concatenate the copies.
.+     e# Perform vectorized concatenation. This pushes the following array:
          [ ",./zxcvbnm" ";'asdfghjkl" "[]\qwertyuiop" "<>?ZXCVBNM"
           ":\"ASDFGHJKL" "{}|QWERTYUIOP" "_+~!@#$%^&*()" "-=`1234567890" ]
_@fm>  e# Rotate each chunk by the number of character specified in the input.
s\s    e# Flatten this array and the original.
er     e# Perform transliteration.

0

জেলি , 67 বাইট

ØDṙ1ṭØQ;Øq;"“{}|“:"“<>?“-=`“[]\“;'“,./“~!@#$%^&*()_+“ ”
¢œiⱮ+2¦€œị¢

এটি অনলাইন চেষ্টা করুন!

একটি ডায়াডিক লিঙ্কটি স্ট্রিংটিকে তার বাম আর্গুমেন্ট হিসাবে গ্রহণ করে এবং স্থানগুলির সংখ্যাটিকে তার ডান আর্গুমেন্ট হিসাবে স্থানান্তরিত করে।


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.