Google को "google" न करें


158

हम सभी जानते हैं कि यदि आप "google" शब्द को गूगल करते हैं तो यह इंटरनेट को तोड़ देगा।

आपका कार्य एक ऐसा फंक्शन बनाना है जो एक स्ट्रिंग को स्वीकार करता है और इसकी लंबाई लौटाता है, सबसे कम संभव यूनिकोड वर्णों में।

हालांकि, यदि दी गई स्ट्रिंग google(लोअरकेस) है, तो यह एक त्रुटि का कारण होगा।

उदाहरण के लिए, g('bing')वापस आ जाएगा 4लेकिन g('google')एक त्रुटि का कारण होगा।

कृपया उपयोग का उदाहरण और यदि संभव हो तो त्रुटि प्रदान करें।


122
मैंने Google को गूगल किया , और Google को Google पर Google मिला। मिथक का भंडाफोड़।
Geobits

86
@Geobits यह देखने के लिए बस एक परीक्षा है कि क्या मैं Google को Google करूँगा, जो मैं नहीं करूँगा। : D
rybo111

7
क्या फ़ंक्शन को संवेदनशील होने की आवश्यकता है? क्या इसे it गॉगल ’दिया जाना चाहिए?
AXMIM

2
जब मैं google (chrome पर सर्च बार) में google टाइप करता हूं, तो एक मैसेज आता है कि क्या मैं google में जाना चाहता हूं । (अब चूंकि यह एक पुराना है, यह समझ में आता है अर्थात com.google कार्य करता है)। मैंने इसे क्लिक किया और एक डीएनएस लुकअप त्रुटि मिली। इंटरनेट: टूट!
क्रेग

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

जवाबों:


228

अजगर 2, 29

lambda x:len(x)/(x!='google')

एक देता है ZeroDivisionErrorपर "google", और लंबाई अन्यथा। यह पायथन के बूलियन को बराबर करने 0और लाभ उठाता है 1


2
+1। आपको gअपने सेट करने की आवश्यकता है lambda, या इसे एक इनपुट के साथ गुमनाम रूप से कॉल करना है, हालांकि।
Zach गेट्स

4
सिर्फ मनोरंजन के लिए, मैंने जावास्क्रिप्ट ईएस 6 के साथ इस तकनीक की कोशिश की। यह 25 पर समाप्त हुआ, लेकिन Infinityएक त्रुटि को फेंकने के बजाय "google" के लिए रिटर्न ...
ETHproductions

18
@ZachGates मेटा पर आम सहमति यह है कि अनाम कार्यों की अनुमति दी जाती है जब तक कि विशेष रूप से अस्वीकृत न हो। चूँकि प्रश्न का अर्थ कुछ इस तरह से है (लेकिन स्पष्ट रूप से इसे अस्वीकार नहीं करता है, फिर भी), आपको ओपी से इसके बारे में पूछना चाहिए।
FryAmTheEggman 16

3
@ केविन आपको जरूरत होगी returnअगर आप इस्तेमाल करते हैंdef
FryAmTheEggman

3
स्पष्ट रूप से, पाइथ के लिए इसका अनुवाद मेरे पूर्व सबसे अच्छे पाइथ समाधान से बेहतर है। यह L/lbnb"google13 बाइट्स है।
isaacg

107

एक्सेल, 23 ​​अक्षर

इसे A1 के अलावा एक सेल में पेस्ट करें और अपनी खोज क्वेरी को A1 में टाइप करें।

=LEN(A1)/(A1<>"google")

उदाहरण के लिए:

गूगल गूगल


9
एक्सेल का उपयोग करने पर आम सहमति क्या है?
बीटा डेके

52
@BetaDecay। रचनात्मक, असामान्य, काम करने लगता है। सभी CG पहेलियों पर लागू नहीं होगा, लेकिन यह यहाँ है!
18

119
प्रबंधकों को यह पसंद है!
18

18
तो कुशल, CG उपयोगकर्ता इसके लिए आपसे घृणा करेंगे। लेकिन रुकें। B3 आपका जीवन हमेशा के लिए बदल देगा!
सुमुरै 8

8
एक्सेल का उपयोग करने पर विशिष्ट सहमति क्या है?
ग्रीनएजेड

81

सी #, 43 बाइट्स

साला आलमी के जवाब पर एक सुधार। "Google" प्रदान करने पर स्टैक ओवरफ़्लो अपवाद को फेंकने के लिए पुनरावर्ती

int g(string s)=>s!="google"?s.Length:g(s);

2
हाँ, मुझे लगा कि एक अपवाद को फेंकने के लिए कुछ पात्रों को बचाने के लिए एक बहुत ही चतुर तरीका था। 4 वर्णों पर, यह C # में एक अपवाद को फेंकने का सबसे छोटा तरीका हो सकता है, निश्चित नहीं।
DLeh

6
यह चतुर है! हालांकि, सी # के हाल के संस्करणों में पूंछ पुनरावृत्ति के लिए समर्थन है, इसलिए यह फ़ंक्शन कभी भी फेंक नहीं देगा StackOverflowException। वास्तव में यह कभी नहीं लौटेगा (जैसा व्यवहार करता है while(true){})।
नाइटलाइफ

2
@ डेली टेल रिकर्सन कॉल्स थोड़ी मुश्किल हैं। आपको x64 जेआईटी पर चलना होगा और डिबगर के बिना (डिबगर संलग्न होने से पूंछ पुनरावृत्ति का कारण स्पष्ट कारणों से काम नहीं करेगा)। यहाँ एक प्रमाण के रूप में मेरा कार्यक्रम है: imgur.com/ErNl8LJ और पूंछ पुनरावृत्ति के बारे में थोड़ा और अधिक पढ़ने: blogs.msdn.com/b/davbr/archive/2007/06/20/… ;)
नाइटलाइफ़

12
Haha: g (string) ... मैं खुद को
देखूंगा

1
@ डेली ओह रुको नहीं मैं तुम्हारे 43 बाइट्स का मुकाबला कर सकता हूं लेकिन इसे हरा नहीं सकता। :) int g (string s) => s! = "google"? s.Length: s [9];
ली

57

पायथ, 14 13 वर्ण

L/lbnb"google

एक नामित फ़ंक्शन को परिभाषित करता है y

यह 1 से लंबाई को विभाजित करता है अगर स्ट्रिंग Google नहीं है और 0 से अन्यथा। विचार उपन्यास नहीं है, लेकिन मैं इसके साथ स्वतंत्र रूप से आया था।

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

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

L                 Define y(b):
  lb                Compute len(b).
    nb"google       Compute (b != "google").
 /                  Set _ = len(b) / (b != "google").
                  Return _. (implicit)

हाँ, मैं वास्तव में इस बारे में अनिश्चित हूँ, मुझे नहीं लगता कि यह पहले एक स्ट्रिंग के साथ हुआ है। आम तौर पर आप इसे बंद ;कर सकते हैं लेकिन जाहिर है कि आप यहाँ नहीं कर सकते ...
FryAmTheEggman

आपको अंतिम उद्धरण की आवश्यकता नहीं है।
माल्टीसेन

48
" एक नामित फ़ंक्शन को परिभाषित करता है y " लेकिन yआपके कोड में कोई नहीं है !?
AL

46
@AL यह सही है। निर्मित Lमें फ़ंक्शन को फिर से परिभाषित करता है y
डेनिस

90
मुझे यकीन नहीं है, लेकिन मुझे लगता है कि मुझे पाइथ से नफरत है।
श्री लिस्टर

40

MATLAB, 63 41 40 38 36 बाइट्स

1 बाइट से शेविंग करने के लिए टॉम कारपेंटर का धन्यवाद!

2 बाइट्स बंद करने के लिए स्टेवी ग्रिफिन के लिए धन्यवाद!

@(x)nnz(x(+~strcmp('google',x):end))

अन्य अधिक सुरुचिपूर्ण समाधानों के विपरीत, MATLAB में शून्य ऑपरेशन द्वारा एक विभाजन का प्रदर्शन एक त्रुटि नहीं देगा, बल्कि Inf। यह समाधान द्वारा स्ट्रिंग की लंबाई का पता लगाता है nnz। उत्पन्न होने वाली स्ट्रिंग इस तरह से है कि आप स्ट्रिंग की शुरुआत से अंत तक इंडेक्स करते हैं, जो अनिवार्य रूप से स्ट्रिंग की एक प्रति है। हालांकि, जो महत्वपूर्ण है वह यह है कि स्ट्रिंग को एक्सेस करने की शुरुआत इनपुट के बराबर है या नहीं, यह जाँच कर उत्पन्न की जाती है 'google'। यदि ऐसा नहीं है, तो यह 1 का आरंभिक सूचकांक पैदा करता है और हम सामान्य रूप से स्ट्रिंग में सूचकांक करते हैं ... क्योंकि MATLAB 1 पर अनुक्रमित करना शुरू कर देता है। क्या यह बराबर होना चाहिए, उत्पादित सूचकांक 0 है और MATLAB एक अनुक्रमणिका त्रुटि को यह कहते हुए फेंक देगा कि सूचकांक एक सकारात्मक पूर्णांक होना चाहिए। अतिरिक्त+यह सुनिश्चित करना है कि समानता की जाँच बूलियन / के बजाय संख्यात्मक है logical+वसीयत को स्वीकार करते हुए एक चेतावनी का उत्पादन किया जाएगा, लेकिन क्योंकि इस चुनौती के विनिर्देशों ने चेतावनियों की अनुमति नहीं दी है, +यह आवश्यक है ... इस प्रकार कोड को पूरा करना।

उदाहरण का उपयोग करता है

>> f=@(x)nnz(x(+~strcmp('google',x):end)) %// Declare anonymous function

f = 

    @(x)nnz(x(+~strcmp('google',x):end))

>> f('bing')

ans =

     4

>> f('google')
Subscript indices must either be real positive integers or logicals.

Error in @(x)nnz(x(+~strcmp('google',x):end))

एक अधिक मजेदार संस्करण, 83 77 76 74 72 बाइट्स

1 बाइट से शेविंग करने के लिए टॉम कारपेंटर का धन्यवाद!

2 बाइट्स बंद करने के लिए स्टेवी ग्रिफिन के लिए धन्यवाद!

@(x)eval('if strcmp(''google'',x),web([x ''.com/i'']);else nnz(x),end');

ऊपर एक आधिकारिक सबमिशन नहीं है, लेकिन यह कुछ ऐसा है जिसे चलाने में थोड़ा अधिक मज़ा आता है। evalअनाम फ़ंक्शंस में दुर्व्यवहार करना, कोड क्या करता है, यह देखने के लिए जांचता है कि क्या इनपुट स्ट्रिंग के बराबर है 'google'... और यदि ऐसा है, तो यह MATLAB के अंतर्निहित वेब ब्राउज़र को खोल देगा और Google के 404 त्रुटि पृष्ठ को एक्सेस करने की कोशिश कर रहा है। iजब यह मौजूद नहीं है तो उपपृष्ठ स्थित है। यदि नहीं, तो हम सामान्य रूप से स्ट्रिंग की लंबाई प्रदर्शित करते हैं।

उदाहरण का उपयोग करता है

>> f=@(x)eval('if strcmp(''google'',x),web([x ''.com/i'']);else nnz(x),end'); %// Declare anonymous function
>> f('bing')

ans =

     4

>> f('google')
>> 

अंतिम कॉल का उपयोग करके 'google'हमें यह स्क्रीन मिलती है:

यहां छवि विवरण दर्ज करें


3
आप के strcmpबजाय का उपयोग करके एक बाइट बचा सकता है isequal
टॉम कारपेंटर

@TomCarpenter - मजेदार। मैंने वास्तव में खुद को उपयोग करने के लिए कहा था strcmpलेकिन isequalकिसी कारण से उपयोग करना समाप्त कर दिया .... धन्यवाद!
रेयरेंग सेंग

1
nnzदो बाइट्स से छोटा है numel। आपने कुछ साल पहले मेरा वोट दिया था :-)
स्टीवी ग्रिफिन

31

जावास्क्रिप्ट ईएस 6, 34 27 25 वर्ण

f=>f=='google'?Δ:f.length

ΔGoogle के लिए संदर्भ संदर्भ फेंकता है ।


10
आप दो बाइट्स को बचाने के लिए एक टर्नरी ऑपरेटर का उपयोग कर सकते हैं।
कोनराड बोरोस्की

2
हाँ, यह वही है जो मुझे अभी मिला है। यदि आप फैंसी होना चाहते हैं, तो एक प्रतीक का उपयोग करें लोग जी के बजाय कभी भी उपयोग न करें यह सुनिश्चित करें कि यह एक वैश्विक चर के रूप में मौजूद नहीं होगा। Δ एक अच्छा चर नाम के लिए बनाता है :)
डोमिनोज़

1
आप इस्तेमाल कर सकते हैं #afaik जे एस में, यह त्रुटियों
ताली

7
Δ Google Illuminati ने पुष्टि की
DynamiteReed

2
मैं बस इसे यहाँ छोड़ने जा रहा हूँ github.com/Rabrennie/anything.js
sagiksp

26

टीआई-बेसिक, 15 बाइट्स

हेक, जबकि हम इस पर हैं , यहाँ भी एक TI-BASIC जवाब मिल सकता है।

इनपुट प्रारूप है "string":prgmNAME। पहले खोजने के लिए थॉमस क्वा को श्रेय !

length(Ans)+log(Ans≠"GOOGLE

(गाइड: एक अपर केस की जगह प्रत्येक लोअरकेस अक्षर के लिए 1 बाइट जोड़ें। ताकि s/GOOGLE/google/g => +6 bytes।)

अह्ह्ह्ह टेस्ट केसेस!

"GOGGLE":prgmG
               6
"BING":prgmG
               4
"GOOGLE":prgmG
           Error

20 बाइट: length(Ans)/(Ans≠"google। आपके पास भी मामला गलत है; यदि अपरकेस की अनुमति है तो यह 14 बाइट्स है। वैसे, यह Ans के माध्यम से तर्क पारित करने के लिए वैध है।
lirtosiast

AGOOGLE7 देना चाहिए, सही? और आपको अपने कोड आकार में प्रोग्राम हेडर की गिनती नहीं करनी चाहिए, इसलिए 10 बाइट घटाएं।
lirtosiast

त्रुटि: मैं थरथानेवाला सोच रहा था। कृपया मुझे क्षमा करें।
कॉनर ओ'ब्रायन

1
@ThomasKwa मैंने आपकी टिप्पणी कोड के साथ नहीं देखी। यह सिर्फ इतना है कि हम दोनों एक ही समाधान पर ठोकर खाई। हालांकि, अगर आपको लगता है कि आप क्रेडिट के लायक हैं, तो क्रेडिट आपका ही होगा। ^ _ ^ ( EDIT यदि आप कोड पढ़ेंगे, तो यह ठीक वैसी ही बात नहीं है।)
कॉनर ओ'ब्रायन

@lirtosiast length(दो बाइट्स हैं, जो आपके नंबरों को 21 और 15 बाइट्स बनाते हैं।
टिमटेक

23

एपीएल (14)

(⍴÷'google'∘≢)

स्पष्टीकरण:

  • : लंबाई
  • ÷: द्वारा विभाजित
  • 'google∘≢: तर्क 'google'के बराबर नहीं है ।

स्ट्रिंग है, जो अगर स्ट्रिंग बराबर नहीं है 1 से विभाजित है की लम्बाई है google(जो लंबाई वापस देता है अपरिवर्तित), या 0 से स्ट्रिंग अगर करता बराबर google(एक त्रुटि दे रही है)।


11
मुझे लगता है कि आपको परगनों को गिनने की आवश्यकता नहीं है, क्योंकि यह उनके बिना एक चर को सौंपा जा सकता है।
jimmy23013

एकल-चार तर्कों पर तरह-तरह की विफलताएँ। के साथ बदलकर ठीक करें । इसके अलावा, आप के ऑपरेंड्स को स्वैप करके इसे कूल-लुकिंग बना सकते हैं । ओह, पैरेंस को हटाना मत भूलना। ऑल-इन-ऑल:≢÷≢∘'google'
Adám

21

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

lambda u:[len][u=='google'](u)

1-तत्व फ़ंक्शन सूची को अनुक्रमित करता है, IndexErrorअगर एक u=='google'विधेय है True(= 1)। ऐसी क्रियाशील।

बहुत प्रकार। वाह:

lambda u:[len(u)][u=='google']
lambda u:len([u][u=='google'])

यदि चुनौती उलटी थी ( "Google" सब कुछ नहीं होने पर त्रुटि ), तो एक चार्ट बचा सकता है:

lambda u:{'google':len}[u](u)

लेकिन आप पहले से ही लंबाई जानते हैं, इसलिए इसे हार्डकोड करें।


अजगर 2.7 के लिए भी काम करता है
नूडल

किसी कारण से, मुझे यह समाधान पसंद है।
foslock

19

हास्केल, 24 बाइट्स

g s|s/="google"=length s

आउटपुट:

Main> g "google"

Program error: pattern match failure: g "google"

Main> g "bing"
4

15

सीजेम, 16 अक्षर

{_,\"google"=!/}

यह 1 से लंबाई को विभाजित करता है अगर स्ट्रिंग Google नहीं है और 0 से अन्यथा। विचार उपन्यास नहीं है, लेकिन मैं इसके साथ स्वतंत्र रूप से आया था।

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

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

_                 Push a copy of the string on the stack.
 ,                Compute the length of the copy.
  \               Swap the length and the original string.
   "google"=      Push 1 if the string is "google", 0 otherwise.
            !     Apply logical NOT. Maps 1 to 0 and 0 to 1.
             /    Divide the length by the Boolean.

दिलचस्प रूप से पर्याप्त है, एक पूर्ण कार्यक्रम छोटा है (15 बाइट्स) q_,\"google"=!/:। इस पोस्ट को देखने से पहले इसे विकसित किया। ध्यान दें कि यह संपूर्ण इनपुट लेता है (जो आपको फ़ंक्शन तर्क के रूप में वैसे भी लगता है)। दुर्भाग्य से, आप इसका उपयोग नहीं कर सकते हैं, क्योंकि यह एक फ़ंक्शन के लिए पूछता है :(
आउटगॉल्फर

15

ऑक्टेव, 63 बाइट्स

मुझे पता है कि यह मतलाब समाधान (जो ओक्टेव में भी काम करेगा) से अधिक लंबा है, लेकिन यह विशेष रूप से बुराई है। मैं सेल सरणी (बुराई) शाब्दिक (बुराई) युक्त फ़ंक्शन हैंडल का उपयोग करके एक अनाम फ़ंक्शन (बुराई) बना रहा हूं, जो कॉलबैक फ़ंक्शन पर निर्भर है (स्वयं, इस प्रकार पुनरावर्ती, बुराई) जिसे तर्क के माध्यम से पारित किया जाना चाहिए। तब मैं एक और गुमनाम कि मूल रूप से स्ट्रिंग तर्क को समारोह कम कर देता है और का दूसरा तर्क ठीक करता है बनाने fके रूप में f(बहुत बुराई)। कोई भी समझदार मानव कभी ऐसा नहीं करेगा, क्योंकि यह लगभग अपठनीय है जैसे पर्ल या रेगेक्स (या cjam / pyth / any other esolang)।

इसलिए यदि स्ट्रिंग 'google' नहीं है, तो सेल ऐरे का दूसरा तर्क उसे कहा जाएगा जो स्ट्रिंग की लंबाई को आउटपुट करता है। अन्यथा पहले फ़ंक्शन को कॉल किया जाएगा, जिसे कॉलबैक के रूप में पास किया गया है (और स्वयं कॉलबैक के रूप में भी पास हो जाता है) जो बाद में फ़ंक्शन है। त्रुटि मूल रूप से कुछ अधिकतम पुनरावृत्ति गहराई त्रुटि है।

f=@(s,f){@()f(s,f),numel(s)}{2-strcmp(s,'google')}();@(s)f(s,f)

2
ज्यादातर भाषाओं में वे चीजें बुरी नहीं हैं। और यह है कोड गोल्फ, ग्रह पर सबसे अपठनीय कोड के कुछ यहाँ मौजूद है :)। कूल हैंडल btw।
BAR

9
मैं केवल evalयहाँ कुछ याद कर रहा हूँ इसे वास्तव में बनाने के लिए EVIL :-)
लुइस मेंडो

12

जावास्क्रिप्ट, 25 बाइट्स

अच्छा और सरल जावास्क्रिप्ट उदाहरण:

e=>e!='google'?e.length:g

यदि "google" दर्ज किया जाता है तो यह एक गुजरता है ReferenceError

उदाहरण

alert((e=>e!='google'?e.length:g)('test'))


2
वाह, मुझे यह बताने के लिए धन्यवाद कि जावास्क्रिप्ट में लैम्डा कार्यों के लिए एक आशुलिपि है!
टॉम जटो 10

3
@ TomášZato Caveat: वे ES2015 में बिल्कुल नए हैं , इसलिए समर्थन अभी भी भिन्न है।
एको

11

एपीएल, 19 17 बाइट्स

{⍵≡'google':⍟⋄≢⍵}

यह एक अनाम मानदंड फ़ंक्शन है जो इनपुट होने पर एक सिंटैक्स त्रुटि को फेंक देगा google। यह कुछ भी नहीं के प्राकृतिक लघुगणक लेने का प्रयास करके पूरा किया है।

{
 ⍵≡'google':          ⍝ If the right argument is "google"...
            ⍟⋄        ⍝ Compute log(<nothing>), which brings only sadness
              ≢⍵      ⍝ Otherwise compute the length
}

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

डेनिस के लिए धन्यवाद दो बाइट्स सहेजे गए!


अनौपचारिक रूप से "स्पैट" के रूप में जाना जाता है। इस उपयोग के लिए एक बहुत ही उपयुक्त नाम है।
Adám

9

आर, 46 बाइट्स

g=function(x)ifelse(x!="google",nchar(x),)

जब तक मैं गलत नहीं कर रहा हूँ, मूल पोस्ट ने कभी भी यह निर्दिष्ट नहीं किया कि कोड को सही सिंटैक्स होना चाहिए।

उदाहरण:

> g("bing")
[1] 4
> g("google")
Error in ifelse(x != "google", nchar(x), ) : 
  argument "no" is missing, with no default

मैंने ifelse स्टेटमेंट के "नहीं" पैरामीटर के लिए कभी भी कुछ नहीं जोड़ा, इसलिए यदि यह पैरामीटर खाली है तो यह एक त्रुटि लौटाएगा।


10
यहाँ एक छोटा सा है:g=function(x)nchar(x)[[x!="google"]]
flodel

9

पर्ल, 31 29 बाइट्स

sub{$_=pop;y///c/!/^google$/}

-2 बी मैनटवर्क के लिए धन्यवाद

उपयोग:

sub{$_=pop;y///c/!/^google$/}->("google")

अगर मैं एक फ़ंक्शन के बजाय एक कार्यक्रम के साथ भाग सकता हूं, तो निम्नलिखित केवल 20 बाइट्स (+1 बाइट कमांड लाइन) के साथ मान्य होगा

$_=y///c/!/^google$/

त्रुटि शून्य से विभाजन है।

स्पष्टीकरण:

y///cलंबाई लौटाता है, फिर !/^google$/0 iff इनपुट 'google' से मेल खाता है।

उपयोग:

perl -p entry.pl input.txt

2
आप इसे एक अनाम फ़ंक्शन बना सकते हैं sub{…}:। (फिर आप इसे कॉल करें sub{…}->("google")।)
मैनटवर्क


@GabrielBenamy मुझे डर है कि मैं !=स्ट्रिंग की तुलना करने के लिए काम नहीं करूंगा ...
दादा

7

हास्केल - 30 वर्ण

g"google"=error"!";g s=length s

>g "google"
 *Exception: !
>g "str"
 3

6
त्रुटि के लिए विस्मयादिबोधक चिह्न क्यों? एक खाली स्ट्रिंग भी नहीं करेंगे?
१६:३६ बजे क्रिटेज़फ़िट्ज़

1
मैं इसे बदलने के लिए सुझाव देना चाहता था x=x;g"google"=x;g s=length s, लेकिन किसी कारण से, << लूप >> अपवादों को घी में नहीं डाला गया।
१44:४४ पर क्रिट्ज़फिट्ज़ २44

17
g s|s/="google"=length sके लिए की जरूरत से बचा जाता हैerror
chs

7

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

lambda n:len(n)if n!='google'else d

1
@FryAmTheEggman वास्तव में 16 बिट कम है। XD
डिएगोडीडी

1
@FryAmTheEggman: अच्छी चाल लेकिन id खाली स्ट्रिंग के साथ काम नहीं करती है:(lambda n:len(n)*(n!='google')or d)('')
pabouk

@pabouk काफी सही है, कि बाहर इशारा करने के लिए धन्यवाद।
फ्राईमईएग्गमैन

7

जावा 7: 53 52 बाइट्स

int g(String _){return"google"==_?0/0:_.length();} 

उपरोक्त कोड ArithmeticExceptionशून्य से विभाजन के लिए और किसी Stringअन्य के लिए फेंक देगा google। ध्यान दें कि ==संदर्भ की तुलना करता है और Stringवस्तुओं के लिए काम नहीं करेगा ।

जावा 8: 29 बाइट्स

(नीचे टिप्पणी में दिए गए सुझाव के आधार पर)

s->s=="google"?0/0:s.length()

1
आप जावा 8 के s->(s.equals("google")?null:s).length();
लंबोदर

3
"ध्यान देने योग्य बात है कि == संदर्भ की तुलना करता है और स्ट्रिंग वस्तुओं के लिए काम नहीं करेगा।" दरअसल, सभी स्ट्रिंग्स ऑब्जेक्ट हैं, इसलिए ==जावा में स्ट्रिंग्स की तुलना करना आम तौर पर काम नहीं करेगा (जब तक कि आप स्ट्रिंग इंटर्निंग पर भरोसा नहीं कर रहे हैं, जो अच्छी तरह से खराब है)। शायद आप जावास्क्रिप्ट के साथ भ्रमित हो गए?
गेंगकेव

1
@ वेंगकेव यदि वे दोनों लिट्टर हैं, तो यह काम करेगा क्योंकि यह वही वस्तु है जो स्ट्रिंग पूल पर संदर्भित है। युक्ति एक लिटिरल देता है और यहाँ यह एक लिटिरल है इसलिए यह काम करेगा।
यसना हज

2
@YassinHajaj मैं मानता हूं कि कल्पना इसे शाब्दिक रूप में देती है, लेकिन यह सिर्फ एक उदाहरण है। यदि स्टड से इनपुट दिया जाता है, या यदि फ़ंक्शन को किसी अन्य वर्ग से अलग से संकलित किया जाता है, तो फ़ंक्शन को संभवतः वही करना चाहिए। किसी भी मामले में, कंपाइलर ऑप्टिमाइज़ेशन (स्ट्रिंग इंटर्निंग) पर भरोसा करना एक खराब विचार है, जो कि मैंने मूल रूप से कहा था।
gengkev

7

C ++ 11, 54 (कोड) + 14 (#include) = 68

खैर, शून्य से विभाजन सिर्फ अपरिभाषित व्यवहार है, जिसे मैं त्रुटि नहीं कहूंगा। तो मेरा दृष्टिकोण।

#include<ios>
[](std::string s){return s!="google"?s.size():throw;};

प्रयोग

[](std::string s){return s!="google"?s.size():throw;}("google");

1
आप size()2 बाइट बचाने के लिए कॉल कर सकते हैं । C ++ 14 में, आप सामान्य लैम्ब्डा का उपयोग कर सकते हैं और इसके std::stringद्वारा प्रतिस्थापित कर सकते हैं auto। आपको std::stringइसके बजाय एक वास्तविक पास करना होगा const char*
isanae

@isanae मुझे नहीं पता था std::stringहै size()विधि, उसके लिए धन्यवाद। मुझे C ++ 14 में जेनेरिक लैंबडास के बारे में पता है, लेकिन मुझे नहीं पता कि यह मेरी मदद कैसे करेगा, क्योंकि "string"यह है const char*और नहीं std::string
ज़ेरेगेस 29'15

1
@Zereges std::stringहै size()और length()क्योंकि यह एक कंटेनर और एक स्ट्रिंग दोनों है । इसके बजाय auto, आप लैम्बडा को (std::string("google"))इसके बजाय कॉल करेंगे ("google")। प्रश्न केवल यह कहता है कि "स्ट्रिंग" को निर्दिष्ट किए बिना "1 स्ट्रिंग को स्वीकार करता है"।
isanae

@isanae C ++ 14 को भी :)"google"sstd::string
क्वेंटिन

@ आप केवल throw;ट्रिगर कर सकते हैं std::terminate()(क्योंकि यहां कोई वर्तमान अपवाद नहीं है)।
क्वेंटिन

6

MUMPS, 28 बाइट्स

g(s) q $S(s'="google":$L(s))

उपयोग:

>w $$g^MYROUTINE("bing")                                      
4
>w $$g^MYROUTINE("google")

<SELECT>g^MYROUTINE

क्यों? ठीक है, $S[ELECT]मूल रूप से एक कॉम्पैक्ट मल्टी-क्लॉज है अगर-और स्टेटमेंट - लगभग हास्केल या रस्ट जैसी भाषा में एक पैटर्न-मैच जैसा है। सिवाय ... हास्केल या रस्ट के विपरीत, पैटर्न को थकावट के लिए जाँच नहीं किया जाता है, क्योंकि "संकलन-समय सुरक्षा" की धारणा पूरी तरह से MUMPS के लिए विदेशी है। इसलिए यदि आपका इनपुट एक ऐसा पैटर्न है जिसका आपने हिसाब नहीं दिया है, तो आपको एक प्यारा रनटाइम त्रुटि कहा जाता है <SELECT>


6

रूबी, 34 30 27 26

->x{x=='google'?t: x.size}

अज्ञात tअपवाद को उठाता है।

->x{x=='google'?fail():x.size}

संपादित करें: पूरी तरह से पठनीय और स्पष्ट संस्करण जो छोटा है ...

->x{x[x=~/^(?!google$)/..-1].size}

Old: सुंदर अन्य विचारों के समान लगता है। बढ़ाएगा ArgumentErrorयदि x 'google' है।


2
वे कोष्ठक क्यों? x=='google'?t: x.size
मैनटवर्क

6

जावास्क्रिप्ट, 47 बाइट्स

अच्छा और सरल।

संपादित करें: अब नियमों का अनुपालन करता है

function f(g){if(g=="google")a;return g.length}

परिक्षण

त्रुटि फेंक दी गई

function f(g){if(g=="google")a;return g.length}

alert(f("Hello"))
alert(f("google"))
alert(f("hi"))

कोई त्रुटि नहीं हुई

function f(g){if(g=="google")a;return g.length}

alert(f("Hello"))
alert(f("bing"))
alert(f("hi"))


तकनीकी रूप से, यह ओपी के चश्मे को पूरा नहीं करता है। यह फ़ंक्शन लंबाई को सचेत करता है लेकिन वापस लौटता है undefined
जंगल

@ जंगल अब कैसा है?
बीटा डेके

1
@ जंगल मैं देख रहा हूं। मैं भूल गया कि वापसी की जरूरत थी
बीटा डिके

1
ES6 के तीर फ़ंक्शंस और टर्नरी ऑपरेटर (यदि के बजाय) का उपयोग करके, आप इसे थोड़ा और निचोड़ सकते हैं :)
कार्ल्स अल्कोली

1
@ बेताडेकी मौलिकता पहले; मैं उसका सम्मान करता हूँ।
कारल्स अल्कोलिया

6

सी, 66 48

मूल:

int l(long*s){return strlen(s)/((*s&~(-1L<<56))!=0x656c676f6f67);}

OSX gcc का उपयोग,
l("duck");रिटर्न 4,
l("google");कारण Floating point exception: 8

अन्य प्लेटफार्मों पर, स्थिरांक को धीरज के लिए समायोजित करने की आवश्यकता हो सकती है।

कम :

कम चालबाजी, एक ही परिणाम।

 l(int*s){return strlen(s)/!!strcmp(s,"Google");}

वाह, यह वहाँ कुछ दिलचस्प तर्क है। अगर मैं गोल्फ के हिस्से को सही समझता हूं, तो आप किसी भी तरह से एक, विशाल संख्या (लगभग एक हैश) में फिट होने के लिए पहले छह वर्णों को स्थानांतरित कर रहे हैं, जो कि स्टैक के छोटे-से होने के कारण, "google" हो जाता है, लेकिन पीछे की ओर ( 0x656c676f6f67= elgoog)। मुझे लगता है कि इस उत्तर को हम में से उन लोगों के लिए स्पष्टीकरण की आवश्यकता है जो इस तरह के पागल निम्न-स्तरीय सामान की सराहना करते हैं।
ब्रैडेन बेस्ट

मूल रूप से आपके पास है। यह बस 64 बिट संख्या में स्ट्रिंग को स्टोर करने वाली मेमोरी को कास्ट करता है। एंडिएंसनेस इसे x86 आर्किटेक्चर पर 'पिछड़ा' बनाता है। पाठ केवल 7 बाइट्स पर कब्जा कर लेता है, इसलिए मुखौटा बस स्मृति में जो कुछ भी हो सकता है उसे छुपाता है। इसकी एक मजेदार चाल है, लेकिन मुझे लगता है कि '!! strcmp (s, "google")' वास्तव में छोटा है।
एएसएचली

1
वैसे भी, +1। निश्चित रूप से। इसके अलावा, मुझे लगता है कि आप इसे हटाकर छोटा कर सकते हैं int , यह 4 अक्षर है।
ब्रैडेन बेस्ट

कुछ टाइपिंग के बाद , मुझे पता चला! यदि char *, की इकाइयों के साथ 8-bits, को long *, इकाइयों के साथ 64-bits, बिना ठीक से वास्तविक रूप से, डाली गई है, तो उन 8 बाइट्स में ढेर स्थान का डेटा दूषित हो जाता है, और एक ही नंबर ( 8*8 = 64) के रूप में माना जाता है । इसलिए आपको पहले 6 चार्ट, + एनयूएल + कचरा मिलता है। यह बहुत चालाक है। खतरनाक, भी। आश्चर्य है कि यह segfault क्यों नहीं करता है। कि 8 वीं कचरा बाइट सीमा से बाहर है, नहीं?
ब्रैडेन बेस्ट

मैंने आपके विश्लेषण को देखा। आप सही हैं, शिफ्ट 56 होनी चाहिए थी, 54 नहीं। इसके अलावा, मैं भ्रष्ट शब्द का इस्तेमाल नहीं करूंगा। स्मृति समान है, बिट्स की व्याख्या केवल अलग तरीके से की जाती है। तकनीकी रूप से, कचरा बाइट तक पहुंचना अपरिभाषित व्यवहार है, और वास्तव में सेगफॉल्ट हो सकता है। व्यावहारिक रूप से, वह बाइट लगभग निश्चित रूप से उसी कानूनी मेमोरी ब्लॉक में रहता है, जिसमें बाकी स्ट्रिंग, और आम तौर पर ये ब्लॉक (ढेर, स्टैक, स्थिरांक) शब्द आकार इकाइयों में एक न्यूनतम पर आवंटित किए जाते हैं। तो मेमोरी प्रोग्राम के अंतर्गत आती है, इसमें स्ट्रिंग के अलावा कुछ और होता है।
18

6

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

मैं पहली बार @ बोरसुन्हो के पहले प्रयास से बहुत कुछ मिलता-जुलता था, लेकिन मेरा थोड़ा लंबा था और मेरे काम करने से पहले उसने अपनी पोस्ट की। अपने 30 बाइट्स संपादित करने से पहले इसके साथ आया :)

->s{s[/^(?!google$).*/].size}

उपयोग के उदाहरण:

$ irb
2.2.1 :001 > f = ->s{s[/^(?!google$).*/].size}
 => #<Proc:0x007fa0ea03eb60@(irb):1 (lambda)> 
2.2.1 :002 > f[""]
 => 0 
2.2.1 :003 > f["bing"]
 => 4 
2.2.1 :004 > f["google"]
NoMethodError: undefined method `size' for nil:NilClass
  from (irb):1:in `block in irb_binding'
  from (irb):4:in `[]'
  from (irb):4
  from /Users/daniel/.rvm/rubies/ruby-2.2.1/bin/irb:11:in `<main>'

संपादित करें: दो साल और बाद में कुछ रूबी संस्करण

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

->s{+s[/^(?!google$).*/]}

String#sizeनए यूनीरी प्लस के साथ प्रतिस्थापित । इसे ऑनलाइन आज़माएं!


नीट, मुझे यह काम करने के लिए नहीं मिला (मैं ^मैचग्रुप के बाहर जाने के साथ नहीं आया था )।
बोर्सुनो सेप

@ बोरसो मुझे स्वीकार करना होगा मैं सिर्फ "जानवर मजबूर" रेगेक्स अनटील मुझे वह परिणाम मिला जो मैं चाहता था :) मुझे लगता .*है कि अंत में वह है जो इसे काम करता है।
डेनियरो

यदि इनपुट स्ट्रिंग में कई लाइनें हैं और अपनी लाइन में Google शामिल है, तो यह टूट जाता है। मुझे लगता है कि /\A(?!google\Z).*/mइसे ठीक करता है (तीन बाइट्स की कीमत पर, हालांकि)। ^और $शुरुआत और लाइनों के अंत से मेल खाते हैं, जबकि \Aऔर \Zशुरुआत और एक पूरे के रूप स्ट्रिंग के अंत से मेल खाते हैं।
हिस्टोक्रेट

@ हिस्टोक्रेट लेकिन मुझे नहीं लगता कि आप कई लाइनों के साथ गूगल स्ट्रिंग्स कर सकते हैं;)
डानिएरो

4

> <>, 55 बाइट्स

i:0(?v
31&l~<v0"google"~~.?%2l
$v?(2l<S?*=2l=6:+={
&<;n

हालांकि मुझे यह सबसे अच्छा गोल्फ प्रयास या एल्गोरिथ्म है, हालांकि, एक जाना होगा। प्रति समारोह नहीं, लेकिन मुझे लगता है कि यह अभी भी योग्य होना चाहिए। मैं देखूंगा कि क्या मैं बेहतर संस्करण में संपादित कर सकता हूं।

यदि आपको लंबाई और फिर त्रुटि को प्रिंट करने की अनुमति है, तो यहां 46 बाइट समाधान है:

i:0(?v
2lnl~<v0"google";?%
$;?(2l<S?*=2l=6:+={

इस प्रकृति का 49 बाइट पिछला समाधान:

i:0(?v
l0nl~<v;!?=7
:;?(2l<S?*=2l=6:+=@@g3
elgoog

यदि कोई रुचि है, तो मैं एक स्पष्टीकरण डालकर खुश हूं, और कृपया मुझे बताएं कि क्या मेरे उत्तर में कुछ गड़बड़ है या यदि आपके पास गोल्फ सुझाव हैं।


4

जावास्क्रिप्ट ईएस 6, 51 27 25 बाइट्स

नमस्ते, मैं कोड गोल्फ के लिए नया हूँ इसलिए यह शायद बहुत अधिक गोल्फ हो सकता है, लेकिन यहाँ यह जाता है:

_=>_=="google"?a:_.length

g=_=>_=="google"?a:_.length

g=_=>{if("google"==_)throw Error();return _.length}

और कुछ परीक्षण:

(_=>_=="google"?a:_.length)("bing")//4
(_=>_=="google"?a:_.length)("google")// Error: a is not defined

g("bing")// returns 4
g("google")// Error: a is not defined

संपादित करें: जोड़ा गया? को बदलने के लिए और एक अपरिभाषित वस्तु के साथ त्रुटि को बदलने के लिए।

संपादित करें 2: मुझे एहसास हुआ कि मेरी बाइट गिनती गलत थी, और जी = हटा दिया


4

गोल्फस्क्रिप्ट, 14 16 वर्ण

{.,\'google'=!/}

कई अन्य लोगों की तरह, बस इनपुट की तुलना करता है 'google'और परिणाम के व्युत्क्रम से लंबाई को विभाजित करता है।

उदाहरण कार्यक्रम:

  • साथ'bing' (उत्पादन: 4)
  • के साथ'google' (आउटपुट: त्रुटि: शून्य से विभाजित करने का प्रयास किया गया। )

@ डेनिस मैं आपकी बात देखता हूं। यह मूल रूप में यह बिल्कुल पुन: प्रयोज्य नहीं था (आप ऐसा नहीं कर सकते, किसी सूची पर कोड लागू करें)। इसके अलावा मुझे यह महसूस नहीं हुआ कि आपने इसे पोस्ट करने से पहले CJam में एक लगभग समान उत्तर लिखा था (वास्तव में मैं अब तक केवल सीजेएम को एक भाषा के रूप में जानता था)। आपके समाधान के लिए भी +1।
pswg

4

अटक , 16 बाइट्स

s_l1u"google"=-/

अधिकांश लोगों के लिए एक समान विधि का पालन करते हुए, "google" इनपुट होने पर 0 त्रुटि से विभाजित होगा।


4

विंडोज बैच, 118 अक्षर

IF /I "%string%"=="google" exit
echo %string%> string.txt
for %%? in (string.txt) do ( SET /A stringlength=%%~z? - 2 )

आउटपुट% स्ट्रांग्लैंड% है।

पूर्ण कोड:

@echo off
del string.txt
cls
echo Type your string
echo.
set /p string=String:
IF /I "%string%"=="google" goto err
echo %string%> string.txt
for %%? in (string.txt) do ( SET /A stringlength=%%~z? - 2 )
cls
echo %stringlength%
pause
del string.txt
:err
color c
echo There seems to be an error with your input...
pause>nul

जोशुआ होनिग के उत्तर से संशोधित, यहाँ

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