¡El 1 de julio es el día de Canadá (yay Canadá)! ¿O es eso? Parece que la página de Wikipedia para este día tiene mucho contenido relacionado con Canadá, pero ¿hay otro día que sea más canadiense?
Su tarea es escribir un programa o función que tome una fecha (mes y día) como entrada y devuelva o envíe el número de menciones de "Canadá" en la página de Wikipedia para la fecha de entrada. Algunas reglas:
- Las fechas se pueden ingresar en cualquier formato razonable de su elección
- Su envío debe extraer datos de la url
en.wikipedia.org/wiki/Month_Day. - Solo
"Canada"deben buscarse y contarse las subcadenas incluidas, y solo en el caso del título."Canadian"no cuenta, sin"Canada's"embargo cuenta. Mientras exista el texto exacto, sensible a mayúsculas y minúsculas"Canada"dentro de una cadena, es una coincidencia - El contenido de la página se considera cualquier cosa dentro del
.htmlarchivo correspondiente (es decir, lo que aparece si descarga como página.htmly la abre en el Bloc de notas) - El resultado puede enviarse a STDOUT, devolverse o mostrarse de cualquier otra manera razonable
Casos de prueba:
July 1 => 34
May 14 => 1
Oct 31 => 2
July 4 => 2
Este es el código de golf, por lo que gana la presentación más corta
(Como un bono sin recompensa, estoy interesado en ver cuál es el día con el conteo más alto)

Respuestas:
Pyth, 31 bytes
No funciona en la implementación en línea, el servidor deshabilita el acceso a Internet. Quería usar http://wki.pe/July_1 pero lamentablemente es una redirección del lado del cliente, por lo que busca la página incorrecta. El formato de entrada es
July_1.El código es básicamente solo:
fuente
Bash,
434240 bytesUsos
curl,grepywcpara contar las ocurrencias de "Canadá" en la página web especificada. Al igual que las otras respuestas, la entrada se da en el formatoJuly_1. Esta es la primera vez que publico en Code Golf SE y no estoy muy familiarizado con todas las reglas. Cualquier comentario sería muy bienvenido.No me di cuenta de que la salida a
STDERRse ignora tradicionalmente. ¡Gracias por los 3 bytes, Dennis !fuente
curl -sLaún no sería más corto quewget -qO-?curlsin-s(owgetsin-q).STDERRse ignora. Muy apreciado.STDERRse ignora por defecto, sería más corto omitirla por-scompleto.Perl 5, 39 bytes
38 bytes, más 1 para en
-pelugar de-eToma entrada como
July_1.Gracias a busukxuan por salvarme siete bytes.
fuente
Python 3.5,
1171119890 bytes( -8 bytes (
98 -> 90) gracias a alexwlchan )Simplemente usa la biblioteca "urllib" incorporada de Python para buscar datos HTML y luego cuenta las apariciones de la palabra "Canadá" en esos datos. Intentaré jugar más golf con el tiempo donde y cuando pueda. Llámelo renombrando la
lambdafunción a cualquier cosa y luego llamando ese nombre como una función normal envueltaprint(). Por ejemplo, si se nombrara la funciónH, entonces la llamaría asíprint(H(Month_Day)).fuente
.decode().count("Canada")con.count(b"Canada").urllib.urlopenfunción no está en un subpaquete (from urllib import*versusfrom urllib.request import*), yb"Canada"podría reemplazarse"Canada"ya que las cadenas de Python 2 son bytes por defecto. Cuento 81 bytes en Python 2, y funciona de acuerdo con mis pruebas.Mathematica, 60 bytes
Función anónima. De manera similar a la solución Perl 5, toma entradas como
July_1.fuente
PowerShell, 52 bytes
July_1.iwres la abreviatura deInvoke-WebRequest.$($args[0])es el primer argumento de línea de comando. Iniciar script comoOhCanada.ps1 July_1.-csplites una división sensible a mayúsculas y minúsculas.fuente
C #, 85 bytes
Toma entrada
dcomoJuly_1.Y
July_1es verdaderamente el Día de Canadá, que tiene la mayor cantidad de referencias. ConFebruary_1yApril_23compartiendo 2do lugar con 18"Canada"s cada uno.Buscar
"Canada"día (en paralelo), 207 bytes:(El año 8 es el año bisiesto con la representación más corta). Potencialmente ineficiente, ya que
OrderByprobablemente genera> 366 llamadas web, pero solo se acorta y parece completarse en no mucho más tiempo.fuente
R,
9996 bytesx = función (d) {p = readLines (paste0 (" http://enwp.org/ ", d)); sum (nchar (p) -nchar (gsub ("Canada", "", p))) / 6}Esto toma la entrada d en el formulario "Julio_1" y devuelve el recuento de Canadas. Cuenta las palabras contando el número de caracteres en la página, luego elimina la palabra Canadá de la página y vuelve a contar los caracteres. La cantidad de veces que aparece Canadá es la diferencia en estos recuentos dividida por la cantidad de letras en Canadá, 6.
editar: agradezco el siguiente consejo sobre reemplazar mi función con escaneo.
fuente
x=function(d){y reemplazar cond=scan(,'')hacerlo programa en lugar de función y guardar algunos bytes.ES6, 89 bytes
Lamentablemente, desenvolver todas las promesas penaliza el tamaño: /
fuente
July_1truco "la entrada está en el formato " como el resto de las preguntas para guardar algunos bytes. También tiene un error al usarsplit().length(), que le dará una respuesta mayor que la meta.-1después.length, pero puede guardar algunos bytes al omitir lahttps:parte de la URL, y usarsplit'Canada'(¡pero con backticks!) En lugar desplit('Canada')guardar un par más!//afterhttp.Ruby + rizo, 44 bytes
ruby -n+ 43 bytes. Toma entrada comoJuly_1.fuente
Clojure, 71 bytes
Sí, sería agradable de usar,
http://enwp.orgpero supongoslurpque no maneja las redirecciones (?). Función anónima que toma día en el formato "Julio_1".fuente
PHP, 65 bytes
fuente