Der 1. Juli ist Kanada-Tag (yay Kanada)! Oder ist es? Es scheint, dass die Wikipedia- Seite für diesen Tag viele kanadische Inhalte enthält, aber gibt es einen anderen Tag, der kanadischer ist?
Ihre Aufgabe ist es, ein Programm oder eine Funktion zu schreiben, die ein Datum (Monat und Tag) als Eingabe verwendet und die Anzahl der Erwähnungen von "Kanada" auf der Wikipedia-Seite für das eingegebene Datum zurückgibt oder ausgibt. Einige Regeln:
- Termine können in jedem vernünftigen Format Ihrer Wahl eingegeben werden
- Ihr Beitrag muss Daten aus der URL entnehmen
en.wikipedia.org/wiki/Month_Day
. - Es
"Canada"
muss nur nach eingeschlossenen Teilzeichenfolgen gesucht und diese gezählt werden, und dies nur in der Groß- und Kleinschreibung."Canadian"
zählt nicht, zählt aber"Canada's"
. Solange der genaue, case-senstitive Text"Canada"
in einem String existiert, ist es eine Übereinstimmung - Der Inhalt der Seite wird als Bestandteil der entsprechenden
.html
Datei betrachtet (dh was wird angezeigt, wenn Sie die Seite als herunterladen.html
und im Editor öffnen). - Das Ergebnis kann an STDOUT ausgegeben, zurückgegeben oder auf andere angemessene Weise angezeigt werden
Testfälle:
July 1 => 34
May 14 => 1
Oct 31 => 2
July 4 => 2
Dies ist Codegolf, also gewinnt die kürzeste Einreichung
(Als nicht belohnter Bonus bin ich daran interessiert zu sehen, was der Tag mit der höchsten Anzahl ist.)
Antworten:
Pyth, 31 Bytes
Funktioniert nicht in der Online-Implementierung, der Server deaktiviert den Internetzugang. Ich wollte http://wki.pe/July_1 verwenden, aber leider handelt es sich um eine clientseitige Weiterleitung, sodass die falsche Seite abgerufen wird. Das Eingabeformat ist
July_1
.Der Code ist im Grunde nur:
quelle
Bash,
434240 BytesVerwendet,,
curl
undgrep
,wc
um Vorkommen von "Kanada" auf einer bestimmten Webseite zu zählen. Wie bei den anderen Antworten erfolgt die Eingabe im FormatJuly_1
. Dies ist mein erster Beitrag im Code Golf SE und ich kenne mich nicht mit allen Regeln aus. Jede Rückmeldung wäre sehr willkommen.Wusste nicht, dass die Ausgabe an
STDERR
traditionell ignoriert wird. Danke für die 3 Bytes, Dennis !quelle
curl -sL
noch kürzer alswget -qO-
?curl
ohne-s
(oderwget
ohne-q
) verwenden können.STDERR
das ignoriert wird. Sehr geschätzt.STDERR
standardmäßig ignoriert wird, ist es immer noch kürzer, das Ganze wegzulassen-s
.Perl 5, 39 Bytes
38 Bytes plus 1 für
-pe
statt-e
Nimmt Eingaben wie
July_1
.Vielen Dank an busukxuan , der mir sieben Bytes gespart hat.
quelle
Python 3.5,
1171119890 Bytes( -8 bytes (
98 -> 90
) dank alexwlchan )Verwendet einfach die in Python integrierte "urllib" -Bibliothek, um HTML-Daten abzurufen, und zählt dann die Vorkommen des Wortes "Kanada" in diesen Daten. Ich werde versuchen, im Laufe der Zeit mehr Golf zu spielen, wo und wann ich kann. Rufen Sie es auf, indem Sie die
lambda
Funktion in einen beliebigen Namen umbenennen und diesen Namen dann wie eine normale Funktion aufrufenprint()
. Wenn die Funktion beispielsweise benannt wäreH
, würden Sie sie wie folgt aufrufenprint(H(Month_Day))
.quelle
.decode().count("Canada")
mit.count(b"Canada")
.urllib.urlopen
Funktion nicht in einem Unterpaket (from urllib import*
versusfrom urllib.request import*
) enthalten ist undb"Canada"
durch ersetzt werden könnte,"Canada"
da die Zeichenfolgen von Python 2 standardmäßig Bytes sind. Ich zähle 81 Bytes in Python 2 und es funktioniert nach meinen Tests.Mathematica, 60 Bytes
Anonyme Funktion. Ähnlich wie bei der Perl 5-Lösung, erfolgt die Eingabe wie bei
July_1
.quelle
PowerShell, 52 Byte
July_1
.iwr
ist eine Abkürzung fürInvoke-WebRequest
.$($args[0])
ist das erste Kommandozeilenargument. Skript starten alsOhCanada.ps1 July_1
.-csplit
ist case sensitive split.quelle
85 Bytes
Nimmt Eingaben
d
wieJuly_1
.Und es
July_1
ist wahrlich Canada Day mit den meisten Referenzen. MitFebruary_1
undApril_23
teilen sich den 2. Platz mit jeweils 18"Canada"
s.Findetag
"Canada"
(parallel), 207 Bytes:(Jahr 8 ist das Schaltjahr mit der kürzesten Darstellung). Potenziell ineffizient, da das
OrderBy
wahrscheinlich> 366 Webanrufe erzeugt, aber nur kürzer wird und in nicht viel mehr Zeit fertig zu sein scheint.quelle
R
9996 Bytesx = Funktion (d) {p = readLines (paste0 (" http://enwp.org/ ", d)); Summe (nchar (p) -nchar (gsub ("Canada", "", p)) / 6}Dies übernimmt die Eingabe d in der Form "Juli_1" und gibt die Anzahl der Kanadier zurück. Es zählt die Wörter, indem es die Anzahl der Zeichen auf der Seite zählt, entfernt dann das Wort Kanada von der Seite und zählt die Zeichen erneut. Die Häufigkeit, mit der Kanada auftaucht, ist die Differenz zwischen diesen Zählungen geteilt durch die Anzahl der Buchstaben in Kanada, 6.
Bearbeiten: Ich schätze den folgenden Tipp zum Ersetzen meiner Funktion durch Scannen.
quelle
x=function(d){
und ersetzen,d=scan(,'')
indem Sie es programmieren, anstatt zu funktionieren und einige Bytes zu sparen.ES6, 89 Bytes
Leider bestraft das Auspacken aller Versprechen die Größe: /
quelle
July_1
Trick "Eingabe erfolgt im Format " anwenden wie bei den restlichen Fragen, um einige Bytes zu sparen. Sie haben auch einen Fehler bei der Verwendungsplit().length()
, wodurch Sie eine Antwort erhalten, die über dem Ziel liegt.-1
nach dem.length
, aber Sie können einige Bytes sparen, indem Sie denhttps:
Teil der URL weglassen , und verwendensplit'Canada'
(aber mit Backticks!), Anstattsplit('Canada')
ein paar mehr zu speichern!//
After löschenhttp
.Ruby + Curl, 44 Bytes
ruby -n
+ 43 Bytes. Nimmt Eingaben wieJuly_1
.quelle
Clojure, 71 Bytes
Ja, es wäre schön zu benutzen,
http://enwp.org
aber ich denke,slurp
es werden keine Weiterleitungen verarbeitet (?). Anonyme Funktion, die einen Tag im Format "Juli_1" benötigt.quelle
PHP, 65 Bytes
quelle