Holen Sie sich eine Liste der Abzeichen auf dieser Website, die noch niemand erhalten hat

8

Erstellen Sie einen Code, der eine Liste der Ausweise abruft, die noch niemand erhalten hat (z. B. mithilfe dieser Website-API für Ausweise ), und geben Sie die sortierte Liste dieser Ausweise mit jeweils einer neuen Zeile aus.

Beispielausgabe (kann kleiner sein, je nachdem, wann Sie diese Herausforderung ausführen):

Archaeologist
Caucus
Constituent
Copy Editor
Deputy
Electorate
Epic
Generalist
Hacker
Legendary
Marshal
Outspoken
Research Assistant
Sheriff
Steward
Strunk & White
Tenacious
Unsung Hero

Der kleinste Code gewinnt.

Konrad Borowski
quelle
Gute Idee, auch der Verdacht, dass Stack Exchange Data Explorer dies tun könnte (bisher keine Antworten). Vielleicht führt die
Webanfrage

Antworten:

8

JavaScript mit jQuery (standardmäßig auf SE-Sites geladen), 58

$('.badge',$('.badge-count:not(:has(*))').parent()).text()

Muss unter https://codegolf.stackexchange.com/help/badges ausgeführt werden . ;)

Streng konforme Ausgabe, 116 Zeichen:

[].join.call($('.badge',$('.badge-count:not(:has(*))').parent()).map(function(){return $(this).text()}).sort(),'\n')

Screenshot der Konsolenausgabe (zum Vergrößern anklicken):

Screenshot der Konsolenausgabe

Türknauf
quelle
Ist die Verwendung externer Bibliotheken erlaubt?
Szymon Toda
3
@Ultra jQuery wird standardmäßig auf SE-Sites geladen.
Türknauf
6

Bash, 173 Zeichen

curl "https://api.stackexchange.com/2.1/badges?page="{0..50}"&pagesize=100&order=desc&sort=type&site=codegolf"|gunzip|grep -Po '{"name".*?award_count":0.*?}'|cut -d'"' -f 4

Obwohl Sie wahrscheinlich einige Zeichen durch URL-Verkürzung rasieren könnten.

WARNUNG: Beachten Sie, dass das mehrmalige Ausführen dieses Skripts Folgendes zur Folge hat:

{"error_name":"throttle_violation","error_message":"too many requests from this IP, more requests available in 84495 seconds","error_id":502}

Ausgabe für codegolf.SE:

code-golf
Informed
Research Assistant
Caucus
Constituent
Outspoken
Deputy
Vox Populi
Excavator
Analytical
Self-Learner
Hacker
Beta
Legendary
Electorate
Investor
Tenacious
Unsung Hero

EDIT: ein bisschen optimiert.

Thom Wiggers
quelle
Bash - huehuehue. PS wird hier /dev/nullwirklich gebraucht?
Szymon Toda
Sie können curlanstelle von verwenden wget -O-.
Konrad Borowski
Hmm, ich dachte, ich hätte das / dev / null entfernt, das ich zum Testen hatte.
Thom Wiggers
1

PHP - 92 86 Zeichen

<?=html_entity_decode(substr(file_get_contents("http://tinyurl.com/q9zlwfr"),12937,190));

Inspiriert von Victors Lösung. Sehr flüchtig.

Konrad Borowski
quelle
0

Java - 280 267 260

class A{public static void main(String[]z)throws Exception{String s="";int y;java.io.InputStream x=new java.net.URL("http://tinyurl.com/q9zlwfr").openStream();while((y=x.read())!=-1)s+=(char)y;System.out.println(s.substring(12937,13126).replace("amp;",""));}}
Victor Stafusa
quelle
1
Das scheint ... volatil. Wenn das Stack Exchange-Team fast Änderungen an seiner Website vornehmen würde (oder wenn meine Frage geändert würde), würde die falsche Liste zurückgegeben. Außerdem ist die Liste möglicherweise nicht aktuell.
Konrad Borowski
Warum ist der Klassenname so lang? Warum ist das Argument für mainden Namen so lang? Warum gibt es danach unnötige Leerzeichen InputStream?
Doorknob
@ DoorknobofSnow Gut bemerkt. Diese sind ausgerutscht, als ich die ungolfed Version in eine golfed Version umwandelte.
Victor Stafusa
@xfix Ja, sehr flüchtig. Das war beabsichtigt.
Victor Stafusa
Ich bin versucht, die Frage durch einen Buchstaben zu bearbeiten, nur um Sie zu trollen :-D
Türknauf