Saludos, nobles golfistas de código. Hoy resolverás el debate más antiguo y distinguido: ¿Emacs o Vim?
Su desafío es tomar dos términos de búsqueda como entrada y salida, cuál de esos términos tiene la mayor cantidad de resultados de búsqueda de Google. (Esto es obviamente completamente justo. ¿Qué quieres decir con parcialidad?)
Aquí hay algunos ejemplos de entradas y salidas:
Entrada: emacsy vim
Salida: vim(totalmente sin crear ninguna guerra de llamas en los comentarios)
Entrada: googley microsoft
Salida:google
Entrada: code golf stack exchangey code review stack exchange
Salida: code golf stack exchange(¡sí!)
Y aquí hay algunos casos extremos solo por diversión (y para probar sus soluciones):
Entrada: About 1,000,000 resultsy About 100,000 results
Salida:About 100,000 results
Entrada: This will autocotrecty Another testcase
Salida: Another testcase(si no considera la autocorrección, entonces el primero ganará)
Para los siguientes casos de prueba, #primero debe eliminar los signos en los términos de búsqueda, ya que dependen del término que tiene una cantidad específica de resultados y publicar el término aquí arruinaría eso.
Entrada: Thissear#chter#mhasno#resultsy Another testcase
Salida: Another testcase(solo una prueba para cero resultados)
Entrada: "These exact wo#rds do#n't exi#st# on the Internet"y Another testcase
Salida: Another testcase(prueba "s)
Entrada: Abo#ut 1,65#2,85#3,2#86 re#sultsy Another testcase
Salida: Another testcase(este es complicado, el término de búsqueda anterior tiene un resultado)
Entrada: "Abo#ut 4#8,234,8#75,14#7 res#ults"y Another testcase
Salida: Another testcase(también complicado, sin resultados, por lo que muestra el término de búsqueda)
No necesita manejar el caso de las "quoted"búsquedas que devuelven "Sin resultados, mostrando resultados sin comillas" porque eso sería demasiado complicado. No necesita manejar entradas con el mismo número de resultados tampoco.
Este es el código de golf , por lo que el código más corto en bytes ganará.

Respuestas:
Factor ,
305201196200201188184182179169178171165199171170165163 bytesUn lenguaje casi tan detallado como Java, que supera a Ruby ... y Powershell. :RE
Mejor expresión regular, ahora. Gracias a @fede s. por 5 bytes de descuento!
O
159157 si la salida puede ser como{ "vim" 9782948234 }:Por otro lado, si queremos ser imposible de matar, por
199196193 bytes :No se puede matar porque analiza HTML, por lo que es mucho más robusto que las respuestas que usan regex.
fuente
unkillablemétodo En realidad, es más corto en powershell que usar una expresión regular. (Sin embargo, todavía 2 bytes más que su respuesta de expresiones regulares) Sin embargo, no llamaría succint de powershell, sus nombres de comandos rara vez son cortos (iwrresulta ser un alias predeterminado parainvoke-webrequestysortparasort-object, de lo contrario sería mucho más largo)Ruby,
203180 bytes+11 bytes para la
-ropen-uribandera (más espacio).La entrada se toma como dos argumentos.
Explicación de URL:
?nord=1: evitar el redireccionamiento automático de HTTP a HTTPS&q=#{URI.escape x}: escapar de la consulta para que"funcione&nfpr=1: sin autocorrecciónTodo se
mapconvierte['emacs','vim']en[[2150000, 'emacs'], [14900000, 'vim']]. (Puede ver esto cambiando el.max[1]al final a.inspect). Luego,maxse toma el que tomará el que tenga más resultados y[1]se usará para obtener el término de búsqueda.fuente
Thissear#chter#mhasno#resultsahora mostrará esta pregunta en Google :) Curiosamente, muestra 2 resultados (¡al menos para mí!) - google.com/… NB. Cualquier coincidencia de expresiones regulares "Acerca de * resultados" perderá el resultado encontrado en esta página :(ruby -ropen-urilugar de hacerlo en el archivo.De los editores de texto mencionados en el problema, solo uno de ellos puede resolver esto por sí solo ...
Emacs: 137 pulsaciones de teclas
Espera que los primeros términos de búsqueda estén en la primera línea y los segundos términos de búsqueda estén en la segunda línea, con el cursor al comienzo del búfer.
Para aquellos que no están familiarizados con Emacs,
C-ssignificaCtrl-S.M-zsignificaAlt-Z(Altes probable que sea su meta clave)M-<significaAlt-<oAlt-Shift-,C-S-emedioCtrl-Shift-ePara aquellos familiarizados con Emacs,
emacs -q. Eso no carga su.emacsarchivo, por lo que cualquier paquete elegante no interferirá con esto.Explicación
Escribe el comienzo del caparazón de declaración de elisp
<C-o><C-u><C-k>Guarda los argumentos con una nueva línea(if(<<C-y><C-y>Escriba el comienzo de la declaración if y coloque 2 copias de los argumentos.<M-<><C-n>Pasar a la segunda líneaDefina la macro HTTP. Esto convierte el argumento en una URL de búsqueda de Google y luego devuelve el número de resultados de búsqueda.
<F3>Comience a definir la macro del teclado<C-a>Ir al inicio del término de búsqueda.http://google.com/search?nfpr=1&q=Anteponer la URL de búsqueda<C-S-e><M-x>r-st<RET> <RET>+<RET>Reemplaza todos los espacios con signos +.<C-a><C-k><M-x>b-em<RET><C-y><RET>Emacs recupera el HTML sin formato (b-emes la abreviatura debrowse-url-emacs)<C-x><C-q>Haga que el archivo sea editable (requerido para que la macro no se equivoque)<C-s><RET>ts"><RET>Mover al número de resultados div (necesita hacer una búsqueda regular porque las macros de emacs dependen de isearch para funcionar)<M-z><Corte el texto de la diferencia (esta es la razón por la cual se requería)<C-x>0Vuelva al búfer original<C-y>0 r;; Ponga los resultados nuevamente en la línea ('0 r' no maneja resultados)<C-a><C-M-s><RET>[0-9]<RET><C-b><M-z> <C-a><C-y><C-k>;; Extrae el número de la cadena.<C-S-a><M-x><up><up><RET>,<RET><RET>Elimina comas del número<F4>Termina la macro del tecladoMover hacia abajo y ejecutar la macro de teclado en la siguiente línea.
<C-n>Va a la siguiente línea<F4>Repita la macro una vez.Termine la instrucción elisp y ejecútela
<C-e>)(next-line)())Termina la declaración de elisp<C-x><C-e>Evaluar el comando elisp<C-n><C-a><C-k>Mata el argumento ganador<C-x>h<DEL>Eliminar todo lo demás<C-y>Pega el argumento ganadorEjecutándolo usted mismo
¡Por suerte no tienes que escribir todas esas pulsaciones de teclas perfectamente! La carne y las papas están en una macro que puedes copiar y pegar. ¡La macro se puede copiar y pegar en emacs!
1.Edite la macro del teclado
<C-x><C-k><C-e>2.Pegue esto en todo el búfer (pegar debe ser
<C-y>)<C-c><C-c>para guardar la macro.<F4>para ejecutar la macro (o simplemente ejecútelo solo para intentarlo)Advertencias
<C-x><k> search<TAB><input type="submit" name="submit" value="Submit"...>, entonces esto probablemente ocurrió.<C-x><C-b>y elija el búfer con el término de búsqueda).fuente
Of the text editors mentioned in the problem, only one of them can solve this on its own...¿Es eso cierto? ¿realmente no hay bibliotecas HTTP para vimscript?curly obtener el mismo efecto. (pero su respuesta debería indicar que es vim + curl).Java,
828800783744739687 bytesfuente
argslugar de StdIn?Python 3,
227226208213226220221206202200198 bytesAsigne el lambda a algo para llamarlo.
Utiliza la biblioteca de solicitudes .
Sin golf:
fuente
NameError: name 'quote' is not definedquotevolver a cambiarurllib.parse.quotedespués de una importación absoluta.Powershell,
175, 172 bytesMostrar la puntuación y el nombre reduciría 2 bytes más.
Esto usa la misma
unkillablecaracterística que la respuesta196 ByteFactor (HTML analizado) y reduce la respuesta anterior de expresiones regulares.fuente
Raqueta,
360337 bytes0.o
Hay una razón por la que lo llaman Perdido en un mar de paréntesis.
Sin golf:
fuente