É simples: crie o script mais curto do navegador para transformar todas as aparências de força em uma página da Web em cavalo. Esse script precisa poder ser colado no console e funcionar nos navegadores mais modernos.
Você deve substituir todas as ocorrências da palavra força e conjugados da palavra força (forçar, forçar, reforçar). Os casos também devem ser preservados.
Você não deve alterar nenhuma ocorrência que não esteja visível quando a página for exibida em um navegador. Por exemplo, meta tags ou comentários.
Exemplo
Isto é um fOrcE log
. Isso torna as pessoas que o tocam com muita força. Não tente forçá-lo.
Isto é um hOrsE log
. Faz com que as pessoas que a tocam sejam muito sinceras. Não tente detê-lo.
Infelizmente, este é um desafio apenas para Javascript. O código mais curto vence.
fonte
forc
emhors
- ou é a substituição de todas as diferentes conjugações deforce
em suas versões de cavalos. No primeiro caso, temos coisas como "Reinhorsing", etc. No último, apenasforcing
seria uma exceção. O OP deve esclarecer..innerHTML
substituição de todas as soluções, e acho que é por isso que você deseja as exceções em primeiro lugar.Respostas:
175 bytes, ES5, XPATH
É testado com sucesso no Firefox e Chrome mais recentes. Críticas são bem-vindas! Este é o meu primeiro balanço do golfe, e espero estar fazendo certo.
O
document.evaluate()
método é suportado por todos os principais navegadores, exceto o IE , que espero satisfaça os requisitos dos "navegadores mais modernos". E como o seletor XPath seleciona apenas nós de texto , isso deve deixar atributos, comentários, espaços para nome e outros dados não destinados a serem exibidos intactos, sem a necessidade de verificar cada nóoffsetParent
.Versão não destruída:
Ou, se eu substituir
function / return
pela notação de seta com gordura ECMA6, posso reduzi-la para 163 caracteres.Essa sintaxe atualmente só funciona no Firefox, eu acho. Até que mais navegadores adotem essa sintaxe, a solução de 175 bytes acima permanecerá minha entrada oficial no jogo.
fonte
offsetParent
filtros de todas as tags comdisplay:none
estilo (que não são exibidas no navegador).(?=e|ing)
ao meu regexp se o OP considerar necessário. Em relação a issodisplay: none
, interpretei "Por exemplo, meta tags ou comentários". para significar coisas que não são nós de texto devem ser deixadas em paz, enquanto nós de texto, incluindo nós invisíveis, devem ser alterados. Eu estaria interessado em ver o OP confirmar suas intenções.ECMAScript 5,
248233193191182 bytesTestado no Chrome e Firefox.
Versão ungolfed
Só devemos modificar os TextNodes visíveis; URLs, atributos etc. não são exibidos no navegador. Podemos usar um TreeWalker para encontrar todos eles. Os TextNodes visíveis serão identificados verificando se o ParentNode possui um offsetParent verdade . 1
1 Este é um bug no IE 9.
fonte
n=[],c=0,
preencher e fazer um loopn
. Just doif(t.parentNode.offsetParent)t.data=t.data.replace
etc200 bytes, ES6
Aqui está uma versão do ES6. Execute-o no console mais recente do Firefox.
Vou adicionar a versão não-gasta, se solicitado :)Aqui está a versão ungolfed
fonte
replace('forc','hors')
e é isso. Mostra o quanto de javascript eu sei ...innerHTML
mudará todas as ocorrências dentro dos elementos visíveis; portanto, se houver um comentário dentro, ele também será tocado. 2. Pode-se argumentar que o ES6 não funciona realmente na maioria dos navegadores modernos .