परिवर्णी शब्द वास्तव में आपके संदेश सेंसर को संकीर्ण कर सकते हैं


36

इस वजह से, यदि किसी शब्द का संक्षिप्त रूप है, तो आपको बेहतर तरीके से काम करने की आवश्यकता है। आपको यह भी लगता है कि यह देखना सार्थक होगा कि क्या प्रश्न में वाक्यांश और शब्द पुनरावर्ती शब्द हैं।

आपका कार्य:

एक शब्द और फिर एक वाक्यांश को एक पंक्ति द्वारा अलग किया जाता है, आउटपुट यदि वाक्यांश एक संक्षिप्त है और फिर यदि यह एक पुनरावर्ती संक्षिप्त है । (वाक्यांश में यह है कि इसमें क्या है)

  • इनपुट वर्णमाला वर्णों के साथ ही रिक्त स्थान की रचना करेगा।
  • आपका कार्यक्रम संवेदनशील नहीं होना चाहिए।

उदाहरण इनपुट / आउटपुट:

मामला एक:

इनपुट:

Acronyms
Acronyms can really obviously narrow your message sensors

आउटपुट:

True 
True

केस 2:

इनपुट:

FAQ
frequently asked questions

आउटपुट:

True 
False

केस 3:

इनपुट:

foo
bar baz

आउटपुट:

False
False

केस 4:

इनपुट:

GNU
GNU is not Unix

आउटपुट:

False
False

केस 5:

इनपुट:

Aha
A huge Aha

आउटपुट:

True
True

69
परिवर्णी शब्द Recurse? ओह! अब आप सेंस कर रहे हैं।
ज्योबिट्स

2
नहीं, जब तक यह स्पष्ट है कि आउटपुट क्या है
ब्लू

9
यह मुझे एक XKCD की याद दिलाता है: xkcd.com/917
ETHproductions


4
ABCDE: एक और बुनियादी स्पष्ट रूप से परिभाषित उदाहरण।
जॉन ड्वोरक

जवाबों:


10

पायथ, १ ९ १ 18

&pqJrz0hCKcrw0)}JK

यह परिणाम को एक विषम प्रारूप में प्रिंट करता है, जैसे TrueFalse:।

आप इसे ऑनलाइन आज़मा सकते हैं या टेस्ट सूट चला सकते हैं ।

स्पष्टीकरण:

&pqJrz0hCKcrw0)}JK      :
    rz0    rw0          : read two lines of input, and convert each to lower case
          c   )         : chop the second input on whitespace
   J     K              : store the first line in J and the chopped second line in K
  q    hC               : zip K and take the first element, check if it is the same as J
 p                      : print and return this value
&              }JK      : and the value with whether J is in K, implicit print

15

पायथन 3, 89

SOPython के लिए धन्यवाद बाइट्स का एक गुच्छा बचाया।

a=input().lower()
d=input().lower().split()
h=tuple(a)==next(zip(*d))
print(h,h&(a in d))

इस समाधान का सबसे जटिल हिस्सा है h=tuple(a)==next(zip(*d))
यह सूची dको ज़िप में अनपैक करता है और फिर nextप्रत्येक चलने योग्य के पहले तत्व का एक टपल वापस करने के लिए कहता है, zipजिसमें तब (a tuple(a)) में प्रत्येक अक्षर के एक टपल के खिलाफ तुलना की जाती है ।


आप प्रतिस्थापन 7 बाइट्स बचा सकता है [0]==l के लिए .startswith(l)
स्काइलर

7

सीजाम, 21 20 बाइट्स

qeuN/)S/_:c2$s=_p*&,

प्रयास करें इस बेला CJam दुभाषिया में या एक ही बार में सभी प्रकार के परीक्षण की पुष्टि करें।

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

qeu                  e# Read from STDIN and convert to uppercase.
   N/                e# Split at linenfeeds.
     )S/             e# Pop the second line form the array.
      S/             e# Split it at spaces.
        _:c          e# Push a copy and keep on the initial of each word.
           2$s       e# Push a copy of the line array and flatten it.
                     e# This pushes the first line.
              =      e# Check for equality.
               _p    e# Print a copy of the resulting Boolean.
                 *   e# Repeat the word array 1 or 0 times.
                  &  e# Intersect the result with the line array.
                   , e# Push the length of the result (1 or 0).

4

हास्केल, 81 80 बाइट्स

import Data.Char
f[a,b]|c<-words b=(a==map(!!0)c,elem a c)
p=f.lines.map toLower

आउटपुट स्वरूप को कड़ाई से परिभाषित नहीं किया गया है, इसलिए मैं एक जोड़ी बूलियन लौटाता हूं, जैसे p "Aha\na huge arm"-> (True,False)


आज मैंने पैटर्न गार्ड ( <-) की सीख ली है - धन्यवाद!
wchargin

4

स्काला, 135 110 108 बाइट्स

val Array(x,y)=args.map(_.toLowerCase)
val z=y.split(" ").map(_(0)).mkString
print(z==x,z==x&&y.contains(z))

कमांड लाइन के तर्कों (हिंट के लिए जे एटकिन के लिए धन्यवाद) का उपयोग करके कुछ बाइट्स को बचाया, बूलियन को एक टुपेल के रूप में डालकर, प्रिंटलाइन के mkStringबजाय new Stringऔर प्रिंट के बजाय का उपयोग करके ।

EDIT: प्रश्न का गलत अर्थ निकाला, और समाधान को फिर से लागू करना पड़ा


3

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

कम से कम, यह स्काला को हरा देता है;)

x=input().lower()
y=input().lower().split()
g=all(x[i]==y[i][0]for i in range(len(y)))
print(g,g&(x in y))

1
@muddyfish संभवतः प्रत्येक उदाहरण की अधिक व्याख्या अन्य लोगों को होने से रोकती है।
बीटा डेके

क्या सैंडबॉक्स में अधिक समय मदद करेगा? मेरे (स्पष्ट रूप से बल्कि सीमित) अनुभव में, आपको केवल प्रतिक्रियाएं मिलती हैं, जबकि यह लगभग शीर्ष पर है
ब्लू

@ मड्डीफिश अच्छी तरह से मुझे नहीं पता कि आपने इसे कब तक छोड़ा है, मुझे नहीं पता
बीटा डेके

मैंने इसे एक दिन के लिए छोड़ दिया
ब्लू

@muddyfish एक सप्ताह में अनुशंसित मानदंड है
बीटा

3

AppleScript, 302 301 297 293 बाइट्स

अजी, नरक हाँ। यह भी परेशान नहीं है कि मैं हार गया हूं, यह AppleScript के लिए प्रतिस्पर्धी है।

x को सेट करें (संवाद "" डिफ़ॉल्ट उत्तर "") का पाठ वापस आ गया
y को सेट करें (डायलॉग "" डिफॉल्ट आंसर "") के टेक्स्ट ने शब्दों को लौटा दिया
y की वस्तुओं की संख्या के लिए n सेट करें
दोहराना n
प्रयत्न
यदि y का आइटम n का वर्ण 1 = (पाठ के रूप में x) का वर्ण n नहीं है, तो {गलत, गलत} लौटाएं
समाप्त
n से n में सेट करें -1
समाप्त
वापसी {true, x y में है}

आउटपुट के रूप में:

{सही गलत}

या उत्तर जो भी हो।


2

PHP, 120 बाइट्स

संवेदनशील नहीं होने के कारण बहुत अधिक वजन (26 बाइट्स) होता है। सभी परीक्षण मामलों को पारित:

foreach($c=explode(' ',strtolower($argv[2]))as$l)$m.=$l[0];var_dump($x=$m==$a=strtolower($argv[1]),$x&&in_array($a,$c));

इस रूप में दो बूल मान आउटपुट:

bool(true)
bool(false)

कमांड लाइन से दो तर्क पढ़ता है, जैसे:

a.php Acronyms "Acronym can really obviously narrow your message sensors"

Ungolfed

$acronym = strtolower($argv[1]);
$words = strtolower($argv[2]);
$words = explode(' ', $words);

foreach($words as $word) {
    $letters .= $word[0];
}

$isAcronym = $letters == $acronym;

var_dump(
    $isAcronym,
    $isAcronym && in_array($acronym, $words)
);

2

माणिक, 77 74 बाइट्स

b=gets.chop.upcase
a=gets.upcase
p c=a.scan(/\b\w/)*''==b,c&&a.include?(b)

1

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

p !!gets[/^#{x=gets.scan(/\b\w/)*""}$/i],!! ~/#{x}/i

उदाहरण:

$ echo "Aha
A huge AHA" | ruby acronym.rb
true
true

1

मतलाब, 90 बाइट्स

function z=f(r,s)
z=[sum(regexpi(s(regexpi(s,'(?<=(\s|^))\S')),r))>0 nnz(regexpi(s,r))>0];

उदाहरण (ध्यान दें कि मैटलैब प्रदर्शित करता है true/ falseजैसा 1/ 0):

>> f('Aha', 'A huge Aha')
ans =
     1     1

1

जावास्क्रिप्ट ईएस 6, 95 92 बाइट्स

(a,b)=>[(r=eval(`/^${a}$/i`)).test((s=b.split` `).map(c=>c[0]).join``),s.some(c=>r.test(c))]

दोनों स्ट्रिंग्स को पैरामीटर के रूप में इनपुट करें। दो मूल्यों के साथ एक सरणी आउटपुट: प्रत्येक बूलियन के लिए एक।


1
मैं के स्थान पर एक regex का उपयोग करने के बारे में सोचा नहीं होगा .indexOf। अच्छा काम! शायद r=eval(`/^${a}$/i`)आपके वर्तमान rसेटअप के स्थान पर काम करेगा ।
ETHproductions

@ETHproductions और बदले में मैंने ऑब्जेक्ट शॉर्पर के evalरूप में नहीं सोचा होगा RegExp। पारितोषिक के लिए धन्यवाद!
Mwr247

0

जीएनयू सेड, 118 बाइट्स

-rध्वज की आवश्यकता है , स्कोर में +1 के रूप में शामिल है। ध्यान दें कि मैं \bएक शब्द-सीमा मैच के लिए उपयोग कर रहा हूं , भले ही मुझे यह GNU सेड में प्रलेखित नहीं मिला। यह मेरे लिए काम करता है ...

N
h
s/^(.*)\n.*\b\1\b.*/True/i
/\n/s/.*/False/
x
:
s/(.)(.*\n)\1[^ ]* ?/\2/i
t
/../s/.*/False/
/F/h
/F/!s/.*/True/
G

विस्तारित:

#!/bin/sed -rf

N
h

# Is it recursive?
s/^(.*)\n.*\b\1\b.*/True/i
# If no replacement, there's still a newline => false
/\n/s/.*/False/

x

# Is it an acronym?
# Repeatedly consume one letter and corresponding word
:
s/(.)(.*\n)\1[^ ]* ?/\2/i
t
# If more than just \n remain, then false
/../s/.*/False/
# And falsify recursive, too
/F/h
# !False => true
/F/!s/.*/True/

G

0

ग्रूवी, 91 बाइट्स

a=args*.toLowerCase()
println([a[1].split()*.charAt(0).join("")==a[0],a[1].contains(a[0])])

आउटपुट स्वरूप है [bool, bool]। यह कमांड लाइन आर्ग्स से इनपुट लेता है।


0

लुआ 5.3, 182 बाइट्स

a=""b=io.read c=a.lower d=a.reverse e=d(c(b()))f=~e:len()h=a.sub g=d(c(b()))for m in g:gmatch"[^ ]+"do f=-~f if h(e,f,f)~=h(m,~0)then break end k=k or m==e end f=f>~1print(f,f and k)

0

आर, 93 बाइट्स

a=tolower(readLines(,2));cat(a[1]==gsub("([^ ])\\w* ?","\\1",a[2]),a[1]%in%scan(t=a[2],w=""))

उपयोग:

> a=tolower(readLines(,2));cat(a[1]==gsub("([^ ])\\w* ?","\\1",a[2]),a[1]%in%scan(t=a[2],w=""))
Aha
A huge Aha
Read 3 items
TRUE TRUE
> a=tolower(readLines(,2));cat(a[1]==gsub("([^ ])\\w* ?","\\1",a[2]),a[1]%in%scan(t=a[2],w=""))
Acronyms
Acronyms can really obviously narrow your message sensors
Read 8 items
TRUE TRUE
> a=tolower(readLines(,2));cat(a[1]==gsub("([^ ])\\w* ?","\\1",a[2]),a[1]%in%scan(t=a[2],w=""))
FAQ
frequently asked questions
Read 3 items
TRUE FALSE
> a=tolower(readLines(,2));cat(a[1]==gsub("([^ ])\\w* ?","\\1",a[2]),a[1]%in%scan(t=a[2],w=""))
foo
bar baz
Read 2 items
FALSE FALSE

0

awk 137 बाइट्स

awk 'BEGIN{T="True";F="False"}NR*NF<2{a=tolower($1)}END{for(i=1;i<=NF;i++)b=b substr(tolower($i),1,1);print(a==b?T:F)"\n"(a==tolower($1)?T:F)}'
  • T="True";F="False"आउटपुट को सरल बनाने के लिए प्रारंभिक ।
  • NR*NF<2{a=tolower($1)}: aकेवल तभी सेट करें जब पहली पंक्ति में केवल एक फ़ील्ड हो।
  • END{...}: केवल दो लाइनें मानकर ...
    • for(i=1;i<=NF;i++)b=b substr(tolower($i),1,1): पुनरावर्ती संक्षिप्त निर्माण।
    • print(a==b?T:F)"\n"(a==tolower($1)?T:F): दोनों तुलना के उत्पादन को प्रिंट करें, a==bऔर a==tolower($1)

अगर किसी को पता है कि पुनरावर्ती संक्षिप्त निर्माण का अनुकूलन कैसे करना है, तो सुझाव देने के लिए स्वतंत्र महसूस करें।


0

SpecBAS - 144 बाइट्स

1 INPUT a$,b$: LET a$=UP$(a$),b$=UP$(b$),d$="": DIM c$(SPLIT b$,NOT " ")
2 FOR EACH w$ IN c$(): LET d$=d$+w$(1): NEXT w$
3 TEXT d$=a$'POS(a$,b$)>0

अपरकेस के लिए 2 x इनपुट बदलने से वर्ण बनाम लोअरकेस रूपांतरण बचाता है। अब एक LETकथन में कई कार्य किए जा सकते हैं , जो मदद भी करते हैं। और TEXTएक चरित्र को बचाता हैPRINT

सही / गलत दिखाने के लिए 1/0 का उपयोग करता है (एपोस्ट्रोफ आउटपुट को अगली पंक्ति में ले जाता है)।


0

पर्ल 5, 90 बाइट्स

($a,$b)=map{chomp;lc}<>;print((join"",map{substr($_,0,1)}split/ /,$b)ne $a?0:($b=~$a?2:1))

थोड़ा सा धोखा देना: 0 = सभी झूठे, 1 = एक सच, 2 = दोनों सच। मैं एक गोल्फ खिलाड़ी नहीं हूं, लेकिन मैं परेशान हूं कि ब्राउजिंग करते समय पर्ल गायब है!

($a,$b)=map{chomp;lc}<>;              # get the two lines as lowercase
print((                               #
join"",map{substr($_,0,1)}split/ /,$b # collapse first letters of secondline
     ) ne $a  ? 0 : ( $b=~$a ? 2 : 1))# 0 nothing, 1 not recursive, or 2 

0

जावास्क्रिप्ट (ईएस 6) 93

(w,s)=>s[L='toLowerCase'](w=w[L](z=y='')).replace(/\w+/g,v=>y+=v[z=z||v==w,0])&&[y=y==w,y&&z]

किसी भी EcmaScript 6 अनुरूप ब्राउज़र में नीचे स्निपेट का परीक्षण करें

f=(w,s)=>s[L='toLowerCase'](w=w[L](z=y='')).replace(/\w+/g,v=>y+=v[z=z||v==w,0])&&[y=y==w,y&&z]

// TEST

out=x=>O.innerHTML+=x+'\n';

;[
 ['Acronyms', 'Acronyms can really obviously narrow your message sensors', true, true]
,['FAQ', 'frequently asked questions', true, false]
,['foo', 'bar baz', false, false]
,['GNU', 'GNU is not Unix', false, false]
,['Aha', 'A huge Aha', true, true]
,['Lolcat', 'Laughing over lolcat captions and tearing.', true, true]
,['ABCDE', 'Another basic clearly defined example.', true, false]
,['GNU', 'Gnus nettle unicorns', true, false]
,['PHP', 'PHP Hypertext Preprocessor', true, true]
].forEach(([a,b,c,d]) => (
  [r,s]=f(a,b), 
  out(((r==c && s==d)?'OK ':'KO ') + a + ',' + b + ' -> ' + f(a,b))
))
<pre id=O></pre>


0

जावास्क्रिप्ट (ईएस 6), 89 96 95 बाइट्स

(a,b)=>[p=(a=a[l='toLowerCase']())==(c=b[l]().split` `).map(x=>x[0]).join``,p&&c.some(x=>x==a)]

शक्स ... मुझे लगा कि मेरे पास यह सब सुलझा हुआ है, लेकिन जाहिर है कि मैं गलत था।

यह एक अनाम फ़ंक्शन को परिभाषित करता है जो दो स्ट्रिंग्स के रूप में इनपुट लेता है, और दो बूलियन आइटम का रिटर्न और सरणी। पहले आइटम की गणना सभी लोअरकेस में पहले स्ट्रिंग की तुलना दूसरे स्ट्रिंग में प्रत्येक शब्द के पहले चार्ट के साथ की जाती है। दूसरे आइटम की जांच केवल इस बात से की जाती है कि क्या दूसरे स्ट्रिंग में पहला है।

यहां दूसरे आइटम के लिए एक और समाधान है; 2 बाइट्स छोटे, लेकिन बहुत कम ब्राउज़र इसका समर्थन करते हैं:

p&&c.includes(a)

यह जाँच करना कि क्या दूसरे तार में पहला फेल हैGNU: Gnus nettle unicorns
edc65

कृपया फिर से जाँच करें: यह कोशिश की और काम भी नहीं करता है: ReferenceError: l is not defined ( l=पहले लापता toLowerCase)
edc65

... तय किया कि बग, यह 'GNU','GNU is not unix'(परीक्षण के मामले 4) के लिए विफल रहता है , गलत होना चाहिए, झूठी
edc65

@ edc65 शक्स, मैंने l=बग ढूंढते हुए मिटा दिया और इसे वापस रखना भूल गया। उसे लाने के लिए धन्यवाद! अन्य परीक्षण मामला भी तय किया जाना चाहिए।
ETHproductions

0

Pyke (जब पोस्ट किया गया था), (गैर-सक्षम), 20 बाइट्स

l1c"jFh)J"iQl1qDji{&

आप यहां सोर्स कोड पा सकते हैं , भाषा पूरी तरह से अस्थिर है (इसके लिए पहली परीक्षा चुनौती) इसलिए इसे भविष्य में काम करने की उम्मीद न करें (8)

या 18 बाइट्स (स्थिर)

l1idcmhsRl1jqDji{&

यहाँ यह कोशिश करो!

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