जावा को जावास्क्रिप्ट के रूप में कार कारपेट के लिए है


36

ग्रेग हेवगिल के जवाब से प्रेरित शीर्षक चोरी क्या जावास्क्रिप्ट और जावा के बीच अंतर है?

परिचय

जावा और जावास्क्रिप्ट आमतौर पर प्रोग्रामर के बीच भाषा का उपयोग किया जाता है, और वर्तमान में स्टैक ओवरफ्लो पर सबसे लोकप्रिय टैग हैं। फिर भी जैसा कि हम सभी जानते हैं, एक जैसे नामों से अलग, दोनों में लगभग कुछ भी समान नहीं है।

प्रोग्रामिंग की सबसे बदनाम बहसों में से एक के सम्मान में, और टैग खोज में मेरी हाल की कुंठाओं से प्रेरित होकर , मैं निम्नलिखित का प्रस्ताव करता हूं:

चुनौती

एक प्रोग्राम लिखें जो इनपुट के रूप में एक स्ट्रिंग में लेता है। carयदि स्ट्रिंग "जावा" से शुरू होती है और "जावास्क्रिप्ट" शामिल नहीं करता है तो वापस लौटें । नहीं तो लौटो carpet

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

गाड़ी:

java
javafx
javabeans
java-stream
java-script
java-8
java.util.scanner
java-avascript
JAVA-SCRIPTING
javacarpet

कालीन:

javascript
javascript-events
facebook-javascript-sdk
javajavascript
jquery
python
rx-java
java-api-for-javascript
not-java
JAVASCRIPTING

टिप्पणियाँ


2
नए पैटर्न-मिलान वाले टैग को विकि की आवश्यकता है। कृपया योगदान करें यदि आप कर सकते हैं
क्रिस्टोफर

2
आदेश के आधार पर चीजें की जाती हैं, javacarpetवे बग को पकड़ सकते हैं जो मौजूदा परीक्षण मामलों में नहीं हैं।
रे

17
यदि आप प्राप्त करते हैं imaginary bonus points if your answer uses Java, Javascript, or Regex, तो क्या इस तरह के समाधान का बायटेकाउंट जटिल है? ;)
स्टेडीबॉक्स

Alternate Title: Java is to JavaScript as ham is to hamsterदरअसल, "हम्सटर" में "हैम" भोजन "हैम" के लिए संज्ञानात्मक है। भोजन "हैम" सुअर का मांस है, और शब्द "हम्सटर" संबंधित जानवर, गिनी पिग से लिया गया है, जिसका मांस सूअरों के मांस को लंबे समुद्री यात्राओं पर बदल दिया जाता है क्योंकि जानवरों को जहाज पर उठाना आसान था।
डॉटनकोहेन

जवाबों:


100

जावा / जावास्क्रिप्ट पॉलीग्लॉट, 108 107 106 बाइट्स

//\u000As->s.matches("(?i)(?!.*javascript)java.*"/*
a=>/(?!.*javascript)^java/i.test(a/**/)?"car":"carpet"

जावा के रूप में चलाएँ

//\u000As->s.matches("(?i)(?!.*javascript)java.*"/*
a=>/(?!.*javascript)^java/i.test(a/**/)?"car":"carpet"

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

ध्यान दें: हाइलाइट पर भरोसा न करें क्योंकि यह गलत है। वास्तविक जावा, ठीक से व्याख्या की तरह नीचे दिखता है क्योंकि \u000Aसंकलन के पहले चरण में व्याख्या की जाती है \n, जैसा कि लाइन टिप्पणी के साथ शुरू हुई टिप्पणी को समाप्त करता है ( //)।

//
s->s.matches("(?i)(?!.*javascript)java.*"/*
a=>/(?!.*javascript)^java/i.test(a/**/)?"car":"carpet"

जावास्क्रिप्ट के रूप में चलाएँ

//\u000As->s.matches("(?i)(?!.*javascript)java.*"/*
a=>/(?!.*javascript)^java/i.test(a/**/)?"car":"carpet"

जेएस संस्करण के लिए @CowsQuak को क्रेडिट।

let f=

//\u000As->s.matches("(?i)(?!.*javascript)java.*"/*
a=>/(?!.*javascript)^java/i.test(a/**/)?"car":"carpet"

var a=["java","javafx","javabeans","java-stream","java-script","java-8","java.util.scanner","javascript","java-avascript","javascript-events","facebook-javascript-sdk","javajavascript","jquery","python","rx-java","java-api-for-javascript","not-java"];

for(var s of a) console.log(s.padStart(a.reduce((x,y)=>x.length>y.length?x:y).length) + "=>" + f(s));

इस उत्तर के लिए कितने काल्पनिक बोनस अंक हैं?

जावा उत्तर में @Nevay को -1 बाइट धन्यवाद ।


1
यह जावास्क्रिप्ट या जावा में प्रतिस्पर्धी नहीं है। मुझे यकीन भी नहीं है कि यह एक गंभीर दावेदार है, जो सभी प्रस्तुतियाँ के लिए एक आवश्यकता है।
डेनिस

10
@ डेनिस आपकी जानकारी के लिए धन्यवाद। हालाँकि मैं इसे एक बहुविकल्पीय प्रविष्टि मानता हूँ। क्या पॉलीग्लॉट प्रविष्टियों के खिलाफ कोई नियम है जब उन्हें स्पष्ट रूप से अनुरोध नहीं किया गया है? मैंने इसे जितना संभव हो उतना गोल्फ करने की कोशिश की। उदाहरण के लिए, मैंने दोनों रेगीक्स को एक साथ रखने की कोशिश की, लेकिन मुझे इससे कम कुछ नहीं मिला (क्योंकि दो अलग-अलग समान रीजैक्स, और उनके सीमांकक)। जावास्क्रिप्ट की समान परिभाषा होना भी असंभव है क्योंकि जावास्क्रिप्ट aऔर के बीच एक नई रेखा की अनुमति नहीं देता है =>। मैंने गोल्फ की भावना में रहने की कोशिश की। अगर मैंने कुछ गलत किया है, तो कृपया मुझे बताएं?
ओलिवियर ग्राएगोयर

24
@ डेनिस IMHO "जावा / जावास्क्रिप्ट बहुवचन" अपनी भाषा के रूप में गिना जाता है, इस मामले में यह बहुत प्रतिस्पर्धी है।
ETHproductions

1
@ ओलिवियरग्रैयर मैं यह नहीं कह रहा हूं कि यह एक अच्छी तरह से तैयार किए गए पॉलीग्लॉट सबमिशन नहीं है, लेकिन पहली जगह पर गैर-पॉलीग्लॉट चुनौतियों के लिए पॉलीग्लॉट सबमिशन होना चाहिए, तो यह बहस का विषय है। वे गंभीर दावेदारों के हिस्से के रूप में सामने आए , जो चुनौती मांगने से ज्यादा है? चर्चा, लेकिन मुझे नहीं लगता कि इस विशेष विषय पर एक स्पष्ट सहमति है। निजी तौर पर, मैं इसके पक्ष में नहीं हूं।
डेनिस

3
@ डेनिस आपकी अंतर्दृष्टि के लिए धन्यवाद, मुझे अब समझ में आया कि आपका क्या मतलब था। क्या यह उत्तर आपके अनुसार "गैर-प्रतिस्पर्धी" के रूप में टैग किया जाना चाहिए? दूसरी ओर, जब मैं सभी बहुभाषी उत्तरों के लिए नहीं बोल रहा हूं (यह मेरा पहला मौका है), इसका एक विशेष अर्थ है कि चुनौती जावा और जावास्क्रिप्ट दोनों के बारे में बोलती है, और यह कि "काल्पनिक बोनस अंक" स्पष्ट रूप से सम्मानित किए गए थे जावा, जावास्क्रिप्ट और regex उत्तर के लिए इससे पहले कि मैं यह जवाब लिखता। जावा और रेगेक्स को जोड़ा जा सकता है, जावास्क्रिप्ट और रेगेक्स को जोड़ा जा सकता है, सभी एक साथ क्यों नहीं? वैसे भी, मैं इसे गैर-प्रतिस्पर्धी के रूप में चिह्नित नहीं करता हूं।
ओलिवियर ग्रेगोइरे

17

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

रेगेक्स को पुनर्व्यवस्थित करके @ValueInk को 1 बाइट धन्यवाद दिया गया

a=>/javascript|^(?!java)/i.test(a)?"car":"carpet"

टेस्ट स्निपेट

let f=

a=>/javascript|^(?!java)/i.test(a)?"carpet":"car"

var a=["java","javafx","javabeans","java-stream","java-script","java-8","java.util.scanner","java-avascript","javascript","javascript-events","facebook-javascript-sdk","javajavascript","jquery","python","rx-java","java-api-for-javascript","not-java"];

for(var s of a) console.log(s.padStart(a.reduce((x,y)=>x.length>y.length?x:y).length) + "=>" + f(s));


मैं आपका रेगेक्स चुराने जा रहा था, लेकिन इससे मेरा जवाब और लंबा हो जाता: ओ अच्छा जवाब हालांकि
हाइपरयूट्रीनो

अब हमें सिर्फ एक जावा उत्तर की आवश्यकता है।
DJMcMayhem

हमारे पास जावा उत्तर है, लेकिन ... मैं लगभग एक ही रेगीक्स में आया ...
ओलिवियर ग्राएगोइरे

वैकल्पिक रूप से:/^java(?!script)/i
एंड्रिया

1
@ ओलिवियरग्रैगियर आह, अरे, यह अनुचित लगता है
एंड्रिया

15

जावा (ओपनजेडके 8) , 92 82 72 58 57 बाइट्स

s->s.matches("(?i)(?!.*javascript)java.*")?"car":"carpet"

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

1 बाइट @Nevay के लिए धन्यवाद बचा लिया !


1
आप कार्यवाहक को छोड़ सकते हैं क्योंकि स्ट्रिंग # मिलान पूरे स्ट्रिंग से मिलान करने का प्रयास करता है।
नेवले जूल

11

सी (केवल कॉलिंग पुट), 131 बाइट्स

f(int*s){char r[]="carpet";~*s&'AVAJ'||(r[3]=0);for(;*s&255;*(int*)&s+=1)~*s&'AVAJ'||~s[1]&'IRCS'||~s[2]&'TP'||(r[3]='p');puts(r);}

इसकी समस्याएं हैं, लेकिन यह प्रदान किए गए सभी टेस्टकेस पास करता है :)

g(int* s)
{
  char r[] = "carpet";
  ~*s&'AVAJ' || (r[3]=0);
  for(;*s & 255; *(int*)&s +=1)
    ~*s&'AVAJ' || ~s[1]&'IRCS' || ~s[2]&'TP' || (r[3]='p');
  puts(r);
}

यदि आपका उत्तर जावा, जावास्क्रिप्ट या रेगेक्स का उपयोग करता है तो काल्पनिक बोनस अंक

अच्छा ... धन्यवाद नहीं



8

पायथन 2 , 68 बाइट्स

k=input().lower();print'car'+'pet'*(k[:4]!='java'or'javascript'in k)

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

-11 बाइट्स धन्यवाद नॉटजगन
-2 बाइट्स डेनिस को धन्यवाद




@ जस्टिन भी। अच्छा लगा।
हाइपरएन्यूट्रीनो

यदि आप पायथन 2 पर जाते हैं, तो आप एक पूर्ण कार्यक्रम के साथ 2 बाइट बचा सकते हैं।
डेनिस

1
@LukeSawczak ओह मुझे इस बात का भी एहसास नहीं था कि इससे पहले पीआई जावा का उपयोग कर रहा था और जावा में ;इसकी आवश्यकता है इसलिए मुझे इसका उपयोग करना होगा, वैसे भी नई लाइन अनावश्यक है: पी यही कारण है कि मैंने इसका उपयोग किया है।
हाइपरनेत्रिनो

4

सी #, 80 78 बाइट्स

s=>(s=s.ToLower()).StartsWith("java")&!s.Contains("javascript")?"car":"carpet"

1
मुझे लगता है कि यहाँ सबसे अधिक पठनीय भाषा C # है
sepehr

2
@ सेफ़र का मतलब है कि आप सी # के साथ तेज देखते हैं। (क्या मुझे गूंगा टिप्पणियों के लिए एक बोनस मिलता है)
रे

4

EXCEL Google शीट, 89 86 बाइट्स

टेलर स्कॉट के लिए धन्यवाद 3 बाइट्स बचा लिया

=LEFT("carpet",6-3*ISERR(SEARCH("javascript",A1))+3*ISERR(IF(SEARCH("java",A1)=1,1,1/0

A1 पर एक इनपुट लेता है

व्याख्या

=LEFT("carpet",6-3*ISERR(SEARCH("javascript",A1))+3*ISERR(IF(SEARCH("java",A1)=1,1,1/0)))

 SEARCH("javascript",A1)        #Case-Insensitive Find, returns error if not found  
 ISERR(                         #Returns string true if error, False if not
 3*ISERR(                       #Forces TRUE/False as integer, multiplies by 3
 IF(SEARCH("java",A1)=1,1,1/0)  #If java found, returns integer. if 1, java begins string
                                #so returns 1, which will be turned into 0 by iserr.
                                #Else returns 1/0, which will be turned into 1 by iserr.
 LEFT(                          #Returns digits from the left, based upon count.

मेरा मानना ​​है कि आप Searches को Find-2 बाइट्स के साथ बदल सकते हैं और यह कि पिछले तीन परेंस को बंद न करके -3 बाइट्स के लिए एक गूगल शीट फॉर्मूला में अनुवाद किया जा सकता है
टेलर स्कॉट

1
केस केस संवेदनशील है, खोज असंवेदनशील है। लेकिन उन आखिरी 3 बाइट्स एक अच्छा विचार है!
मार्क

एक्सेल से Google शीट में स्वैप क्यों?
स्टेविसीक जूल

2
पिछले 3 पार्न्स को हटाने से 3 बाइट्स बचते हैं। एक्सेल बस एक त्रुटि फेंक देंगे और उन्हें आपके लिए वैसे भी डाल देंगे।
मार्क





3

कॉमन लिस्प, 131 125 बाइट्स

(lambda(s)(format()"car~@[pet~]"(or(<(length s)4)(not(#1=string-equal"java"(subseq s 0 4)))(search"javascript"s :test'#1#))))

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

आम लिस्प के # n = "ट्रिक" के कारण आकार कम हो गया ।

व्याख्या

(lambda (s)                 ; anonymous function
  (format                   ; use of format string to produce the result
    ()                      ; the result is a string
    "car~@[pet~]"           ; print "car", then print "pet" when:
    (or (< (length s) 4)    ; the string is less then 4 characters or
        (not (string-equal "java" (subseq s 0 4)))     ; does not start with java or
        (search "javascript" s :test 'string-equal)))) ; contains javascript

2

C (tcc), 144 136 बाइट्स

a;f(s){char*t=s;for(;*t;a=!strncmp(s,"java",4))*t=tolower(*t++);for(t=s;*t;)s=strncmp(t++,"javascript",10)&&s;puts(a*s?"car":"carpet");}

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

unrolled:

a;
f(s)
{
    char *t = s;
    for (; *t; a = !strncmp(s, "java", 4))
        *t = tolower(*t++);
    for (t=s; *t;)
        s = strncmp(t++, "javascript", 10) && s;
    puts(a*s ? "car"  :"carpet");
}

1

एक्सेल, 84 बाइट्स

="car"&IF(AND(ISERR(SEARCH("javascript",A1)),IFERROR(SEARCH("java",A1),2)=1),,"pet")

1

एक्सेल VBA, 76 बाइट्स

अनाम VBE तत्काल विंडो फ़ंक्शन जो रेंज [A1]और आउटपुट से इनपुट लेता है car/ carpetVBE तत्काल विंडो के लिए स्थिति है

RegExp का उपयोग नहीं करता है

?"car"IIf(InStr(1,[A1],"Java",1)*(InStr(1,[A1],"JavaScript",1)=0),"","pet")

1
Vba का अच्छा उपयोग! मैंने सोचा कि एक मैक्रो छोटा होगा। अब मेरे पास सबूत है।
मार्क

1

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

g=lambda s:(lambda r:'car' if r[:4]=='java' and 'javascript' not in r else 'carpet')(s.lower())

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

हाँ, यह कम हो सकता है लेकिन मैं एक नेस्टेड लैम्ब्डा का उपयोग करने की कोशिश करना चाहता था!


हमेशा प्रयोग करने के लिए अच्छा :) ध्यान दें कि आप बाइट्स ऑपरेटरों की तरह चारों ओर बचा सकता है and, or, if,else
ल्यूक Sawczak

1

पर्ल , 42 बाइट्स

मेरा मानना ​​है कि स्टेविब के जवाब में एक गलत आउटपुट है (कोशिश की जाती है कि कोई खुद - यह 'जजावसस्क्रिप्ट' के लिए कार लौटाए)। यह काम करना चाहिए:

say/^java/i&&!/javascript/i?'car':'carpet'

0

गणितज्ञ, 82 बाइट्स

regex

If[#~StringMatchQ~RegularExpression@"(?i)(?!.*javascript)^java.*","Car","Carpet"]&

0

JAISBaL , 36 बाइट्स

℠℘(?!.*javascript)^java.*}͵Ucar½Upet

शब्दाडंबरपूर्ण / स्पष्टीकरण:

# \# enable verbose parsing #\
tolower                           \# [0] convert the top value of the stack to lowercase #\
split (?!.*javascript)^java.*}    \# [1] split the top value of the stack by (?!.*javascript)^java.*} #\
arraylength                       \# [2] push the length of the array onto the stack #\
print3 car                        \# [3] print car #\
!if                               \# [4] if the top value on the stack is falsy, skip the next statement #\
print3 pet                        \# [5] print pet #\

JAISBaL एक गोल्फिंग भाषा को डिजाइन करने का मेरा पहला प्रयास था, इसलिए यह काफी विचित्र है ... इसमें कोई मेल या शामिल नहीं है, regex या अन्यथा, इसलिए इसके बजाय हमें परिणामी सरणी लंबाई को विभाजित करना और जांचना होगा ... क्योंकि JAISBaL में विभाजन होता है -regex ... लेकिन कोई अन्य regex समर्थन .... कारण।

Regex @Cows Quack के उत्तर से उधार चुराया गया



0

पर्ल , 36 बाइट्स

say/^java(?!script)/i?"car":"carpet"

इसे इस तरह से चलाएं:

perl -nE 'say/^java(?!script)/i?"car":"carpet"' java.txt

0

बैच, 91 बाइट्स

@set/ps=
@set t=%s:~0,4%
@if "%t:java=%%s:javascript=%"=="%s%" (echo car)else echo carpet

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



0

पर्ल, 98 84 62 बाइट्स

sub a{"car".($_[0]=~/javascript/i||$_[0]!~/^java/i?'pet':'');}

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

थैंक्स टू बायसेपशर


साइट पर आपका स्वागत है! मैं किसी भी गड़बड़ी को नहीं जानता, लेकिन ऐसा लगता है कि बहुत सारे व्हाट्सएप हैं जिन्हें आप हटा सकते हैं। इसके अलावा, अगर आप इसे छोटा करने के और तरीकों की तलाश कर रहे हैं, तो यहां युक्तियों का एक समूह है
DJMcMayhem

@DJMcMayhem धन्यवाद, मुझे लगता है कि इसे और भी छोटा बनाने के लिए पूरे तर्क को बदला जा सकता है, लेकिन मुझे इसका पता नहीं चला है
Burgan

1
बस कुछ संकेत (आपके समाधान को बहुत अधिक बदले बिना): आप return $b;बस के साथ बदल सकते हैं $b;। पर्ल हमेशा अंतिम मूल्यांकित कथन को लौटाता है। चूंकि हम चेतावनियों के बारे में परवाह नहीं करते हैं, आप 'छोड़ भी सकते हैं?' को $b}। आपको इफ के आसपास कोष्ठक की आवश्यकता नहीं है। यदि आप ||इसके बजाय का उपयोग करते हैं or, तो आप regex के बाद एक व्हाट्सएप को बचा सकते हैं।
बट्टेपुर

1
आप पहले lc के आस-पास () को भी हटा सकते हैं, लेकिन उसके बाद एक स्थान चाहिए। यदि आप दूसरी स्थिति के !~बजाय उपयोग ! =~कर सकते हैं lc$_[0]!~। `-> sub a{$b="car";$b.="pet"if lc$_[0]=~/javascript/||lc$_[0]!~/^java/;$b}। टर्नरी ऑप्स का उपयोग इसे एक और नीचे लाता हैsub a{$b="car";$b.="pet"if lc$_[0]=~/javascript/||lc$_[0]!~/^java/;$b}
बट्टेपर

1
भूलने के लिए नहीं - जब आप regex अनदेखा केस स्विच करते हैं, तो lc की कोई आवश्यकता नहीं है, नीचे एक और 2 :) $_[0] =~//i||$_[0]!~//i। और अंत में, एक चर क्यों? sub a{"car".($_[0]=~/javascript/i||$_[0]!~/^java/i?'pet':'');}ठीक करना चाहिए :)। और अब: perl अच्छा होगा और आप $ _ [0] w / o का उपयोग करते हुए इसे निर्दिष्ट करेंगे (हालांकि इसके साथ नहीं !~): sub a{"car".(/javascript/i||!/^java/i?'pet':'')}-> 48 :)
bytepusher

0

डार्ट वीएम, 104 बाइट्स 102 बाइट्स

main(p){p=p[0].toLowerCase();print("car${p.indexOf('java')==0&&p.indexOf('javascript')<0?'':'pet'}");}

व्याख्या :

Degolfed:

main(p)
{
    p = p[0].toLowerCase();
    print("car${p.indexOf('java') == 0 && p.indexOf('javascript') < 0 ? '' : 'pet'}");
}

हम अपने सामान्य मुख्य कार्य है

हम बदलने के pसाथ p[0].toLowerCase();इतना है कि हम एक नया चर घोषित करने के लिए नहीं है (var के साथ साथ एक अंतरिक्ष 4 अतिरिक्त बाइट्स होगा)

फिर हम वास्तविक छपाई करने के लिए आगे बढ़ते हैं

हम carबिना शर्त प्रिंट करते हैं और हम petयह जाँचने के लिए इनलाइन स्टेटमेंट का उपयोग करते हैं कि इसके बाद प्रिंट करना है या नहीं। यदि इसे इंडेक्स 0 पर स्ट्रिंग 'जावा' है और इसमें 'जावास्क्रिप्ट' नहीं है, तो हम कुछ भी नहीं करते हैं (हम वास्तव में एक खाली स्ट्रिंग को जोड़ते हैं लेकिन इसका कोई प्रभाव नहीं होता है) और अन्यथा हम संलग्न होते हैं pet


0

जंग, 97 बाइट्स

let s=if Regex::new(r"^javascript|^!java$").unwrap().is_match("javascript"){"carpet"}else{"car"};

मुझे पूरा यकीन है कि एक छोटा सा समाधान है, लेकिन यह मेरी पहली कोशिश है :)


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