Imgur é um serviço gratuito de hospedagem de imagens. Muitas pessoas usam isso. Aqui está um exemplo de um link imgur: http://i.imgur.com/T55muMD.png . Escreva um programa que produz continuamente links aleatórios (válidos) para imgur. Por exemplo, aqui está um exemplo de saída do meu programa (não mostrado porque contém alguns truques que você precisará descobrir):
http://i.imgur.com/uFmsA.png
http://i.imgur.com/FlpHS.png
http://i.imgur.com/eAbsZ.png
http://i.imgur.com/lEUsq.png
http://i.imgur.com/RuveH.png
http://i.imgur.com/BoEwB.png
http://i.imgur.com/HVFGQ.png
http://i.imgur.com/PZpMg.png
http://i.imgur.com/DezCY.png
Dicas úteis:
- Quando imgur era novo, eram usados links de 5 letras.
- Quando imgur era novo, os números não eram usados.
- Você pode usar isso para sua vantagem: encontre apenas imagens de links de 5 letras apenas com letras. É isso que meu programa faz.
- Além disso, todas as imagens são salvas como
.png
.
Requisitos:
- Saída contínua de links imgur aleatórios
- Links considerados suficientemente "aleatórios" se 50 forem emitidos sem repetições
- Quando visitados, os links devem ser uma imagem
- Os links devem começar
http://i.imgur.com/
e terminar com.png
- Pontuação é quantidade de caracteres
Eu fiz isso em Java (TERRÍVEL para jogar golfe) em 452 caracteres. Não mostrado aqui porque contém alguns truques que você terá que descobrir por si mesmo!)
Respostas:
PHP 5.4, 76 caracteres
Os URLs são gerados em ordem sequencial usando apenas letras maiúsculas e nunca se repetem, atendendo à letra da especificação.
fonte
Perl (93 + 4 = 97)
Usando o próprio mecanismo aleatório do imgur para obter seus URLs de imagem, que não são URLs png na maioria das vezes:
(Você precisa de Mojolicious para isso.)
fonte
HTML (152)
Isso registra todas as imagens encontradas no console JavaScript usando
console.log()
. Funciona em todos os navegadores testados (Firefox, Chrome, IE9, Safari e Opera).A parte divertida é que todos os tipos de imagens engraçadas estão piscando para um piscar de olhos :).
Tente! (jsFiddle agrupa isso em uma página HTML mais completa, mas os navegadores também aceitam o único elemento.)
Adereços para o método incrível seqüência aleatória por doubletap !
Onde posso ver o console JavaScript e as imagens registradas?
fonte
Perl (87)
Localizando imagens com maiúsculas, minúsculas e dígitos de 0 a qualquer caractere, algum dia.
fonte
Mathematica , 108
Espaço em branco adicionado.
fonte
Python (
174158156)Quero nomes de módulo mais curtos em Python. Também é um método mais fácil de obter letras aleatórias. :)
Explicação:
O operador de módulo em uma string é o comando de formatação; nesse caso, ele substitui '% s' na string por 5 letras maiúsculas aleatórias. O
a
nome do site (tipostr
)('File'not in urllib.urlopen(a).read())
é True quando 'File' (de 'File not found!') é não encontrada no HTML da URL. (typebool
)bool
*str
=str
ifbool
= True, portanto, somente será geradoa
se 'Arquivo' não for encontrado no código HTML.fonte
chr(random.randint(65,90))
'File'
que :) :)'XXXXX'
e nãorange(5)
. Isso também tem a vantagem de não exigir espaço em branco entre ele e oin
.Abordagem Python exclusiva.
361355334332322314 caracteres - um pouco ofuscado, nada muito difícil. Pode resultar em uma densidade incomumente alta de fotos de gatos, você foi avisado.Resultado:
fonte
R, 182 caracteres
fonte
Python, 153 caracteres
Enquanto isso funciona, é muito lento e pode levar muitos segundos antes de retornar qualquer saída.
Inspirado na solução de @ beary605 - ele me salvou um monte de caracteres, enquanto eu planejava procurar imagens pelo cabeçalho do tipo de conteúdo.
fonte
random.sample
:) Essa é uma maneira muito melhor de escolher personagens.Bash
(129, 121)(117, 109)Eu tenho duas versões: uma iterativa e uma interminável recursiva (que consumirá lentamente toda a memória). Ambas as versões verificam se existe realmente um arquivo PNG (jpg, gif e outros tipos de arquivos são ignorados).
Iterativo (antigo) (129):
Recursiva (antiga) (121):
Nota : Pode haver um problema de compatibilidade com o grep. Meu manual grep declara que
-s
silencia a saída do grep, mas não faz nada. No entanto, usando--quiet
,--silent
ou-q
em vez disso funciona.EDITAR:
Usando cabeçalhos de conteúdo agora depois de ler /codegolf//a/10499/7195 :)
Iterativo (117):
Recursiva (109):
fonte
Ruby (103 caracteres)
fonte
.png
no final do URL.Bash / ferramentas de linha de comando, 72 caracteres
Emprestando a técnica inteligente de @ memowe :
Isso alcança um loop contínuo reexecutando-se no mesmo espaço de processo.
fonte