Le 1er juillet est la fête du Canada (yay Canada)! Ou est-ce? Il semble que la page Wikipedia de ce jour ait beaucoup de contenu lié au Canada, mais y a-t-il un autre jour qui est plus canadien?
Votre tâche consiste à écrire un programme ou une fonction qui prend une date (mois et jour) en entrée et renvoie ou affiche le nombre de mentions de «Canada» sur la page Wikipédia pour la date entrée. Certaines règles:
- Les dates peuvent être saisies dans tout format raisonnable de votre choix
- Votre soumission doit extraire les données de l'URL
en.wikipedia.org/wiki/Month_Day
. - Seules
"Canada"
doivent être recherchées et comptées les sous-chaînes incluses, et uniquement dans la casse du titre."Canadian"
ne compte pas, mais"Canada's"
compte. Tant que le texte exact, sensible à la casse"Canada"
existe dans une chaîne, c'est une correspondance - Le contenu de la page est considéré comme n'importe quoi dans le
.html
fichier correspondant (c'est-à-dire ce qui apparaît si vous téléchargez en tant que page en tant que.html
et l'ouvrez dans le Bloc-notes) - Le résultat peut être sorti vers STDOUT, retourné ou affiché de toute autre manière raisonnable
Cas de test:
July 1 => 34
May 14 => 1
Oct 31 => 2
July 4 => 2
C'est le golf de code, donc la soumission la plus courte gagne
(En tant que bonus non récompensé, je suis intéressé de voir quel est le jour avec le plus grand nombre)
Réponses:
Pyth, 31 octets
Ne fonctionne pas sur l'implémentation en ligne, le serveur désactive l'accès à Internet. Je voulais utiliser http://wki.pe/July_1 mais malheureusement, c'est une redirection côté client, donc elle récupère la mauvaise page. Le format d'entrée est
July_1
.Le code est fondamentalement juste:
la source
Bash,
434240 octetsUtilise
curl
,grep
etwc
pour compter les occurrences de «Canada» dans la page Web spécifiée. Comme les autres réponses, l'entrée est donnée dans le formatJuly_1
. C'est ma première publication sur le Code Golf SE et je ne connais pas bien toutes les règles. Toute rétroaction serait la bienvenue.Je ne savais pas que la sortie vers
STDERR
était traditionnellement ignorée. Merci pour les 3 octets, Dennis !la source
curl -sL
encore plus court quewget -qO-
?curl
sans-s
(ouwget
sans-q
).STDERR
c'était ignoré. Très appréciée.STDERR
est ignorée par défaut, il serait plus court d'omettre-s
entièrement le.Perl 5, 39 octets
38 octets, plus 1 pour
-pe
au lieu de-e
Prend l'entrée comme
July_1
.Merci à busukxuan de m'avoir sauvé sept octets.
la source
Python 3.5,
1171119890 octets( -8 octets (
98 -> 90
) grâce à alexwlchan )Utilise simplement la bibliothèque intégrée "urllib" de Python pour récupérer les données HTML, puis compte les occurrences du mot "Canada" dans ces données. Je vais essayer de jouer au golf au fil du temps où et quand je le pourrai. Appelez-la en renommant la
lambda
fonction en n'importe quoi, puis en appelant ce nom comme une fonction normale enveloppéeprint()
. Par exemple, si la fonction était nomméeH
, vous l'appelleriez ainsiprint(H(Month_Day))
.la source
.decode().count("Canada")
par.count(b"Canada")
.urllib.urlopen
fonction n'est pas dans un sous-package (from urllib import*
par rapport àfrom urllib.request import*
), etb"Canada"
pourrait être remplacé par"Canada"
puisque les chaînes de Python 2 sont des octets par défaut. Je compte 81 octets en Python 2, et cela fonctionne selon mes tests.Mathematica, 60 octets
Fonction anonyme. De manière similaire à la solution Perl 5, prend des entrées comme
July_1
.la source
PowerShell, 52 octets
July_1
.iwr
est l'abréviation deInvoke-WebRequest
.$($args[0])
est le premier argument de la ligne de commande. Lancer le script en tant queOhCanada.ps1 July_1
.-csplit
est une division sensible à la casse.la source
C #, 85 octets
Prend l'entrée
d
commeJuly_1
.Et
July_1
c'est vraiment la fête du Canada, ayant le plus de références. AvecFebruary_1
etApril_23
partage la 2e place avec 18"Canada"
s chacun.Trouver le
"Canada"
jour (en parallèle), 207 octets:(L'année 8 est l'année bissextile avec la représentation la plus courte). Potentiellement inefficace, dans la mesure où
OrderBy
il génère probablement> 366 appels Web, mais va plus court et semble se terminer en moins de temps.la source
R,
9996 octetsx = fonction (d) {p = readLines (paste0 (" http://enwp.org/ ", d)); sum (nchar (p) -nchar (gsub ("Canada", "", p)))) / 6}Cela prend l'entrée d sous la forme "July_1" et renvoie le nombre de Canadas. Il compte les mots en comptant le nombre de caractères sur la page, puis supprime le mot Canada de la page et compte à nouveau les caractères. Le nombre de fois où le Canada se présente est la différence entre ces chiffres divisée par le nombre de lettres au Canada, 6.
edit: j'apprécie le conseil ci-dessous pour remplacer ma fonction par scan.
la source
x=function(d){
et le remplacer en led=scan(,'')
faisant programme au lieu de fonction et en économisant quelques octets.ES6, 89 octets
Malheureusement, déballer toutes les promesses pénalise la taille: /
la source
July_1
astuce «l'entrée est au format » que le reste des questions pour économiser quelques octets. Vous avez également une erreur d'utilisationsplit().length()
, qui vous donnera une réponse supérieure à l'objectif.-1
après le.length
, mais vous pouvez économiser quelques octets en omettant lahttps:
partie de l'URL et utilisersplit'Canada'
(mais avec des astuces!) Au lieu d'split('Canada')
en enregistrer quelques autres!//
afterhttp
.Ruby + curl, 44 octets
ruby -n
+ 43 octets. Prend l'entrée commeJuly_1
.la source
Clojure, 71 octets
Ouais, ce serait bien d'utiliser
http://enwp.org
mais je supposeslurp
qu'il ne gère pas les redirections (?). Fonction anonyme qui prend jour au format "juillet_1".la source
PHP, 65 octets
la source