Escreva um programa em qualquer idioma que leia a entrada de stdin e produza uma saída levemente modificada para stdout. O programa deve emprestar alguns caracteres da entrada e saída o maior prefixo possível, *language-name* is awesome!
seguido por uma nova linha e, em seguida, o que resta da entrada.
- A entrada não contém caracteres maiúsculos.
- Se o primeiro caractere do nome do idioma não estiver presente na cadeia, apenas o caractere de nova linha deve ser emprestado.
- Se não houver caractere de nova linha na entrada, produza a entrada sem modificação.
- Não importa qual dos caracteres disponíveis você empresta.
Estou usando \n
como o caractere de nova linha ( 0x0a
) para economizar espaço ao escrever. O programa real deve se importar apenas com o caractere de nova linha real, não com a \n
string.
Exemplo: python.
Entrada: abcdefghijklmnopqrstuvwxyz\n0123456789
Saída: python\nabcdefgijklmqrsuvwxz0123456789
Desde a entrada não tem nenhum espaço, não podemos continuar, embora tenhamos caracteres suficientes para a palavra seguinte: is
.
Exemplo: C.
input: i don't see anything!
output: i don't see anything!
C não foi encontrado na sequência, portanto, nenhuma modificação foi possível. Além disso, nenhum caractere de nova linha está presente.
Exemplo: C ++.
input: i don't\nsee anything!
output: \ni don'tsee anything!
C não foi encontrado na string, portanto, nenhuma modificação foi possível.
Exemplo: Obj-C.
input: objectively, clojure is amazing.\nq.e.d.
output: obj\nectively, clojure is amazing.q.e.d.
A entrada contém caracteres suficientes para escrever, obj
mas -
está ausente.
A contagem de bytes do seu código-fonte menos a contagem de bytes do nome do seu idioma, codificado em utf-8 (se possível), é a sua pontuação; vitórias mais baixas!
i don't\nsee anything!
como um caso de teste?Respostas:
Pitão, 37 bytes
O código fonte tem 41 bytes . Experimente online.
Como funciona
fonte
Python, 186 - 6 = 180
Experimente online
fonte
Python, 146 bytes
fonte
Ceilão, 235 - 6 = 229
void a(){variable value i="";variable value r="\nceylon is awesome!";while(exists l=process.readLine()){i=i+"\n"+l;}i=i.rest;for(j->c in r.indexed){if(c in i){i=i.replaceLast(c.string,"");}else{r=r[0:j];break;}}print(r.rest+r[0:1]+i);}
Aqui está uma versão formatada e comentada:
Ele usa em
replaceLast
vez dereplaceFirst
porque é mais curto.Alguns exemplos de entradas e saídas no mesmo formato da pergunta:
abcdefghijklmnopqrstuvwxyz\n0123456789
→ceylon\nabdfghijkmpqrstuvwxz0123456789
i don't see anything!
→i don't see anything!
i don't\nsee anything!
→\ni don't see anything!
objectively, closure is amazing.\nq.e.d.
→ceylon is a\nobjectivel, sureiamzng.\q..d.
fonte
JavaScript (ES6) 90 (100-10)
Como uma função retornando a saída solicitada. É difícil implementar com E / S, como o substituto usual para STDIN
prompt()
, que não aceita uma nova linha dentro da string de entrada.Como uma função com saída real (usando
alert
), a contagem de bytes é 107Teste a execução do snippet abaixo em um navegador compatível com EcmaScript 6 (implementando o operador de propagação e a função de seta - eu uso o FireFox)
fonte
Perl, 72 - 4 = 68 bytes
Inclui 2 interruptores.
Explicação : Para cada caractere na sequência
"\nperl is awesome"
, remova o caractere correspondente da sequência de entrada ($_
) até encontrarmos um caractere não presente$_
. Os caracteres correspondentes são armazenados nos$p
quais é prefixado o$_
qual é então impresso.O
-0
comutador lê a entrada completa em vez de linha por linha e o-p
comutador torna a leitura de entrada e imprime a saída implícita.fonte
JavaScript (ES7),
101107-10 = 97Antes era mais curto e até funcionava nos quatro casos de teste, mas aparentemente eu perdi uma regra, então ...
Funciona corretamente no Firefox 42. Isso começou originalmente em 119 bytes, mas um truque da resposta do @ edc65 ajudou a encurtá-lo bastante. Eu acho que ainda há espaço para melhorias. Como sempre, sugestões são bem-vindas!
fonte
obj
->job
, não deve ser modificado (regra 3)is awesome
e ainda funcionaria corretamente em todos os quatro. Eu vou consertar isso o mais rápido possível.