10 Clickbaits que você não pode resistir

8

Escreva um programa / função / script que use um número natural i de 1 a 10 como entrada e emita o URL da pergunta com a i a pergunta mais quente no Code Golf Portal

A encomenda deve ser como em https://codegolf.stackexchange.com/?tab=hot . Por exemplo:
entrada 1 de
saída /codegolf/127047/the-spain-license-plates-game
(no ponto desta edição)

Não há restrições fortes à saída, desde que a URL possa ser razoavelmente recuperada. Saídas válidas incluem strings, impressão em console etc.

É o Code Golf, o código mais curto em bytes ganha.

Notas

Se o seu programa abrir automaticamente um navegador com a página da Web, ele conta como uma saída válida e é totalmente legal.

Se o seu programa não recuperar a classificação das informações atuais (ou seja, codificar os links), isso não é válido.

O concurso termina no final de junho.

Como questionado: A indexação deve ser baseada em 1, ou seja: a entrada 1 deve retornar o primeiro site das perguntas mais importantes.

Comente

Espero que essa pergunta não seja muito clickbaity, pois o programa editor de troca de pilhas estava zombando de mim pelo título. Originalmente, planejei esse desafio com as tendências do YouTube, onde teria sido mais adequado.

Moartem
fonte
1
Re: Stack Exchange zombando de você para o título da pergunta, é apenas o gatilho da palavra youespecificamente. A suposição feita pelo software é que, se você perguntar às pessoas o que elas pensam especificamente sobre algo, a pergunta provavelmente será encerrada como primariamente baseada em opiniões (como se a pergunta fosse baseada em fatos, não importaria quem você perguntou). Obviamente, essa heurística simples tem muitos falsos positivos.
Estou surpreso que as respostas não estejam usando encurtadores de URL: v.ht/b6QI
Engineer Toast
@EngineerToast Normalmente, eles não são permitidos.
Esolanging Fruit
@ Challenger5 De fato . Eu provavelmente deve voltar a ler essa lista ...
Engenheiro Toast

Respostas:

1

PowerShell v5, 83 bytes

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

irmé uma abreviação de Invoke-RestMethodque analisa automaticamente o Json, facilita a vida.

adicione quatro bytes ( sapspara start-process) para a versão que é aberta no navegador.

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

Solicitações Python + , 128 bytes

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

Mathematica, 125 bytes

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

Função anônima. Não recebe entrada e retorna uma string como saída. Usaria o feed XML, mas parece seguir uma ordem diferente da página.

LegionMammal978
fonte
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']

Essa é a mesma resposta de Dair , mas usando Python 2

Mauro Baraldi
fonte
1
Bem-vindo ao 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']

Com base na resposta ovs . Além disso, obrigado a Oluwafemi Sule por me ajudar com um problema que tive.

Dair
fonte
Você pode editar sua resposta e mencionar que é Python 3? Obrigado! :-)
Mauro Baraldi
2
@MauroBaraldi Editado. Me desculpe por isso.
Dair
2

Stratos , 28 bytes

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

Explicação:

"-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.

Tente!

Okx
fonte
1

JavaScript (ES6), 106 bytes

Retorna uma promessa que contém o objeto JSON para a pergunta desejada, que inclui o link.

n=>fetch`//api.stackexchange.com/questions?sort=hot&site=codegolf`.then(r=>r.json()).then(j=>j.items[--n])
  • 2 bytes sacrificados, permitindo a indexação 1.

Tente

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>

Shaggy
fonte
hm Não tenho certeza no momento como lidar com a indexação com base em 0, mas como as outras respostas parecem usar uma indexação com base em 1 e foi especificado dessa maneira, sua resposta é contada como 106 bytes (pontuação máxima ainda atual)
Moartem
@ Moartem: " No momento, não tenho certeza de como lidar com a indexação com base em 0 " - Avise-me quando você descobrir e atualizarei minha resposta de acordo. Eu sugeriria permitir a indexação 1 ou 0.
Shaggy
Vou corrigi-lo para a indexação 1, para que todos tenham os mesmos pré-requisitos, atualize sua resposta. De qualquer forma, obrigado por apontar isso.
Moartem 19/06
@Moartem: Resposta atualizada. Para referência futura, a menos que também não haja boas razões, a norma é permitir que as soluções usem a indexação padrão de seu idioma.
Shaggy