Título roubado inspirado na resposta de Greg Hewgill para Qual é a diferença entre JavaScript e Java?
Introdução
Java e JavaScript são linguagens comumente usadas entre programadores e atualmente são as tags mais populares no Stack Overflow. No entanto, como todos sabemos, além de nomes semelhantes, os dois não têm quase nada em comum.
Em homenagem a um dos debates mais infames da programação, e inspirado pelas minhas recentes frustrações na busca de tags , proponho o seguinte:
Desafio
Escreva um programa que aceite uma string como entrada. Retorne car
se a sequência começar com "Java" e não incluir "JavaScript". Caso contrário, retorne carpet
.
Exemplo de entrada e saída
carro:
java
javafx
javabeans
java-stream
java-script
java-8
java.util.scanner
java-avascript
JAVA-SCRIPTING
javacarpet
tapete:
javascript
javascript-events
facebook-javascript-sdk
javajavascript
jquery
python
rx-java
java-api-for-javascript
not-java
JAVASCRIPTING
Notas
- A correspondência de entrada não diferencia maiúsculas de minúsculas
- Somente as possibilidades de saída devem ser
car
oucarpet
- Pontos de bônus imaginários se sua resposta usar Java, JavaScript ou Regex
- Título alternativo: Java é para JavaScript como ham é para hamster
code-golf
string
decision-problem
pattern-matching
Stevoisiak
fonte
fonte
javacarpet
pode haver erros que os casos de teste existentes não conseguem.imaginary bonus points if your answer uses Java, Javascript, or Regex
, isso torna complexo o bytecount dessa solução? ;)Alternate Title: Java is to JavaScript as ham is to hamster
Na verdade, o "presunto" no "hamster" é conhecido pelo alimento "presunto". O alimento "presunto" é carne de porco, e o termo "hamster" é derivado do animal relacionado, o porquinho-da-índia, cuja carne substituiu a carne de porco em longas viagens marítimas, pois era mais fácil criar animais em um navio.Respostas:
Poliglota Java / JavaScript,
108107106 bytesExecutar como Java
Experimente online!
Nota: não confie no destaque, pois está incorreto. O Java real, corretamente interpretado, se parece com o abaixo, porque
\u000A
é interpretado na primeira etapa da compilação como\n
, de fato, encerrando o comentário iniciado com a linha comment (//
).Executar como JavaScript
Créditos para @CowsQuak para a versão JS.
Quantos pontos de bônus imaginários para esta resposta?
-1 byte graças a @Nevay na resposta Java.
fonte
a
e=>
. Eu tentei ficar no espírito do golfe. Se eu fiz algo errado, por favor me diga?JavaScript,
5049 bytesEconomize 1 byte graças a @ValueInk reorganizando a regex
Snippet de teste
fonte
/^java(?!script)/i
Java (OpenJDK 8) ,
9282725857 bytesExperimente online!
1 byte salvo graças ao @Nevay !
fonte
C (apenas chamadas a serem colocadas), 131 bytes
Ele tem seus problemas, mas passa em todos os casos de teste fornecidos :)
bem ... não, obrigado
fonte
05AB1E , 21 bytes
Experimente online!
fonte
lD“¦‚“åi“¾„“ë“îá“åi…carë
3 bytes a mais e 1 hora de atraso :(. Bom trabalho.Python 2 , 68 bytes
Experimente online!
-11 bytes graças a notjagan
-2 bytes graças a Dennis
fonte
;
é necessário, então, como eu tenho que usá-lo de qualquer maneira, a nova linha é desnecessária: P É por isso que o usei.C #,
8078 bytesfonte
EXCELPlanilhas Google,8986 bytesEconomizou 3 bytes graças a Taylor Scott
Recebe uma entrada em A1
Explicação
fonte
Search
es comFind
s para -2 bytes e que isso poderia ser ainda traduzida para uma fórmula planilha do Google para -3 bytes por não fechar os últimos três parensvim, 58 bytes
Experimente online!
fonte
g
comando pode ser um pouco mais curto, algo assim:g/\cjavascript/d
:g!/^\cjava/d
icarpet␛:s/pet..*
.Gelatina , 27 bytes
Experimente online!
fonte
Ruby , 42 + 1 = 43 bytes
Usa a
-p
bandeira.Experimente online!
fonte
Retina ,
4437 bytesObrigado a @MartinEnder por jogar fora 7 bytes!
Experimente online!
fonte
Lisp comum,
131125 bytesExperimente online!
Tamanho reduzido graças ao # n = "truque" do Common Lisp.
Explicação
fonte
C (tcc),
144136 bytesExperimente online!
Desenrolado:
fonte
Excel, 84 bytes
fonte
Excel VBA, 76 bytes
A função de janela imediata anônima do VBE que leva a entrada do intervalo
[A1]
e das saídas écar
/carpet
status para a janela imediata do VBENão usa RegExp
fonte
Python 3 , 95 bytes
Experimente online!
Sim, poderia ser mais curto, mas eu queria tentar usar uma lambda aninhada!
fonte
and
,or
,if
,else
Perl , 42 bytes
Eu acredito que a resposta por stevieb tem uma saída incorreta (tentei isso sozinho - ele retorna carro para 'javajavascript'). Isso deve funcionar:
fonte
Mathematica, 82 bytes
regex
fonte
JAISBaL , 36 bytes
Detalhado / explicação:
JAISBaL foi minha primeira tentativa de projetar uma linguagem de golfe, por isso é bastante peculiar ... não há correspondências ou contém, regex ou outra coisa; portanto, temos que dividir e verificar o comprimento do array resultante ... porque JAISBaL tem uma divisão por -regex ... mas nenhum outro suporte a regex .... por razões.
O Regex
roubouemprestado da resposta do @Cows Quack .fonte
Python 2 , 69 bytes
Atualmente, 1 byte a mais que a solução mais curta do Python 2.
Experimente online!
fonte
Perl , 36 bytes
Execute-o da seguinte maneira:
fonte
Lote, 91 bytes
Recebe entrada em STDIN. O lote não possui um operador de comparação sem distinção entre maiúsculas e minúsculas, mas possui substituição de sequência sem distinção entre maiúsculas e minúsculas, para que eu possa atribuir um temporário aos quatro primeiros caracteres e depois substituir sem maiúsculas e minúsculas java, o que resultará na sequência vazia. Enquanto isso, caso insensível, substitua o javascript na string original, o que deve mantê-lo inalterado.
fonte
Lua, 96 bytes
fonte
Perl,
988462 bytesExperimente online!
Graças a bytepusher
fonte
return $b;
por apenas$b;
. Perl sempre retorna a última instrução avaliada. Como não nos importamos com avisos, você pode até soltar o ';' para$b}
. Você não precisa dos colchetes em torno do if. Se você usar em||
vez deor
, poderá salvar um espaço em branco após a regex.!~
vez da! =~
segunda condição pode serlc$_[0]!~
. `->sub a{$b="car";$b.="pet"if lc$_[0]=~/javascript/||lc$_[0]!~/^java/;$b}
. Usando os ops ternários traz-lo para baixo mais umasub a{$b="car";$b.="pet"if lc$_[0]=~/javascript/||lc$_[0]!~/^java/;$b}
$_[0] =~//i||$_[0]!~//i
. E, finalmente, por que uma variável?sub a{"car".($_[0]=~/javascript/i||$_[0]!~/^java/i?'pet':'');}
deve fazer bem :). E agora: perl será agradável e permitem que você use $ _ [0] w / o especificá-lo (embora não com!~
):sub a{"car".(/javascript/i||!/^java/i?'pet':'')}
-> 48 :)VM de dardo,
104 bytes102 bytesExplicação :
Degolfado:
Temos nossa função principal usual
Substituímos
p
porp[0].toLowerCase();
para não precisarmos declarar uma nova variável (var
mais um espaço seria de 4 bytes extras)Em seguida, procedemos à impressão real
Imprimimos
car
incondicionalmente e usamos instruções em linha para verificar se é para imprimirpet
depois ou não. Se tiver a string 'java' no índice 0 e não tiver 'javascript', não faremos nada (na verdade acrescentamos uma string vazia, mas não tem nenhum efeito) e, caso contrário, acrescentamospet
.fonte
Ferrugem, 97 bytes
Tenho certeza de que existe uma solução mais curta, mas é a minha primeira tentativa :)
fonte
Bracmat , 66 bytes
Experimente online!
fonte