घुमाए गए तारों का पता लगाएं


20

से दो तार पढ़े stdin
आउटपुट Yesयदि एक स्ट्रिंग दूसरे का घुमा हुआ संस्करण है।
अन्यथा उत्पादनNo

परीक्षण के मामलों

इनपुट

CodeGolf GolfCode

उत्पादन

Yes

इनपुट

stackexchange changestackex

उत्पादन

Yes

इनपुट

stackexchange changestack

उत्पादन

No

इनपुट

Hello World

उत्पादन

No

तो ( abcdefAB , ABabcdef ) एक "YES" है?
12x

यह वास्तव में एक रोटेशन होना चाहिए या एक संयोजन ठीक भी है? जैसे। क्या Stackexchange Stackchangeexलौटेगा?
jpjacobs 12

1
@ बारहवीं, हाँ। @jpjacobs, यह वापस आ जाएगी No। रोटेशन एक शिफ्ट है, जैसे कि एलईडी स्क्रॉलिंग संकेत
जिब्बलर

क्या तार हमेशा व्हाट्सएप से मुक्त और व्हाट्सएप द्वारा अलग होते हैं?
जॉय

अधिक विशेष रूप से, उन तारों में कौन से वर्णों की अनुमति है?
जॉय

जवाबों:


7

एपीएल (28)

दो लाइनों पर इनपुट लेता है।

'No' 'Yes'[1+(⊂⍞)∊⌽∘A¨⍳⍴A←⍞]

स्पष्टीकरण:

  • A←⍞: इनपुट की एक पंक्ति पढ़ें और इसे A में संग्रहीत करें
  • ⌽∘A¨⍳⍴A: [1..length ए] में प्रत्येक एक्स के लिए, एक्स द्वारा एक्स को घुमाएं। एक सूची देता है, अर्थातestT stTe tTes Test
  • (⊂⍞)∊: इनपुट की एक और पंक्ति पढ़ें, और देखें कि क्या यह इस सूची में है।
  • 1+: इसमें एक जोड़ें, यदि 1 तार घुमाया नहीं गया था और 2 यदि वे थे
  • 'No' 'Yes'[... ]: सूची से पहले या दूसरे तत्व का चयन करें, इस 'No' 'Yes'आधार पर कि तार घुमाए गए थे या नहीं।
  • यह मान स्वचालित रूप से आउटपुट है।

19

रूबी ४ ९ ४१

a,b=$*;puts (a*2).sub(b,'')==a ?:yes: :no

संपादित करें: प्रतिस्थापित हो जाता है।


यह एक सरल विचार है।
जोए

बहुत चालाक। :)
st0le

$*जब सवाल निर्दिष्ट हो तो argv है stdin
मैथ्यू CAROFF

7

पायथन, 70 बाइट्स

a,b=raw_input().split()
print ['No','Yes'][a in b*2and len(a)==len(b)]

परिक्षण ...


+1 अच्छा, एक सरणी से परिणाम का चयन करना चतुर है! :-)
तमारा विज्समन

3
प्रश्न में कहा गया है कि आपको दो तार पढ़ने चाहिए stdin, जिनसे यह समाधान नहीं होता है।
वेंचरो

@Ventero: ठीक किया गया।
क्विक्सोटिक

आप अंतरिक्ष में छोड़ सकते हैंprint ['No
Movatica

6

अजगर 70 वर्ण

a,b=raw_input().split()
print'YNeos'[len(a)<>len(b)or a not in 2*b::2]

स्लाइस ट्रिक के लिए gnibbler का धन्यवाद।


1
गोल्फस्क्रिप्ट समाधान के रूप में एक ही समस्या: यदि आप इनपुट करते हैं nn nfn, तो आपको मिलता है Yes, जो गलत है।
तमारा वाइज्समैन

@TomWij बग खोजने के लिए धन्यवाद। सही किया। अब काम करना चाहिए।
fR0DDY

आप इसके <>द्वारा प्रतिस्थापित कर सकते -हैं, जिसके परिणामस्वरूप 0वे समान लंबाई के होंगे।
तमारा विज्समैन

लेकिन क्या होगा अगर वे समान लंबाई के नहीं हैं? तो यह इतनी अच्छी तरह से काम नहीं करता है :-)
hallvabo

@ हल्लावाबो तो तार एक दूसरे के घुमाए गए संस्करण नहीं हैं।
fR0DDY

5

जे, ४ 47

y=:>2{ARGV
(>1{ARGV e.1|.^:(i.#y)y){'No',:'Yes'

दो जे जवाब क्यों?
जेबी

@ जेबी: क्योंकि यह बिल्डिन रोटेट का उपयोग करता है। दोनों उत्तर su ^ H ^ H इतने अच्छे btw नहीं हैं। वहाँ एक है बहुत गोल्फ के लिए कमरे की।
at११

क्यों दूसरे, फिर, मैं पूछ रहा हूँ? :-)
JB

@ जेबी: क्योंकि मैंने सोचा था कि यह मुश्किल से कानूनी है: (पी) [जबकि दूसरा एक अच्छी तरह से लिस्प में फैलता है। ]
१२:१३ पर १३:११

इर्र ... दूसरे को कमांड-लाइन से इनपुट पढ़ने के लिए लगता है
JB

5

युक्ति के अनुसार (समान स्ट्रिंग लंबाई):

पर्ल, 42 43 चर

$.=pop;$_=(pop)x2;print+(qw'yes no')[!/$./]

यदि अलग-अलग आकार के तारों की अनुमति है, तो समाधान होगा:

पर्ल, 47 चरस

$.=(pop)x8;$_=(pop)x9;print+(qw'yes no')[!/$./]

RBO


गोल्फस्क्रिप्ट समाधान के रूप में एक ही समस्या: यदि आप इनपुट करते हैं nn nfn, तो आपको मिलता है Yes, जो गलत है।
तमारा वाइज्समैन

1
लगता है ठीक है (मैं पहले संस्करण में 'याद किया!') nn nfn "=> नहीं " कोडगोल्फ गोल्फकोड "=>> हां
रबर के जूते

5

गोल्फस्क्रिप्ट, 31

' '/:)~,\,=)~.+\/,(&'Yes''No'if

यह पहले एक लंबाई की जांच करता है, इसलिए इसे उम्मीद के मुताबिक काम करना चाहिए।


:)और =)बहुत खुश कोड के लिए +1
TuxCrafting

4

जे, ५

{&('No';'Yes')@-:/@:((/:~@(|."0 _~i.&$))&.>)&.(;:&stdin)_

नमूना उपयोग:

$ echo -n CodeGolf GolfCode | jconsole rotate.ijs
Yes
$ echo -n stackexchange changestackex | jconsole rotate.ijs
Yes
$ echo -n stackexchange changestack | jconsole rotate.ijs
No
$ echo -n Hello World | jconsole rotate.ijs
No


3

जावास्क्रिप्ट, 51

function f(a,b)a&&(a+a).replace(b,"")==a?"Yes":"No"

जावास्क्रिप्ट में एक विहित मेजबान नहीं है, इसलिए यह उत्तर दो तर्कों के कार्य के रूप में लिखा गया है। अगर हम JS 1.7 फीचर्स (एक्सप्रेशन क्लोजर) को बाधित करते हैं तो स्कोर 60 तक चला जाता है।

स्पाइडरमोंकी शेल में यह (71 के स्कोर के लिए) होगा:

[a,b]=readline().split(" ");print(a&&(a+a).replace(b,"")==a?"Yes":"No")

5 साल बाद और अब आप =>फ़ंक्शन संकेतन का उपयोग कर सकते हैं ;)
जे एटकिन

3

पायथन, 66 63

ए, बी = raw_input ()। विभाजन ()
print'YNeos '[एक! = (2 * क) .replace (ख, "") :: 2]

69 चार में एक और समाधान

ए, बी = raw_input ()। विभाजन ()
प्रिंट ['नहीं', 'हां'] [ए में बी * २ आईएनडी लेन (ए) == लेन (बी)]

2
print'YNeos'[a!=(2*a).replace(b,"")::2]
जिब्बलर

@gnibbler अच्छी चाल, सुझाव के लिए धन्यवाद। मैंने कोड को अपडेट किया
कोडिंग मैन

2

जे, 84४

y=:(>1{ARGV),:(>2{ARGV)
((0{y)e.(y&((]$0{[),(]-~[:}.[:$[)$1{[)/.i.}.$y)){'No',:'Yes'

2

जावास्क्रिप्ट (120 वर्ण)

function f(a,b) {for (i=0,A=a.split("");A.join("")!=b&&i++<a.length;A.push(A.shift()));return A.join("")==b?'Yes':'No';}

आउटपुट:

f('CodeGolf','GolfCode'); //Yes
f('stackexchange','changestackex'); //Yes
f('stackexchange','changestack'); //No
f('Hello','World'); //No
f('nn','nBn'); //No

2

रूबी, 58 (62) अक्षर

a,b=gets.split;$><<(a.size==b.size&&/#{a}/=~b*2?:Yes: :No)

यह समाधान मानता है कि इनपुट में केवल अल्फ़ान्यूमेरिक वर्ण हैं (वास्तव में वह सब कुछ जिसका कोई विशेष अर्थ नहीं है एक नियमित अभिव्यक्ति के अंदर ठीक है)।

एक समाधान जिसमें यह बाधा नहीं है वह 4 वर्ण लंबा है

a,b=gets.split;$><<(a.size==b.size&&(b*2).index(a)?:Yes: :No)

2

पायथन, 71

a,b=raw_input().split()
print'Yes'if a in b*2and len(a)==len(b)else'No'

गोल्फस्क्रिप्ट समाधान के रूप में एक ही समस्या: यदि आप इनपुट करते हैं nn nfn, तो आपको मिलता है Yes, जो गलत है।
तिमवी

समस्या हल हो गई है, कम बनी हुई है ... :-)
तमारा विज्समैन

निर्दिष्ट के अनुसार स्टड से नहीं पढ़ा जाता है।
वूले

अब यह करता है ... :-)
तमारा विजसमैन


2

रूबी, ४१

puts gets =~ /^(.+)(.*) \2\1$/ ?:Yes: :No

कुछ भी प्रिंट नहीं करता है, परिणाम: 'नहीं' इनपुट 'आ आआ' (मेरी मशीन पर) के लिए। हालांकि regexp दृष्टिकोण एक अच्छा विचार हो सकता है।
स्टीनलेग

आर्गन्स के बजाय स्टड से वास्तव में प्रिंट और इनपुट को ठीक करें: puts gets =~ /^(.+)(.*) \2\1$/ ?:Yes: :No- इसे 41 वर्ण तक बढ़ाता है।
निमो 157

2

हास्केल ( 98 96 वर्ण)

g x y@(t:r)(z:w)|x==y="Yes"|1>0=g x(r++[t])w
g _ _[]="No"
f(x:y:_)=g x y y
main=interact$f.words


2

स्काला 78

val b=readLine split " "
print(b(0).size==b(1).size&&(b(0)+b(0)contains b(1)))

यह आकार की जांच के बारे में शर्म की बात है, इसके बिना गिनती 54 तक गिर जाती है

val a=readLine split " "
print(a(0)+a(0)contains a(1))

"""val b=readLine split " " print(b(0).sorted==b(1).sorted)""".lengthपैदावार 56
उपयोगकर्ता अज्ञात


2

GolfScript, 25 बाइट्स

' '/~.2*@/''+='Yes''No'if

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

             # STACK: "CodeGolf GolfCode"
' '/         # Split input string by spaces.
             # STACK: [ "CodeGolf" "GolfCode" ]
~            # Dump the array.
             # STACK: "CodeGolf" "GolfCode"
.            # Duplicate the topmost string.
             # STACK: "CodeGolf" "GolfCode" "GolfCode"
2*           # Repeat the topmost string.
             # STACK: "CodeGolf" "GolfCode" "GolfCodeGolfCode"
@            # Rotate the three topmost strings.
             # STACK: "GolfCode" "GolfCodeGolfCode" "CodeGolf"
/            # Split the second topmost string around the topmost one.
             # STACK: "GolfCode" [ "Golf" "Code" ]
''+          # Flatten the array of strings.
             # STACK: "GolfCode" "GolfCode"
=            # Check for equality.
             # STACK: 1
'Yes''No'if  # Push 'Yes' for 1, 'No' for 0.
             # STACK: "Yes"


1

लुआ ११५ चरस

a,b=io.read():match"(%w+) (%w+)"c=b repeat c=c:sub(2,-1)..c:sub(1,1) s=s or a==c until b==c print(s and"Yes"or"No")

1

सी कार्यक्रम - 146

char b[99],c[99],*p,*q;main(n){q=(p=b+(n=strlen(gets(c))))+n;sprintf(b,"%s%s"
,c,c);for(gets(c);p>b&&strcmp(p,c);--p,*--q=0);puts(p>b?"Yes":"No");}


1

पर्ल, 123 वर्ण

@s1=split(//,shift);
$s2=shift;
$i=0;
while($i<=@s1){
    if(join("",@s1) eq $s2){die "yes";}
    unshift @s1,pop @s1;
    $i++;
}
die "no";

1

रूबी, ३० ३ 37

gets
puts~/^(.+)(.*) \2\1$/?:Yes: :No

एक संस्करण जो "हाँ" और "नहीं" के बजाय "सही" और "गलत" प्रिंट करता है:

gets
p !! ~/^(.+)(.*) \2\1$/

ये दोनों अलग-अलग लंबाई के तार के साथ काम करते हैं (पुराने के विपरीत)


काम करता है अगर दोनों तारों की लंबाई समान है, लेकिन 'गोल्फकोड गोल्फ' जैसे इनपुट पर विफल रहता है।
स्टीनलेग


1

पर्ल (सिर्फ एक त्वरित फिक्स)

रबड़ के जूते के समाधान के लिए एक फिक्स, एक नया उपयोगकर्ता होने के नाते जो मैं हूं मैं अभी तक टिप्पणी नहीं कर सकता हूं इसलिए मैं बस एक नया उत्तर पोस्ट करूंगा।

जैसा कि उल्लिखित विधि उपयोगकर्ता इनपुट से निर्मित एक नियमित अभिव्यक्ति का उपयोग करती है, इस तरह से एक छोटे से रेगेक्स इंजेक्शन प्रदर्शन करना संभव है:

> perl -le '$ = = pop; $ _ = (pop) x2; प्रिंट + (qw / Yes /) [/>./]' कुछ भी '। *'।
हाँ

इसका उपयोग \ Q का उपयोग करना है (जिसे उद्धरण के रूप में भी जाना जाता है):

> perl -le '$। = pop; $ _ = (pop) x2; प्रिंट + (qw / Yes /) [! / \ Q $। /]' कुछ भी '। *।
नहीं

कोड को 'कहना' का उपयोग करके और छोटा किया जा सकता है लेकिन इसे पाठक के लिए एक अभ्यास के रूप में छोड़ दिया जाता है :)


इसके अलावा, print+(qw/yes no/)[आप के बजाय शायद लिख सकते हैं print qw(yes no)[जो दो अक्षर छोटा है।
तिमवी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.