আমার সোলিনগাইন সংশোধন করুন


10

Introduciton

আপনারা কেউ কেউ হয়ত বুঝতে পেরেছেন যে আমার ফোনটি ব্যবহার করার সময় আমি একটি ম্লান টাইপার। এজন্য আমি চাই আপনি এমন একটি প্রোগ্রাম লিখুন যা আমার টাইপগুলিকে সংশোধন করে।

Chalkrnge

একটি ভুল বানানযুক্ত শব্দ দেওয়া, সম্ভাব্য সমস্ত শব্দ যা আমি লিখতে চেয়েছিলাম তার আউটপুট।

Typso

আমার টাইপসের মূল কারণটি হ'ল আমি ভুল কীগুলি আঘাত করেছি এবং প্রায়শই পাশের চাবিটি আঘাত করি। নিম্নলিখিতটি আমার কীবোর্ড লেআউটটি রয়েছে:

q w e r t y u i o p
 a s d f g h j k l
   z x c v b n m
   , [ space ] .

নোট করুন যে নীচের সারিটি, , [ space ] .এই চ্যালেঞ্জটিতে কখনই ব্যবহৃত হবে না

আমি আঘাত না হবে: কিছু কারণে, আমি শুধু ভুল অনুভূমিকভাবে করতে এন পরিবর্তে , কিন্তু আমি একটি আঘাত পারে একটি পরিবর্তে

উদাহরণস্বরূপ, আমি মস্ত শব্দটির বানানটি শেষ করতে পারলাম :

akioot

যেখানে আমি প্রতিটি চাবি ছেড়ে গেছে।

তবে ভুলে যাবেন না যে আমি শব্দটির প্রতিটি অক্ষরে অগত্যা ভুল করতে পারি না ।

Ezsmple

ধরা যাক ইনপুটটি হ'ল:

vid

শব্দটি হতে পারে এমন সম্ভাবনাগুলি হ'ল:

vid cid bid
vis cis bis
vif cif bif
vod cod bod
vos cos bos
vof cof bof
vud cud bud
vus cus bus
vuf cuf buf

এর মধ্যে নিম্নলিখিত অভিধানে রয়েছে:

cod
cud
bid
bud
bus

সুতরাং এটি আপনার আউটপুট হওয়া উচিত।

Rulws

আপনার অভিধান হিসাবে এখানে পাওয়া পাঠ্য ফাইলটি কেবল আপনার ব্যবহার করা উচিত: http://mieliestronk.com/corncob_lowercase.txt । আপনার বাইট গণনার অংশ হিসাবে আপনাকে এই ফাইলটি গণনা করতে হবে না।

সমস্ত ইনপুট একক শব্দ হবে। আপনি নিজের আউটপুটটি যেভাবে চান প্রদর্শন করতে পারেন (যতক্ষণ না কোনও প্রকারের বিভাজন রয়েছে)।

ধরে নিন যে সমস্ত ইনপুট সহ, আপনি অভিধানে থাকা একটি বৈকল্পিক পাবেন।

Wibninf

বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জয়ী।


11
আমি যখন শিরোনামটি দেখলাম, আমি ভেবেছিলাম ওয়েলশ সম্পর্কে এটি আরও একটি চ্যালেঞ্জ হতে পারে ...
মার্টিন এন্ডার

আমি অনুমান করি যে অভিধানকে সংকুচিত করা একটি চ্যালেঞ্জের অংশ, এবং আমি যদি কোনও ফাইল থেকে অভিধান পড়তে পছন্দ করি তবে আমার দৈর্ঘ্যটি আমার স্কোরের দিকে গুনতে হবে, তবে এটি সেই ব্যক্তিদের সুবিধার জন্য স্পষ্ট করে দেওয়া উচিত যারা পড়েনি পুরো মেটা পিএস যদি আপনি স্যান্ডবক্সে কিছু পোস্ট করতে চলেছেন তবে প্রতিক্রিয়া জানাতে যথেষ্ট সময় রেখে দিন।
পিটার টেলর

@ পিটারটেলর আসলেই নয়, এটি মূলত অভিধানের বিশ্লেষণ যা সঙ্কুচিত করা যায়।
বিটা ক্ষয়

সুতরাং আমি যদি ফাইলটি ইনলাইন করি তবে আমি কী গণনা করব? সীমানার জন্য দুটি বাইট ""?
পিটার টেলর

@ পিটারটেলর আচ্ছা হ্যাঁ
বিটা

উত্তর:


1

জাপট, 50 47 বাইট

;D=R+Dv;W=3pUl¹óW ®s3 s1 £DgDbUgY)-X+1}Ãf@~V·bX

ইনপুট হ'ল ফিক্স করার শব্দ এবং অভিধানটি স্ট্রিং হিসাবে। এটি অনলাইন পরীক্ষা! (দ্রষ্টব্য: আপনাকে ম্যানুয়ালি অভিধানে স্ট্রিংয়ে পেস্ট করতে হবে))

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

;D=R+Dv;W=3pUl¹óW ®s3 s1 £DgDbUgY)-X+1}Ãf@~V·bX  // Implicit: U = input, V = dictionary, R = newline
;                                                // Re-assign preset variables. D = "QWERTYUIOP\nASDFGHJKL\nZXCVBNM";
 D=R+Dv;                                         // Convert D to lowercase and prepend a newline.
        W=3pUl¹                                  // Set W to 3 to the power of U.length.
               óW                                // Create the range [W, W+W).
                  ®                       Ã      // Map each item Z in the range by this function:
                   s3                            //  Take Z.toString(3).
                      s1                         //  Remove the first character.
                                                 //  If the input is two chars long, e.g. "id", the array is now
                                                 //  ["00", "01", "02", "10", "11", "12", "20", "21", "22"].
                         £            }          //  Map each char X and index Y in the string by this function:
                              UgY                //   Get the char at position Y in U.
                            Db   )               //   Take the index of the char in D.
                                  -X+1           //   Subtract X and add 1.
                          Dg                     //   Get the char at that position in D.
                                                 // This maps our array for "id" to:
                                                 // ["of", "od", "os", "if", "id", "is", "uf", "ud", "us"].
                                        f@       // Filter to only the items X where
                                             bX  //  the index of X in
                                           V·    //  the dictionary, split at newlines,
                                          ~      //  is not -1.
                                                 // This filters our array for "id" to:
                                                 // ["of", "if", "id", "is", "us"].
                                                 // Implicit: output last expression

2

পাইথন 2.7, 161 159 বাইট

from itertools import*
lambda a,k=' qwertyuiop asdfghjkl zxcvbnm ':set(map(''.join,product(*[k[k.index(l)-1:k.index(l)+2].strip()for l in a])))&set("<dictionary>".split())

পাঠযোগ্য সংস্করণ

from itertools import *
dictionary=set("<dictionary>".split())
keyboard=' qwertyuiop asdfghjkl zxcvbnm '
x=[]
for letter in input():
 index=keyboard.index(letter)
 x.append(keyboard[index-1:index+2].strip())

words=set(map(''.join,product(*x)))
print words&dictionary
  • @ টুকুএক্সএক্সকে 1 বাইট সংরক্ষণ করা হয়েছে

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