क्या एक पत्र दूसरे के अंदर फिट होता है?


23

क्या आपको याद है कि मेरी चटाई ठीक से रंगों से समूहीकृत थी

मेरी चटाई ठीक से रंगों से समूहीकृत

कल मैं इसे देख रहा था और महसूस किया कि कुछ अक्षर दूसरों के अंदर फिट हैं। उदाहरण: एक अक्षर Pउस जगह पर फिट बैठता है जहाँ पत्र Rजाता है। तो यहाँ एक सरल चुनौती है: दो अक्षर दिए गए हैं, यदि कोई भी एक अक्षर दूसरे के अंदर फिट होता है (सीधे या घुमाया हुआ, लेकिन फ़्लिप नहीं किया गया), या यदि वे नहीं करते हैं तो एक गलत मूल्य है, एक सत्य मान लौटाएं। यही है, अगर इनपुट है [P,R]या [R,P], आपको सच्चाई वापस करनी चाहिए क्योंकि दोनों ही मामलों में एक अक्षर दूसरे के अंदर फिट बैठता है। यदि आप प्राप्त करते हैं [L,U]तो आपको वापस लौट आना चाहिए क्योंकि न तो दूसरे के अंदर फिट होना चाहिए।

नियम

  • इनपुट रेंज [0-9A-Z] में दो अल्फ़ान्यूमेरिक वर्ण होने चाहिए, क्योंकि चटाई में भी संख्याएँ होती हैं, आपको किसी भी रूप में (दो इनपुट के रूप में दो अलग-अलग वर्ण, दो वर्णों वाली एक सूची, एक स्ट्रिंग के साथ एक स्ट्रिंग) 2 चरस, जो भी)।
  • आउटपुट सुसंगत होना चाहिए (सत्य और मिथ्या मूल्य हमेशा समान होने चाहिए)।
  • फिटिंग की तालिका निम्नलिखित है (ध्यान दें कि एक पत्र हमेशा अपने उचित स्थान पर फिट बैठता है, बस अगर आपको [Y,Y]इनपुट जैसा कुछ मिलता है ):

    char fits inside chars
    --------------------------------------------------------
       C             G,O
       F             B,E,P,R
       G             O
       I             0,1,7,B,D,E,F,H,K,L,M,N,O,P,R,T,V,W,X,Z
       L             E
       M             W
       P             R
       S             O
       V             A
       W             M
       0             O
       1             B,E,L
       3             O
       6             9,O
       8             O
       9             6,O
    

मैं पूरी तरह से शपथ लेता हूं कि मैंने अपने बच्चे की चटाई में हर फिटिंग का परीक्षण किया है। (उनके माथे से पसीना बहता है।)

यह , इसलिए प्रत्येक भाषा की जीत के लिए सबसे छोटा कोड हो सकता है!

कुछ परीक्षण मामले

input  output
-------------
[C,G]  truthy (C fits inside G)
[G,C]  truthy (C fits inside G)
[F,R]  truthy (F fits inside R)
[M,W]  truthy (both fit inside the other)
[O,S]  truthy (S fits inside O)
[T,T]  truthy (T fits in its place)
[E,V]  falsey (no fit found)
[P,L]  falsey

सैंडबॉक्स पोस्ट । कृपया, मुझे माफ कर दें यदि आप और अधिक फिटिंग को याद करते हैं जो मैंने याद किया। करने के लिए बहुत-बहुत धन्यवाद Οurous मुझे फिटिंग की सूची के साथ मदद करने के लिए।



1
1में फिट नहीं है F?
user202729

@ user202729 नहीं, क्योंकि आपको 1इसे फिट करने के लिए फ्लिप करने की आवश्यकता है Fलेकिन मेरी चटाई में इसकी अनुमति नहीं है। :-)
चार्ली


1
@ Iturous यह इस अन्य प्रश्न में था जब इसके पहले से ही दो उत्तर थे ... इसके अलावा, चुनौती के पास पहले से ही कई मामलों का परीक्षण है, अधिक मामले इसमें कुछ भी नहीं जोड़ेंगे (मुझे लगता है कि सबसे रचनात्मक हिस्सा यह है कि दो इनपुट हैं विनिमेय के रूप में आप दोनों फिटिंग की जाँच करने के लिए है)।
चार्ली

जवाबों:


6

पायथन 2 , 135 130 129 बाइट्स

-1 बाइट की बदौलत लिन

lambda s:cmp(*s)%2*s[::cmp(*s)|1]in'OIH TIE XI7 RF O8 OGC LI0 O3 O96 VA O6 KI PI WI L1 WMI O0 RIB NI1 FE SOC VID ZIFB1 PF LE1 RP'

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

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

lambda*i:any({*i}&{a,c}=={*i}for a,b in zip('CFGILMPSVW013689','GO BEPR O 017BDEFHKLMNOPRTVWXZ E W R O A M O BEL O 9O O 6O'.split())for c in b)

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



2

साफ , 276 226 बाइट्स

अस्पष्ट गोल्फ-ईश। कल पॉलिश करेगा।

import StdEnv
i a b=isMember b a
t=True
f'C'b=i['GO']b
f'F'b=i['BEPR']b
f'O'b=i['GS03689']b
f'I'b=i['017BDEFHKLMNOPRTVWXZ']b
f'L''E'=t
f'P''R'=t
f'V''A'=t
f'M''W'=t
f'1'b=i['BEL']b
f'6''9'=t
f _ _=False
?a b=a==b||f a b||f b a

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



2

जावास्क्रिप्ट 155 155 153 151 149 बाइट्स

मुझे लगता है कि यह सभी मामलों पर काम करता है, सच / झूठ के लिए 1/0।

(c,f,q=1)=>"CGO,FBEPR,GO,I017BDEFHKLMNOPRTVWXZ,LE,MW,PR,SO,VA,WM,0O,1BEL,3O,69O,8O,96O".split`,`.some((v=>v[0]==c&v.includes(f)))|c==f|(q?F(f,c,0):0)

स्पष्टीकरण:

F=(
c, // input 1
f, // input 2
q=1 // variable used to execute F twice
)=>(
"CGO,FBEPR,GO,I017BDEFHKLMNOPRTVWXZ,LE,MW,PR,SO,VA,WM,0O,1BEL,3O,69O,8O,96O".split`,` 
                              // array of strings where [0] is input 1 and [>0] are the fittings
.some(                        // any element of the array meets:
(v=>v[0]==c&v.includes(f)))|  // input 1 equals [0] and input 2  exists in the lookup string OR
c==f|                         // input 1 equals input 2 OR
(q?F(f,c,0):0)                // input 2 fits inside input 1

let F=(c,f,q=1)=>"CGO,FBEPR,GO,I017BDEFHKLMNOPRTVWXZ,LE,MW,PR,SO,VA,WM,0O,1BEL,3O,69O,8O,96O".split`,`.some((v=>v[0]==c&v.includes(f)))|c==f|(q?F(f,c,0):0);
let tests = [
  ["C","G"],  //truthy (C fits inside G)
  ["G","C"],  //truthy (C fits inside G)
  ["F","R"],  //truthy (F fits inside R)
  ["M","W"],  //truthy (both fit inside the other)
  ["O","S"],  //truthy (S fits inside O)
  ["T","T"],  //truthy (T fits in its place)
  ["E","V"],  //falsey (no fit found)
  ["P","L"]   //falsey
];
tests.forEach((v)=>{console.log("F('"+v[0]+"','"+v[1]+"') = " + F(v[0],v[1]))});

बदलाव का:

  • बचाया 2 बाइट्स kamoroso94 के लिए धन्यवाद
  • क्रिस एम के लिए 2 बाइट्स बचाए
  • .some () में लुकअप विधि बदलकर 2 बाइट्स सहेजे गए

यदि यह cफिट बैठता है fया fफिट बैठता है तो क्या यह सच है c? ऐसा लगता है कि आप केवल एक मामले की जांच करते हैं।
चार्ली

यदि fफिट बैठता है तो कोड को वापस लौटना तय हैc
ब्रायन एच।

मैं बहुत अच्छी व्याख्या नहीं कर रहा हूँ, अगर कोई इसे संपादित करने का सुझाव देने के लिए स्वतंत्र महसूस करना चाहता है
ब्रायन एच।

आप 2 बाइट्स को बचाने के includes(f)बजाय उपयोग कर सकते हैं indexOf(f)>=0
kamoroso94

भयानक, यह भी नहीं पता था कि एक बात थी: डी
ब्रायन एच।

1

जूलिया 0.6 , 139 बाइट्स

(a,b)->(a==b)|any(map(x->all(in.((a,b),x))|all(in.((b,a),x)),zip("OCFILMPV16",split("CGS0368 G BEPR 017BDEFHKLMNOPRTVWXZ E W R A BEL 9"))))

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

कुछ बाइट्स को 'O' में फिट होने वाले वर्णों को समूहीकृत करके सहेजा। लेकिन उलटे इनपुट का परीक्षण बहुत अधिक कोड का उपयोग करता है ...

स्पष्टीकरण:

  • zip(☐)जिप "OCFILMPV16"और मेल पत्रों की एक स्ट्रिंग से संबंधित एकल अक्षरों को ज़िप करता है ।
  • .in(☐) लागू किया जाता है elementwise, उदा (in(a,'O'),in(b,"OCFILMPV16"))
  • all(.in(☐)) दोनों को मिल जाना चाहिए ...
  • |a,bया तो के लिए b,a...
  • any(map(☐)) ज़िपित सूची के कम से कम एक तत्व के लिए।

1

कोटलिन , 147 139 बाइट्स

fun p(s:String)=setOf(s,s.reversed()).any{it.matches(Regex("(.)\\1|F[BEPR]|I[017BDEFHKLMNOPRTVWXZ]|1[BEL]|69|CG|LE|MW|PR|VA|O[CG69038S]"))}

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

ट्राई इट ऑनलाइन के उदाहरण में प्रत्येक सकारात्मक संयोजन और कुछ नकारात्मक लोगों के लिए परीक्षण मामले शामिल हैं।

मैंने reg.ex को अनुकूलित नहीं किया है बहुत अधिक, इसलिए यह आवश्यकता से अधिक लंबा हो सकता है

EDIT: reg.ex पर कुछ बाइट्स सहेजे गए



0

PHP , 204 बाइट्स

-147 बाइट्स क्योंकि मैं केवल 2 बाइट्स निकालने के लिए वापस कैंप लगाता हूं कि मेरे कोड में कुछ बग और अप्रयुक्त चर थे! मेरा कोड अब बहुत छोटा है।

<?php $a=fgets(STDIN);for($w=0;$w<2;$w++){if(strpos(explode(',','GO,BEPR,O,017BDEFHKLMNOPRTVWXZ,E,W,R,O,A,M,O,BEL,O,9O,O,6O')[strpos(CFGILMPSVW013689,$a[0])],$a[1])!==false){echo"t";break;}$a=strrev($a);}

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


0

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

->c,t{x='CFGILMPSVW013689'.chars.zip('GO BEPR O 017BDEFHKLMNOPRTVWXZ E W R O A M O BEL O 9O O 6O'.split).to_h;p x.key?(c)&&x[c].include?(t)}

अजगर 3 उत्तर के समान ही सुंदर है, लेकिन एक अलग निष्पादन के साथ।

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