Название похищенного вдохновленный ответ Грег Hewgill в к чем разница между JavaScript и Java?
Введение
Java и JavaScript являются широко используемыми языками среди программистов и в настоящее время являются наиболее популярными тегами в Stack Overflow. Тем не менее, как мы все знаем, помимо схожих имен, эти два понятия не имеют почти ничего общего.
В честь одной из самых печально известных дискуссий по программированию, вдохновленных моими недавними разочарованиями в поиске по тегам , я предлагаю следующее:
Вызов
Напишите программу, которая принимает в качестве входных данных строку. Вернуть, car
если строка начинается с «Java» и не содержит «JavaScript». В противном случае вернитесь 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
Заметки
- Соответствие ввода должно быть без учета регистра
- Только возможности для вывода должны быть
car
илиcarpet
- Мнимые бонусные баллы, если ваш ответ использует Java, JavaScript или Regex
- Альтернативное название: Java - это JavaScript, как ветчина - хомяку
code-golf
string
decision-problem
pattern-matching
Stevoisiak
источник
источник
javacarpet
могут возникать ошибки, которых нет в существующих тестах.imaginary bonus points if your answer uses Java, Javascript, or Regex
, делает ли это решение таким сложным? ;)Alternate Title: Java is to JavaScript as ham is to hamster
На самом деле, «ветчина» в «хомяка» является родственным к пищевому «ветчина». Пищевой «ветчиной» является мясо свиньи, а термин «хомяк» происходит от родственного животного, морской свинки, чье мясо заменило мясо свиньи в дальних морских рейсах, поскольку животных было легче выращивать на корабле.Ответы:
Java / JavaScript Polyglot,
108107106 байтЗапустить как Java
Попробуйте онлайн!
Примечание: не доверяйте выделению, поскольку оно неверно. Настоящая Java, правильно интерпретированная, выглядит следующим образом, поскольку
\u000A
на самом первом этапе компиляции интерпретируется как\n
де-факто завершение комментария, начинающегося со строки comment (//
).Запустить как JavaScript
Кредиты @CowsQuak для версии JS.
Сколько мнимых бонусных баллов за этот ответ?
-1 байт благодаря @Nevay в ответе Java.
источник
a
и=>
. Я старался оставаться в духе игры в гольф. Если я сделал что-то не так, пожалуйста, скажите мне?JavaScript,
5049 байтСохранено 1 байт благодаря @ValueInk путем перестановки регулярных выражений
Тестовый фрагмент
источник
/^java(?!script)/i
Java (OpenJDK 8) ,
9282725857 байтПопробуйте онлайн!
1 байт сохранен благодаря @Nevay !
источник
C (только колл-пут), 131 байт
У него есть свои проблемы, но он проходит все предоставленные тестовые примеры :)
хорошо ... нет, спасибо
источник
05AB1E , 21 байт
Попробуйте онлайн!
источник
lD“¦‚“åi“¾„“ë“îá“åi…carë
На 3 байта больше и на 1 час позже :(. Отличная работа.Python 2 , 68 байт
Попробуйте онлайн!
-11 байт благодаря notjagan
-2 байт благодаря Деннису
источник
;
это требуется, поэтому я вынужден использовать его в любом случае, поэтому новая строка не нужна: P Именно поэтому я использовал это.C #,
8078 байтисточник
EXCELGoogle Sheets,8986 байтСохранено 3 байта благодаря Тейлор Скотт
Принимает вход на А1
объяснение
источник
Search
es наFind
s для -2 байтов, и что это может быть дополнительно переведено в формулу листов Google для -3 байтов, если не закрыть последние три символаvim, 58 байт
Попробуйте онлайн!
источник
g
команды может быть немного короче, что-то вроде:g/\cjavascript/d
:g!/^\cjava/d
icarpet␛:s/pet..*
.Желе , 27 байт
Попробуйте онлайн!
источник
Рубин , 42 + 1 = 43 байта
Использует
-p
флаг.Попробуйте онлайн!
источник
Retina ,
4437 байтСпасибо @MartinEnder за 7 байтов!
Попробуйте онлайн!
источник
Common Lisp,
131125 байтПопробуйте онлайн!
Размер уменьшен благодаря # n = «уловке» Common Lisp.
объяснение
источник
C (tcc),
144136 байтовПопробуйте онлайн!
раскатали:
источник
Excel, 84 байта
источник
Excel VBA, 76 байт
Функция анонимного непосредственного окна VBE, которая принимает входные данные из диапазона
[A1]
и выводитcar
/carpet
status в непосредственное окно VBEНе использует RegExp
источник
Python 3 , 95 байт
Попробуйте онлайн!
Да, это может быть короче, но я хотел попробовать использовать вложенную лямбду!
источник
and
,or
,if
,else
Perl , 42 байта
Я полагаю, что ответ от stevieb имеет неправильный вывод (сам пробовал - он возвращает машину для 'javajavascript'). Это должно работать:
источник
Mathematica, 82 байта
регулярное выражение
источник
JAISBaL , 36 байт
Многословный / объяснение:
JAISBaL была моей первой попыткой создать язык игры в гольф, так что это довольно странно ... здесь нет совпадений или содержаний, регулярных выражений или чего-то еще, поэтому вместо этого нам нужно разделить и проверить полученную длину массива ... потому что JAISBaL имеет разделение на -regex ... но никакой другой поддержки regex .... по причинам.
УкраденноеRegex позаимствовано из ответа @Cows Quack .источник
Python 2 , 69 байт
В настоящее время на 1 байт больше, чем самое короткое решение Python 2.
Попробуйте онлайн!
источник
Perl , 36 байт
Запустите его так:
источник
Пакетная, 91 байт
Принимает участие в STDIN. Пакет не имеет оператора сравнения без учета регистра, но он имеет замену строки без учета регистра, поэтому я могу назначить временное значение первым четырем символам, а затем заменить регистр без учета регистра, что должно привести к пустой строке. Между тем я без учета регистра заменяю javascript в исходной строке, что должно оставить его без изменений.
источник
Луа, 96 байт
источник
Perl,
988462 байтаПопробуйте онлайн!
Благодаря bytepusher
источник
return $b;
просто$b;
. Perl всегда возвращает последний оцененный оператор. Поскольку нас не волнуют предупреждения, вы можете даже опустить ';' к$b}
. Вам не нужны скобки вокруг if. Если вы используете||
вместоor
, вы можете сохранить пробел после регулярного выражения.!~
вместо! =~
второго условия могут быть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}
$_[0] =~//i||$_[0]!~//i
. И, наконец, почему переменная?sub a{"car".($_[0]=~/javascript/i||$_[0]!~/^java/i?'pet':'');}
должно быть хорошо :). А теперь: perl будет хорош и позволит вам использовать $ _ [0] без указания его (хотя и не с!~
):sub a{"car".(/javascript/i||!/^java/i?'pet':'')}
-> 48 :)Дарт В.М.,
104 байта102 байтаПояснение :
Degolfed:
У нас есть наша обычная основная функция
Мы заменим
p
наp[0].toLowerCase();
так, что нам не нужно объявлять новую переменную (var
плюс пробел будет 4 дополнительных байта)Затем мы приступаем к фактической печати
Мы печатаем
car
безоговорочно и используем встроенные операторы для проверки, печатать лиpet
после него или нет. Если у него есть строка 'java' с индексом 0 и в нем нет 'javascript', мы ничего не делаем (мы фактически добавляем пустую строку, но это не имеет никакого эффекта), и в противном случае мы добавляемpet
.источник
Ржавчина, 97 байт
Я уверен, что есть более короткое решение, но это моя первая попытка :)
источник
Бракмат , 66 байт
Попробуйте онлайн!
источник