मेरे समाज के अनुरूप


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 ] .इस चुनौती में नीचे की पंक्ति का उपयोग कभी नहीं किया जाएगा

किसी कारण से, मैं केवल क्षैतिज रूप से गलतियां करता हूं: मैं कभी भी j की जगह n को नहीं मारूंगा , लेकिन मैं d के बजाय f को हिट कर सकता हूं ।

उदाहरण के लिए, मैं शब्द के रूप में मैला शब्द वर्तनी समाप्त कर सकता है :

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
जब मैंने शीर्षक देखा, तो मुझे लगा कि यह वेल्श के बारे में एक और चुनौती होगी ...
मार्टिन एंडर

मुझे लगता है कि डिक्शनरी को कंप्रेस करना चुनौती का हिस्सा है, और अगर मैं किसी फाइल से डिक्शनरी पढ़ना पसंद करता हूं, तो मुझे अपने स्कोर की लंबाई को गिनना चाहिए, लेकिन इसे उन लोगों के लाभ के लिए स्पष्ट किया जाना चाहिए जिन्होंने नहीं पढ़ा है। पूरा मेटा। पुनश्च यदि आप सैंडबॉक्स में कुछ पोस्ट करने जा रहे हैं, तो प्रतिक्रिया प्राप्त करने के लिए इसे लंबे समय तक छोड़ दें।
पीटर टेलर

@PeterTaylor वास्तव में नहीं, यह मुख्य रूप से केवल डिक्शनरी की पार्सिंग है जिसे असम्पीडित किया जा सकता है।
बीटा डिके

इसलिए यदि मैं फ़ाइल को इनलाइन करता हूं, तो मुझे क्या गिना जाएगा? परिसीमन के लिए दो बाइट्स ""?
पीटर टेलर

@PeterTaylor अच्छी तरह से हाँ
बीटा डिके

जवाबों:


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
  • @TuukkaX को 1 बाइट धन्यवाद दिया

आपके पास एक बेकार व्हाट्सएप है .strip() for
यति
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.