10 Clickbaits, denen Sie nicht widerstehen können

8

Schreiben Sie ein Programm / eine Funktion / ein Skript, das eine natürliche Zahl i von 1 bis 10 als Eingabe verwendet und die URL der Frage mit der i-ten heißesten Frage im Code Golf Portal ausgibt

Die Bestellung sollte wie unter https://codegolf.stackexchange.com/?tab=hot erfolgen . Beispiel:
Eingabe 1
Ausgabe /codegolf/127047/the-spain-license-plates-game
(zum Zeitpunkt dieser Bearbeitung)

Es gibt keine starken Einschränkungen für die Ausgabe, solange die URL vernünftigerweise abgerufen werden kann. Gültige Ausgaben sind Zeichenfolgen, Konsolendruck usw.

Es ist Code Golf, also gewinnt der kürzeste Code in Bytes.

Anmerkungen

Wenn Ihr Programm automatisch einen Browser mit der Webseite öffnet, gilt dies als gültige Ausgabe und ist absolut cool.

Wenn Ihr Programm das Ranking nicht aus aktuellen Informationen abruft (dh die Links fest codiert), ist es ungültig.

Der Wettbewerb endet mit Ende Juni.

Wie in Frage gestellt: Die Indizierung muss auf 1 basieren, dh: Die Eingabe 1 muss die erste Stelle der heißesten Fragen zurückgeben.

Kommentar

Ich hoffe, diese Frage ist nicht zu klickend, da mich das Stack Exchange-Editor-Programm über den Titel verspottet hat. Ursprünglich plante ich diese Herausforderung mit Youtube-Trends, wo es passender gewesen wäre.

Moartem
quelle
1
Betreff: Stack Exchange verspottet Sie wegen des Fragentitels und löst nur das Wort youspeziell aus. Die von der Software getroffene Annahme ist, dass wenn Sie Leute fragen, was sie speziell über etwas denken, die Frage wahrscheinlich als primär meinungsbasiert geschlossen wird (als ob die Frage sachlich wäre, wäre es egal wen du gefragt hast). Natürlich hat diese einfache Heuristik viele Fehlalarme.
Ich bin überrascht, dass die Antworten keine URL- Shortener verwenden
Engineer Toast
@EngineerToast Sie sind normalerweise nicht erlaubt.
Esolanging Fruit
@ Challenger5 In der Tat . Ich sollte diese Liste wahrscheinlich noch einmal lesen ...
Engineer Toast

Antworten:

1

PowerShell v5, 83 Byte

(irm api.stackexchange.com/questions?sort=hot`&site=codegolf).Items["$args"-1].Link

irmist eine Invoke-RestMethodAbkürzung, für die das automatische Analysieren des Json das Leben recht einfach macht.

Fügen Sie vier Bytes ( sapsfür start-process) für die Version hinzu, die im Browser geöffnet wird.

saps(irm api.stackexchange.com/questions?sort=hot`&site=codegolf).Items["$args"-1].Link
colsw
quelle
4

Python + Anfragen , 128 Bytes

from requests import*
lambda n:get('http://api.stackexchange.com/questions?sort=hot&site=codegolf').json()['items'][n-1]['link']
ovs
quelle
3

Mathematica, 125 Bytes

b="http://codegolf.stackexchange.com";b<>"/q/"<>StringCases[Import[b<>"?tab=hot","Text"],"ns/"~~a:DigitCharacter..:>a][[3#]]&

Anonyme Funktion. Nimmt keine Eingabe und gibt eine Zeichenfolge als Ausgabe zurück. Wollte den XML-Feed verwenden, aber er scheint einer anderen Reihenfolge zu folgen als auf der Seite.

LegionMammal978
quelle
3

Python 2.7, 195 Bytes

from urllib import*
import zlib, json
lambda n:json.loads(zlib.decompress(urlopen('http://api.stackexchange.com/questions?sort=hot&site=codegolf').read(),16+zlib.MAX_WBITS))['items'][n-1]['link']

Dies ist die gleiche Antwort von Dair , jedoch mit Python 2

Mauro Baraldi
quelle
1
Willkommen bei PPCG!
Martin Ender
3

Python 3, 221 Bytes

from urllib.request import*
import zlib, json
lambda n:json.loads(zlib.decompress(urlopen('http://api.stackexchange.com/questions?sort=hot&site=codegolf').read(),16+zlib.MAX_WBITS),encoding='utf-8')['items'][n-1]['link']

Basierend auf Ovs Antwort. Vielen Dank auch an Oluwafemi Sule, der mir bei einem Problem geholfen hat.

Dair
quelle
Können Sie Ihre Antwort bearbeiten und erwähnen, dass es sich um Python 3 handelt? Vielen Dank! :-)
Mauro Baraldi
2
@ MauroBaraldi bearbeitet. Das tut mir leid.
Dair
2

Stratos , 28 Bytes

"-1"+
f"¹⁵s²&sort=hot"r"⁷s"@

Erläuterung:

"-1"+                    Decrement the input, and store it.
f"¹⁵s²&sort=hot"         Fetch the contents of the URL api.stackexchange.com/questions?site=codegolf&sort=hot.
                r"⁷s"    Get the array named "items"
                     @   Get the nth element, where n is retrieved from storage.

Versuch es!

Okx
quelle
1

JavaScript (ES6), 106 Byte

Gibt ein Versprechen zurück, das das JSON-Objekt für die gewünschte Frage enthält, das den Link enthält.

n=>fetch`//api.stackexchange.com/questions?sort=hot&site=codegolf`.then(r=>r.json()).then(j=>j.items[--n])
  • 2 Bytes geopfert, was eine 1-Indizierung ermöglicht.

Versuch es

f=
n=>fetch`//api.stackexchange.com/questions?sort=hot&site=codegolf`.then(r=>r.json()).then(j=>j.items[--n])
oninput=_=>f(+i.value).then(console.log)
f(i.value=1).then(console.log)
<input id=i type=number>

Zottelig
quelle
hm
Ich bin
@Moartem: " Ich bin mir im Moment nicht sicher, wie ich mit der 0-basierten Indizierung umgehen soll " - Lassen Sie mich wissen, wenn Sie es herausgefunden haben, und ich werde meine Antwort entsprechend aktualisieren. Ich würde vorschlagen, entweder 1-Indizierung oder 0-Indizierung zuzulassen.
Shaggy
Ich werde es auf 1-Indizierung korrigieren, damit alle die gleichen Präquesites haben. Bitte aktualisieren Sie Ihre Antwort. Trotzdem danke, dass du darauf hingewiesen hast.
Moartem
@Moartem: Antwort aktualisiert. Zum späteren Nachschlagen besteht die Norm darin, Lösungen die Verwendung der Standardindizierung ihrer Sprache zu ermöglichen, es sei denn, es gibt auch einen guten Grund.
Shaggy