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: emacs
y vim
Salida: vim
(totalmente sin crear ninguna guerra de llamas en los comentarios)
Entrada: google
y microsoft
Salida:google
Entrada: code golf stack exchange
y 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 results
y About 100,000 results
Salida:About 100,000 results
Entrada: This will autocotrect
y 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#results
y 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#sults
y 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
unkillable
mé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 (iwr
resulta ser un alias predeterminado parainvoke-webrequest
ysort
parasort-object
, de lo contrario sería mucho más largo)Ruby,
203180 bytes+11 bytes para la
-ropen-uri
bandera (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
map
convierte['emacs','vim']
en[[2150000, 'emacs'], [14900000, 'vim']]
. (Puede ver esto cambiando el.max[1]
al final a.inspect
). Luego,max
se 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#results
ahora 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-uri
lugar 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-s
significaCtrl-S
.M-z
significaAlt-Z
(Alt
es probable que sea su meta clave)M-<
significaAlt-<
oAlt-Shift-,
C-S-e
medioCtrl-Shift-e
Para aquellos familiarizados con Emacs,
emacs -q
. Eso no carga su.emacs
archivo, 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-em
es 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>0
Vuelva 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?curl
y obtener el mismo efecto. (pero su respuesta debería indicar que es vim + curl).Java,
828800783744739687 bytesfuente
args
lugar 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 defined
quote
volver a cambiarurllib.parse.quote
despué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
unkillable
característica que la respuesta196 Byte
Factor (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