Tytuł skradzione zainspirowany odpowiedź Greg Hewgill jest na czym polega różnica między JavaScript i Java?
Wprowadzenie
Java i JavaScript są powszechnie używanymi językami wśród programistów i są obecnie najpopularniejszymi tagami w przepełnieniu stosu. Jednak, jak wszyscy wiemy, oprócz podobnych nazw, te dwa nie mają ze sobą prawie nic wspólnego.
Na cześć jednej z najbardziej niesławnych debat programistycznych i zainspirowanych moimi ostatnimi frustracjami związanymi z wyszukiwaniem tagów , proponuję:
Wyzwanie
Napisz program, który pobiera ciąg znaków jako dane wejściowe. Zwraca, car
jeśli ciąg zaczyna się od „Java” i nie zawiera „JavaScript”. W przeciwnym razie wróć carpet
.
Przykład wejścia i wyjścia
samochód:
java
javafx
javabeans
java-stream
java-script
java-8
java.util.scanner
java-avascript
JAVA-SCRIPTING
javacarpet
wykładzina podłogowa:
javascript
javascript-events
facebook-javascript-sdk
javajavascript
jquery
python
rx-java
java-api-for-javascript
not-java
JAVASCRIPTING
Notatki
- Dopasowanie danych wejściowych powinno nie uwzględniać wielkości liter
- Jedynymi możliwościami wyjścia powinny być
car
lubcarpet
- Wyimaginowane punkty bonusowe, jeśli Twoja odpowiedź używa Java, JavaScript lub Regex
- Alternatywny tytuł: Java to JavaScript, podobnie jak szynka to chomik
code-golf
string
decision-problem
pattern-matching
Stevoisiak
źródło
źródło
javacarpet
mogą wykrywać błędy, których nie mają istniejące przypadki testowe.imaginary bonus points if your answer uses Java, Javascript, or Regex
, czy to sprawia, że takie rozwiązanie jest skomplikowane? ;)Alternate Title: Java is to JavaScript as ham is to hamster
W rzeczywistości „szynka” w „chomiku” odnosi się do „szynki” spożywczej. „Szynka” spożywcza to mięso wieprzowe, a termin „chomik” pochodzi od spokrewnionego zwierzęcia, świnki morskiej, której mięso zastąpiło mięso wieprzowe podczas dalekich podróży morskich, ponieważ zwierzęta łatwiej było hodować na statku.Odpowiedzi:
Java / JavaScript Polyglot,
108107106 bajtówUruchom jako Java
Wypróbuj online!
Uwaga: nie ufaj wyróżnieniu, ponieważ jest nieprawidłowe. Prawdziwa Java, poprawnie zinterpretowana, wygląda jak poniżej, ponieważ
\u000A
jest interpretowana na pierwszym etapie kompilacji jako\n
de facto kończąca komentarz, który zaczął się od komentarza wierszowego (//
).Uruchom jako JavaScript
Kredyty dla @CowsQuak dla wersji JS.
Ile wyimaginowanych punktów bonusowych za tę odpowiedź?
-1 bajt dzięki @Nevay w odpowiedzi Java.
źródło
a
i=>
. Starałem się pozostać w duchu golfa. Jeśli zrobiłem coś złego, proszę powiedz mi?JavaScript,
5049 bajtówZaoszczędzono 1 bajt dzięki @ValueInk, zmieniając regex
Testowy fragment kodu
źródło
/^java(?!script)/i
Java (OpenJDK 8) ,
9282725857 bajtówWypróbuj online!
1 bajt zapisany dzięki @Nevay !
źródło
C (tylko wywołanie put), 131 bajtów
Ma swoje problemy, ale przechodzi wszystkie dostarczone przypadki testowe :)
cóż ... nie, dziękuję
źródło
05AB1E , 21 bajtów
Wypróbuj online!
źródło
lD“¦‚“åi“¾„“ë“îá“åi…carë
3 bajty więcej i 1 godzina spóźnienia :(. Dobra robota.Python 2 , 68 bajtów
Wypróbuj online!
-11 bajtów dzięki notjagan
-2 bajty dzięki Dennisowi
źródło
;
jest wymagany w Javie, więc ponieważ muszę go używać, nowa linia jest niepotrzebna: P Dlatego go użyłem.C #,
8078 bajtówźródło
EXCELArkusze Google,8986 bajtówZaoszczędź 3 bajty dzięki Taylor Scott
Pobiera dane na A1
Wyjaśnienie
źródło
Search
esFind
s-2 bajtami i że można to dodatkowo przełożyć na formułę arkuszy Google dla -3 bajtów, nie zamykając ostatnich trzech parenówvim, 58 bajtów
Wypróbuj online!
źródło
g
polecenia może być nieco krótsze, coś w rodzaju:g/\cjavascript/d
:g!/^\cjava/d
icarpet␛:s/pet..*
.Galaretka , 27 bajtów
Wypróbuj online!
źródło
Rubin , 42 + 1 = 43 bajty
Używa
-p
flagi.Wypróbuj online!
źródło
Retina ,
4437 bajtówDzięki @MartinEnder za grę w golfa z 7 bajtów!
Wypróbuj online!
źródło
Common Lisp,
131125 bajtówWypróbuj online!
Rozmiar zmniejszony dzięki # n = „trickowi” Common Lisp.
Wyjaśnienie
źródło
C (tcc),
144136 bajtówWypróbuj online!
Rozwinięty:
źródło
Excel, 84 bajty
źródło
Excel VBA, 76 bajtów
Anonimowa funkcja bezpośredniego okna VBE, która pobiera dane wejściowe z zakresu
[A1]
i danych wyjściowych tocar
/carpet
status do bezpośredniego okna VBENie używa RegExp
źródło
Python 3 , 95 bajtów
Wypróbuj online!
Tak, może być krótszy, ale chciałem spróbować użyć zagnieżdżonej lambdy!
źródło
and
,or
,if
,else
Perl , 42 bajty
Wierzę, że odpowiedź stevieba ma niepoprawny wynik (sam tego spróbowałem - zwraca samochód dla „javajavascript”). To powinno działać:
źródło
Mathematica, 82 bajty
regex
źródło
JAISBaL , 36 bajtów
Pełne / wyjaśnienie:
JAISBaL to moja pierwsza próba zaprojektowania języka golfowego, więc jest raczej dziwaczna ... nie ma żadnych dopasowań ani zawiera, wyrażeń regularnych lub w inny sposób, więc zamiast tego musimy podzielić i sprawdzić wynikową długość tablicy ... ponieważ JAISBaL ma podział według -regex ... ale żadne inne wsparcie wyrażeń regularnych ... z powodów.
Regex
skradzionypożyczony od odpowiedzi @Cows Quack .źródło
Python 2 , 69 bajtów
Obecnie 1 bajt dłuższy niż najkrótsze rozwiązanie Python 2.
Wypróbuj online!
źródło
Perl, 36 bytes
Run it as such:
źródło
Batch, 91 bytes
Takes input on STDIN. Batch doesn't have a case insensitive comparison operator but it does have case insensitive string replacement so I can assign a temporary to the first four characters and then case insensitively replace java, which should then result in the empty string. Meanwhile I case insensitively replace javascript in the original string, which should leave it unchanged.
źródło
Lua, 96 bytes
źródło
Perl,
988462 BytesTry it online!
Thanks to bytepusher
źródło
return $b;
with just$b;
. Perl always returns the last evaluated statement. Since we don't care about warnings, you can even drop the ';' to$b}
. You don't need the brackets around the if. If you use||
instead ofor
, you can save a whitespace after the regex.!~
instead of! =~
the second condition can belc$_[0]!~
. ` ->sub a{$b="car";$b.="pet"if lc$_[0]=~/javascript/||lc$_[0]!~/^java/;$b}
. Using the ternary ops brings it down one moresub a{$b="car";$b.="pet"if lc$_[0]=~/javascript/||lc$_[0]!~/^java/;$b}
$_[0] =~//i||$_[0]!~//i
. And finally, why a variable?sub a{"car".($_[0]=~/javascript/i||$_[0]!~/^java/i?'pet':'');}
should do fine :). And now: perl will be nice and let you use $_[0] w/o specifying it (though not with!~
):sub a{"car".(/javascript/i||!/^java/i?'pet':'')}
-> 48 :)Dart VM,
104 bytes102 bytesExplanation:
Degolfed:
We have our usual main function
We replace
p
withp[0].toLowerCase();
so that we don't have to declare a new variable (var
plus a space would be 4 extra bytes)We then proceed to do the actual printing
We print
car
unconditionally and we use inline statements for checking whether to printpet
after it or not. If it has the string 'java' at index 0 and does not have 'javascript' in it, we do nothing (we actually append an empty string but it does not have any effect) and otherwise we appendpet
.źródło
Rust, 97 bytes
I'm pretty sure that there is a shorter solution but it's my first try :)
źródło
Bracmat, 66 bytes
Try it online!
źródło