Saudações, jogadores nobres de código. Hoje você resolverá o mais antigo e distinto dos debates - Emacs ou Vim?
Seu desafio é usar dois termos de pesquisa como entrada e gerar qual desses termos tem mais resultados de pesquisa no Google. (Isso é obviamente completamente justo. Como assim, tendencioso?)
Aqui estão alguns exemplos de entradas e saídas:
Entrada: emacs
e vim
Saída: vim
(totalmente não criando nenhuma guerra de chamas nos comentários)
Entrada: google
e microsoft
Saída:google
Entrada: code golf stack exchange
e code review stack exchange
Saída: code golf stack exchange
(sim!)
E aqui estão alguns casos extremos apenas por diversão (e para testar suas soluções):
Entrada: About 1,000,000 results
e About 100,000 results
Saída:About 100,000 results
Entrada: This will autocotrect
e Another testcase
Saída: Another testcase
(se você não considerar a correção automática, a primeira vencerá)
Para os casos de teste a seguir, você deve remover os #
sinais nos termos da pesquisa primeiro, pois eles dependem do termo com uma quantidade específica de resultados e a publicação do termo aqui estragaria isso.
Entrada: Thissear#chter#mhasno#results
e Another testcase
Saída: Another testcase
(apenas um teste para zero resultados)
Entrada: "These exact wo#rds do#n't exi#st# on the Internet"
e Another testcase
Saída: Another testcase
(testes "
)
Entrada: Abo#ut 1,65#2,85#3,2#86 re#sults
e Another testcase
Saída: Another testcase
(este é complicado - o termo de pesquisa acima tem um resultado)
Entrada: "Abo#ut 4#8,234,8#75,14#7 res#ults"
e Another testcase
Saída: Another testcase
(também complicado - sem resultados, para exibir o termo de pesquisa)
Você não precisa lidar com o caso de canto das "quoted"
pesquisas retornando "Nenhum resultado, mostrando resultados sem aspas", porque isso seria muito complicado. Você também não precisa manipular entradas com o mesmo número de resultados.
Isso é código-golfe , então o código mais curto em bytes vencerá!
Respostas:
Fator ,
305201196200201188184182179169178171165199171170165163 bytesUma linguagem quase tão detalhada quanto Java, superando Ruby ... e Powershell! : D
Regex melhor, agora. Graças a @fede s. por 5 bytes de desconto!
Ou
159157, se a saída puder ser como{ "vim" 9782948234 }
:Por outro lado, se queremos ser imbatíveis, por
199196193 bytes :Inominável porque analisa HTML, muito mais robusto que as respostas usando regex.
fonte
unkillable
método. Na verdade, é mais curto no PowerShell do que usar um regex. (Ainda assim, 2 bytes a mais que a sua resposta regex). Eu não chamaria succint PowerShell, porém, é os nomes de comandos são raramente curta (iwr
passa a ser um alias padrão parainvoke-webrequest
esort
parasort-object
, caso contrário, seria muito mais tempo)Ruby,
203180 bytes+11 bytes para o
-ropen-uri
sinalizador (mais espaço).A entrada é aceita como dois argumentos.
Explicação do URL:
?nord=1
: impedir o redirecionamento automático de HTTP para HTTPS&q=#{URI.escape x}
: escapar da consulta para que"
funcione&nfpr=1
: sem autocorreçãoO todo
map
se['emacs','vim']
transforma[[2150000, 'emacs'], [14900000, 'vim']]
. (Você pode ver isso alterando o.max[1]
no final para.inspect
.) Em seguida,max
é tirado o que[1]
obtém o que tiver mais resultados e é usado para obter o termo de pesquisa.fonte
Thissear#chter#mhasno#results
agora mostrará essa pergunta no Google :) Curiosamente, ele mostra 2 resultados (pelo menos para mim!) - google.com/NB . Qualquer correspondência de regex "Sobre resultados *" vai perder o resultado encontrado nesta página :(ruby -ropen-uri
solicitando no comando em vez de no arquivo.Dos editores de texto mencionados no problema, apenas um deles pode resolver isso sozinho ...
Emacs: 137 pressionamentos de teclas
Ele espera que os primeiros termos de pesquisa estejam na primeira linha e os segundos termos de pesquisa estejam na segunda linha, com o cursor no início do buffer.
Para quem não conhece o Emacs,
C-s
meiosCtrl-S
.M-z
significaAlt-Z
(Alt
provavelmente sua meta-chave)M-<
meiosAlt-<
ouAlt-Shift-,
C-S-e
significaCtrl-Shift-e
Para aqueles familiarizados com o Emacs,
emacs -q
. Isso não carrega seu.emacs
arquivo, portanto, qualquer pacote sofisticado não interfere nisso.Explicação
Escreva o início do shell de declaração elisp
<C-o><C-u><C-k>
Salva os argumentos com uma nova linha(if(<<C-y><C-y>
Escreva o início da instrução if e coloque 2 cópias dos argumentos<M-<><C-n>
Mover para a segunda linhaDefina a macro HTTP. Isso converte o argumento em um URL de pesquisa do Google e retorna o número de resultados da pesquisa.
<F3>
Comece a definir a macro do teclado<C-a>
Vá para o início do termo de pesquisa.http://google.com/search?nfpr=1&q=
Anexe o URL da pesquisa<C-S-e><M-x>r-st<RET> <RET>+<RET>
Substitua todos os espaços com sinais de +.<C-a><C-k><M-x>b-em<RET><C-y><RET>
O Emacs recupera o HTML bruto (b-em
é a abreviação debrowse-url-emacs
)<C-x><C-q>
Torne o arquivo gravável (necessário para que a macro não se engane)<C-s><RET>ts"><RET>
Mover para o número de resultados div (precisa fazer uma pesquisa regular porque as macros do emacs dependem do isearch para funcionar)<M-z><
Recorte o texto do diff (é por isso que foi necessário)<C-x>0
Volte para o buffer original<C-y>0 r
;; Coloque os resultados de volta na linha ('0 r' não lida com resultados)<C-a><C-M-s><RET>[0-9]<RET><C-b><M-z> <C-a><C-y><C-k>
;; Extraia o número da sequência.<C-S-a><M-x><up><up><RET>,<RET><RET>
Retira vírgulas do número<F4>
Conclua a macro do tecladoMova para baixo e execute a macro do teclado na próxima linha.
<C-n>
Vai para a próxima linha<F4>
Repita a macro uma vez.Conclua a instrução elisp e execute-a
<C-e>)(next-line)())
Concluir a instrução elisp<C-x><C-e>
Avalie o comando elisp<C-n><C-a><C-k>
Mate o argumento vencedor<C-x>h<DEL>
Excluir todo o resto<C-y>
Cole o argumento vencedorExecutando você mesmo
Felizmente, você não precisa digitar todas essas teclas perfeitamente! A carne e as batatas estão todas em uma macro que você pode copiar e colar. A macro pode ser copiada e colada no emacs!
1.Editar a macro do teclado
<C-x><C-k><C-e>
2.Pare isso em todo o buffer (a pasta deve ser
<C-y>
)<C-c><C-c>
para salvar a macro.<F4>
para executar a macro (ou apenas execute-a por conta própria para tentar)Ressalvas
<C-x><k> search<TAB>
<input type="submit" name="submit" value="Submit"...>
, provavelmente isso ocorreu.<C-x><C-b>
e escolher o buffer com o termo de pesquisa).fonte
Of the text editors mentioned in the problem, only one of them can solve this on its own...
isso é verdade? realmente não existem bibliotecas HTTP para vimscript?curl
e obter o mesmo efeito. (mas sua resposta deve indicar que é vim + curvatura).Java,
828800783744739687 bytesfonte
args
vez de StdIn?Python 3,
227226208213226220221206202200198 bytesAtribua o lambda a algo para chamá-lo.
Usa a biblioteca de solicitações .
Ungolfed:
fonte
NameError: name 'quote' is not defined
quote
voltarurllib.parse.quote
depois de uma importação absoluta.Powershell,
175, 172 bytesMostrar a pontuação e o nome reduziria mais 2 bytes.
Isso usa o mesmo
unkillable
recurso da resposta do196 Byte
fator (HTML analisado) e diminui a resposta da regex anterior.fonte
Raquete,
360337 bytes0.o
Há uma razão pela qual eles chamam de Lost In a Sea of Parentheses.
Ungolfed:
fonte