¡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
.html
archivo correspondiente (es decir, lo que aparece si descarga como página.html
y 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
,grep
ywc
para 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
STDERR
se ignora tradicionalmente. ¡Gracias por los 3 bytes, Dennis !fuente
curl -sL
aún no sería más corto quewget -qO-
?curl
sin-s
(owget
sin-q
).STDERR
se ignora. Muy apreciado.STDERR
se ignora por defecto, sería más corto omitirla por-s
completo.Perl 5, 39 bytes
38 bytes, más 1 para en
-pe
lugar de-e
Toma 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
lambda
funció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.urlopen
funció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
.iwr
es la abreviatura deInvoke-WebRequest
.$($args[0])
es el primer argumento de línea de comando. Iniciar script comoOhCanada.ps1 July_1
.-csplit
es una división sensible a mayúsculas y minúsculas.fuente
C #, 85 bytes
Toma entrada
d
comoJuly_1
.Y
July_1
es verdaderamente el Día de Canadá, que tiene la mayor cantidad de referencias. ConFebruary_1
yApril_23
compartiendo 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
OrderBy
probablemente 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_1
truco "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.-1
despué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.org
pero supongoslurp
que no maneja las redirecciones (?). Función anónima que toma día en el formato "Julio_1".fuente
PHP, 65 bytes
fuente