Numpad शब्द खोज


20

1 से 999 तक के पूर्णांक को देखते हुए, एक सत्य मान का उत्पादन अगर यह क्षैतिज, लंबवत, या तिरछे, या तो आगे या पीछे, कहीं भी अंक के 3x3 वर्ग में 1-9 से एक मानक संख्या पैड पर दिखाई देता है :

789
456
123

यदि संख्या प्रकट नहीं होती है, तो एक मिथ्या मान आउटपुट करें।

आप के लिए सच्चाई का उत्पादन करने के लिए आवश्यक सटीक 65 नंबर हैं:

1
2
3
4
5
6
7
8
9
12
14
15
21
23
24
25
26
32
35
36
41
42
45
47
48
51
52
53
54
56
57
58
59
62
63
65
68
69
74
75
78
84
85
86
87
89
95
96
98
123
147
159
258
321
357
369
456
654
741
753
789
852
951
963
987

बाकी सब मिथ्या है।

बाइट्स में सबसे छोटा कोड जीतता है।



इनपुट में 0 हो सकता है, यह एक स्ट्रिंग हो सकता है।
केल्विन के शौक

मैं देख रहा हूँ कि लुइस मेंडू निकट भविष्य में एक MATL उत्तर के साथ दिखा रहा है।
मैजिक ऑक्टोपस Urn

जवाबों:


16

जावास्क्रिप्ट (ईएस 6), 83 ... 74 73 बाइट्स

एक स्ट्रिंग के रूप में इनपुट लेता है।

n=>1/([a,b,c]=[...n].map(v=>--v+v/3|0))||45242>>(a^b)&(~c&&n<99|b*2==a+c)

सहेजे गए 3 बाइट्स ETHproductions के लिए धन्यवाद

यह काम किस प्रकार करता है

हम उस संख्या के अनुसार प्रत्येक अंक में एक ऑफसेट लगाकर नंबर पैड को बदल देते हैं:

  • शीर्ष पंक्ति के लिए +1
  • मध्य पंक्ति के लिए 0
  • -1 नीचे पंक्ति के लिए।

नीचे सभी कोड हेक्साडेसिमल में दर्शाए गए हैं।

7 8 9      8 9 A  (+1)
4 5 6  =>  4 5 6  (unchanged)
1 2 3      0 1 2  (-1)

आइए इन नए कुंजी कोडों के सभी XOR संयोजनों पर विचार करें। कोष्ठक के साथ सम्‍मिलित कुंजियों पर प्रकाश डाला गया है।

XOR|  0   1   2   4   5   6   8   9   A 
---+------------------------------------
 0 |  0  [1]  2  [4] [5]  6   8   9   A 
 1 | [1]  0  [3] [5] [4] [7]  9   8   B 
 2 |  2  [3]  0   6  [7] [4]  A   B   8 
 4 | [4] [5]  6   0  [1]  2  [C] [D]  E 
 5 | [5] [4] [7] [1]  0  [3] [D] [C] [F]
 6 |  6  [7] [4]  2  [3]  0   E  [F] [C]
 8 |  8   9   A  [C] [D]  E   0  [1]  2 
 9 |  9   8   B  [D] [C] [F] [1]  0  [3]
 A |  A   B   8   E  [F] [C]  2  [3]  0 

हम देख सकते हैं कि दो कुंजी सन्निहित हैं यदि और केवल उनके कोडिंग XORing के बाद निम्न मानों में से एक होता है:

1, 3, 4, 5, 7, C, D, F

इस सूची को निम्नलिखित बाइनरी मास्क में पैक किया जा सकता है:

  FEDCBA9876543210
  ----------------
0b1011000010111010 = 0xB0BA = 45242

इसलिए परीक्षण यह निर्धारित करने के लिए कि दो प्रमुख कोड (ए, बी) दो सन्निहित कुंजी के अनुरूप हैं:

45242 >> (a ^ b) & 1

तीन प्रमुख कोडों (ए, बी, सी) के लिए, हमें इस अतिरिक्त परीक्षण की आवश्यकता है:

b * 2 == a + c

उदाहरण:

a = 0xA
b = 0x6
c = 0x2

0xB0BA >> (0xA ^ 0x6) & 1 == 0xB0BA >> 0xC & 1 == 1
=> 0xA and 0x6 are contiguous key codes

0x6 * 2 == 0xA + 0x2
=> 0xA, 0x6 and 0x2 are contiguous key codes on the same row, column or diagonal

डेमो

यह स्निपेट सत्य मूल्यों की सूची का उत्पादन करता है।


जबरदस्ती आपका मित्र है: a-.5किसी भी सरणी aवाले (शून्य या) एक पूर्णांक के लिए सही है। n=>([a,b,c]=[...n].map(v=>--v+v/3|0))-.5||n%10&&n<100|b*2==a+c&&45242&1<<(a^b)
ETHproductions

@ETHproductions आह, अच्छा! 1/aऔर भी छोटा है और मुझे भी काम करना चाहिए।
अरनुलद 20

5

पायथन 3, 72 बाइट्स

lambda n,s="123 456 789 741 852 963 42 753 86 26 159 84 ":n in s+s[::-1]

इनपुट को एक स्ट्रिंग के रूप में लिया जाता है।

गोल्फ सुझाव आपका स्वागत है! : डी


क्या यह संख्या को एक स्ट्रिंग के रूप में लेता है?
FlipTack

@ Flp.Tkc हाँ यह करता है। उस पोस्ट में उल्लेख करूँगा। धन्यवाद!
यति ०

@TuukkaX स्ट्रिंग में एक अतिरिक्त स्थान है s, आप 1 बाइट बचा सकते हैं।
गुरुपद ममदापुर

@GurupadMamadapur मैं यह नहीं देखता कि मैं अपने वर्तमान 72 बाइट्स समाधान को आपके 74 बाइट्स समाधान में क्यों बदलूंगा ...: D और यदि आप मेरे स्ट्रिंग का उल्लेख करते हैं s, जिसमें एक व्हाट्सएप है 84, तो आप गलत हैं, क्योंकि यह आवश्यक है। यदि इसमें एक व्हाट्सएप नहीं होता, तो परिणामी स्ट्रिंग में एक श्रृंखला '8448' होगी, जो असफल टेस्टकेस को जन्म देगी। सुझावों के लिए धन्यवाद!
यति

@TuukkaX हाँ आप अतिरिक्त व्हाट्सएप के बारे में सही हैं, एक चूक हो गई :)
गुरुपद ममदापुर

4

Befunge, 169 161 159 बाइट्स

38*:2+"*0>DTV{51"3*\3*"kV"3*\3*"{w"3*\3*"mr"v
v:\&+*83:++66:+"c":+"?":+"$":++66:+"W":*6\*4<
_v#:\_v#*-+%+55g00*+55g02\*-g02\*-g00\`9::::p02/+55p00%"d":
0<@.!!<

इसे ऑनलाइन आज़माएं!

पहली दो पंक्तियाँ स्टैक पर परीक्षण संख्याओं की सूची को आगे बढ़ा रही हैं। यह आकार के क्रम में किया जाता है, क्योंकि यह कभी-कभी श्रृंखला में पिछले एक से ऑफसेट के रूप में संख्या को उत्पन्न करने के लिए आसान हो सकता है बजाय इसे खरोंच से उत्पन्न करने के। एक बार जब हम बड़ी संख्या में पहुंच जाते हैं, तो हम कभी-कभी एक बाइट को जोड़ियों में उत्पन्न करके भी बचा सकते हैं, उदाहरण के लिए "kV"3*\3*हमें नौ बाइट्स में 258 और 321 देते हैं, जहां व्यक्तिगत रूप से वे प्रत्येक में पांच बाइट लेते हैं।

मुख्य लूप लाइन तीन पर है, चारों ओर लपेट के साथ दाएं से बाएं निष्पादित। यह केवल स्टैक पर सभी परीक्षण संख्याओं के माध्यम से पुनरावृत्ति करता है, मूल्य की तुलना में, मान 100%, और मूल्य / 10। यदि उनमें से कोई भी इनपुट नंबर या संख्या <= 9 से मेल खाता है तो हम आउटपुट 1 और बाहर निकलते हैं। यदि कोई मेल नहीं है, तो हम लूपिंग जारी रखते हैं। यदि हम स्टैक पर परीक्षण संख्याओं से बाहर निकलते हैं तो हम 0 और बाहर निकलें।

मुझे बाइट्स के एक जोड़े को बचाने के लिए मिस्टाह फिगर्स के लिए धन्यवाद ।


मुझे लगता है कि आप 0<@.!!<2 बाइट्स को बचाने के लिए अंतिम पंक्ति को बदल सकते हैं । जब IP दूसरे तीर पर नीचे आता है तो यह स्टैक के शीर्ष पर गैर-शून्य होता है। इसे ऑनलाइन आज़माएं!
MildlyMilquetoast

3

जेली , 29 24 19 बाइट्स

@ डेनिस के Kऔर के सुझाव के लिए 5 बाइट्स सहेजे गए Ɠ

9s3µUŒD;;Z;ŒDµ;UKƓẇ

इसे ऑनलाइन आज़माएं!

व्याख्या

9Rs3µUŒD;;Z;ŒDµ;UKƓẇ  Main link. Argument: number
9s3                   Split [1..9] into [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
   µ                  New monadic chain
    U                 Reverse the rows
     ŒD               Take the diagonals of the result
       ;              Append the original rows
        ;Z            Append the original columns
          ;ŒD         Append the original diagonals
             µ        New monadic chain
              ;U      Append the reverse of everything
                K     Join by spaces
                 Ɠẇ   Check if a line from STDIN is in the result

यदि आप STDIN से इनपुट पढ़ते हैं, तो 9s3µUŒD;;Z;ŒDµ;UKƓẇ5 बाइट्स बचाता है।
डेनिस

क्या आपको पंक्तियों को उलटने की आवश्यकता है? वे आगे या पीछे दिखाई दे सकते हैं, इसलिए 123,456,789जैसा होना चाहिए789,456,123
रिले

@ रिले मैं प्रत्येक पंक्ति को उलट देता हूं, न कि पंक्तियों को एक सरणी के रूप में। मुझे लगता है कि मैं वहाँ स्पष्ट हो सकता था। वैसे भी, यह विकर्णों के आधे हिस्से को प्राप्त करने के लिए किया जाता है।
पुरकाकूदरी

2

रूबी, 77 बाइट्स

->n{!!((s='123 456 789 147 258 369 753 951 86 62 24 48 ')+s.reverse)["#{n}"]}

आप एक स्ट्रिंग बना रहे हैं जो '123 456 789 147 258 369 753 951' + एक ही स्ट्रिंग उलट है, और जाँच रहा है कि क्या पैरामीटर स्ट्रिंग पर पाया जाता है, है ना? यदि ऐसा है, तो यह समाधान अमान्य है। उदाहरण के लिए, 86और 24विफल हो जाएगा।
यति

नियम कहते हैं कि आपको केवल एक सत्य या गलत मूल्य के आउटपुट की आवश्यकता है, इसलिए आपको !!या परिचारक कोष्ठक की आवश्यकता नहीं है।
जॉर्डन

0

मारना, ,५

printf %s\\n 123 456 789 741 852 963 42 753 86 26 159 84|tee >(rev)|grep $1

किसी चीज को आउटपुट करता है और उस सूची के सभी मानों के लिए 0 लौटाता है

कुछ भी नहीं छापता है और अन्य सभी मामलों में 1 रिटर्न देता है


0

जावा, 397 बाइट्स

public class Numpad {public static void main(String[] args){Scanner input=new Scanner(System.in);int in=input.nextInt();int h=in/100;int u=in%10;int t=(in%100)/10;boolean out=false;input.close();if(in<10)out=true;else if( h==0){int decider=Math.abs(t-u);if((decider==1)||(decider==3)||(decider==4))out=true;}else{if ( Math.abs(h-t) == Math.abs(t-u))out=true;}System.out.println("RESULT : "+out);}}

मैं इस के लिए नया हूँ .. कृपया किसी भी गुमनामी का बहाना करो।
नफी नोमोर

नमस्कार, और साइट पर आपका स्वागत है! मैंने आपकी पोस्ट को एडिट कर दिया है ताकि कोड सेक्शन को कोड के रूप में प्रदर्शित किया जाए और एक बाइट काउंट जोड़ा जाए, जो कि यहां उत्तरों के लिए मानक है। यह प्रतियोगिता ए कोड-गोल्फ प्रतियोगिता है, जिसका अर्थ है कि अंतिम लक्ष्य अपने कोड को यथासंभव कम करना है। उदाहरण के लिए, आप छोटे चर नाम का उपयोग कर सकते हैं, और एक पूर्ण वर्ग के बजाय एक फ़ंक्शन को परिभाषित कर सकते हैं। मैं जावा में महान नहीं हूं, लेकिन कुछ और सुझाव यहां उपलब्ध हैं । आपको अपने कोड को छोटा बनाने का प्रयास करना चाहिए, और फिर नए संस्करण को अपनी पोस्ट में संपादित करना चाहिए ।
DJMcMayhem
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.