クイックゴルフ:ゴールドリーダー


18

チャレンジ

ここのAPIからのデータを使用して、2016年のリオオリンピックでオリンピックの金メダルが最も多かった3か国の名前を出力します(返されたリストの最初の要素)。

たとえば、投稿時(8月15日、月曜日、18:23 UTC + 1)、米国、英国、および中国が最も多くの金メダルを獲得しているため、出力は次のようになります。

United States
Great Britain
China

国名は改行で区切る必要があり、先頭または末尾に改行がある場合があります。

オリンピックが終了すると、プログラムは期待どおりに機能する必要はありません。

URL短縮サービスは許可されていませんが、JSON解析ライブラリは許可されています。

これはコードゴルフであるため、バイト単位の最短コードが優先されます。

ここでオリンピックをテーマにした挑戦を続けようとしています。

リーダーボード


6
これは... ミニゴルフですか?
デウソビ

1
@Deusovi Ba-dumクラッシュ
ベータディケイ

2
私のCソリューションがそれを打ち負かすかどうかを確認できるように、誰かにJavaソリューションを投稿してほしいです。-
デイブ

3
「英国...そう出力...グレートブリテン」
-trichoplax

1
@Dave NIアスリートは、Team GBまたはTeam Irelandのいずれかを選択できます。NIアスリートがTeam GBに参加する必要がある場合、Team UKになります。
SGR

回答:


12

bash + w3m + grep + cut、65 59 58 54バイト

w3m medalbot.com/api/v1/medals|grep -m3 m|cut -d\" -f4
  • @Joeの提案のおかげで6バイト少なくなりました。
  • @YOUのおかげで1バイト少なくなりました。
  • 図4は、以下のおかげバイト@manatworkことの提案medalbotのAPIは、WWWなしで動作するようですが。サブドメインも

2
に変更cut -d '"'cut -d\"て、2バイトを保存します。w3m代わりに使用すると、curl -sさらに4つ節約できます。
ジョー

_nをmに変更できます
YOU

@YOU:そうではないので、予想よりも多くの行が返されるからです。つまり、 "id": "germany"、id ":" colombia "など。
Master_ex

1〜3番目にならない場合は問題ありませんが、-m3ガードがあります。
あなた

1
@YOU:これは現在のスコアに当てはまると思いますが、2016年のオリンピックでも問題ないと思われます(ただし、アメリカ合衆国をアメリカ合衆国に変更する場合を除きます:P)。変更します。
Master_ex

13

C(+ソケット)、433 429 280 276 270 259バイト

#define H"medalbot.com"
char**p,B[999],*b=B;main(f){connect(f=socket(2,1,getaddrinfo("www."H,"80",0,&p)),p[4],16);send(f,"GET http://"H"/api/v1/medals HTTP/1.1\r\nHost:"H"\r\n\r\n",69);read(f,b,998);for(f=3;f--;puts(p))b=strchr(p=strstr(++b,"_n")+9,34),*b=0;}

そのため、CはインターネットからリソースをダウンロードしてJSONとして解析するのが得意ではないことがわかりました。誰かわかったね?

このコードは(当然)エラーチェックが非常に緩いため、medalbot.comが悪意のあるデータを送信したい場合、バッファオーバーフローなどを引き起こすことができると思います。また、最新のコードでは、定数(たとえばAF_INET = 2)う、おそらくどこでも場合であってもよいが、それは保証されませんです。

以下は、それほど脆弱ではない元のコードです(ただし、あまり堅牢でも安全でもありません)。

#include<netdb.h>
#define H"medalbot.com"
char*b,*B,d[999];struct addrinfo*p,h;main(f){h.ai_socktype=SOCK_STREAM;getaddrinfo("www."H,"80",&h,&p);f=socket(p->ai_family,p->ai_socktype,p->ai_protocol);connect(f,p->ai_addr,p->ai_addrlen);send(f,"GET http://"H"/api/v1/medals HTTP/1.1\r\nHost: "H":80\r\nConnection: close\r\n\r\n",92,0);recv(f,d,998,0);for(f=0,b=d;f<3;++f)B=strstr(b,"_n")+9,b=strchr(B,'}'),*strchr(B,'"')=0,puts(B);}

壊す:

                            // No imports needed whatsoever!
#define H"medalbot.com"     // Re-use the host in multiple places
char**p,                    // This is actually a "struct addrinfo*"
    B[999],                 // The download buffer (global to init with 0)
    *b=B;                   // A mutable pointer to the buffer

main(f){
    // Hope for the best: try the first suggested address with no fallback:
    // (medalbot.com runs on Heroku which has dynamic IPs, so we must look up the
    // IP each time using getaddrinfo)
    f=socket(2,1,getaddrinfo("www."H,"80",0,&p));
                            // 2 = AF_INET
                            // 1 = SOCK_STREAM
                            //     (may not match getaddrinfo, but works anyway)
                            // 0 = IP protocol (getaddrinfo returns 0 on success)
    connect(f,p[4],16);     // struct addrinfo contains a "struct sockaddr" pointer
                            // which is aligned at 32 bytes (4*8)

    // Send the HTTP request (not quite standard, but works. 69 bytes long)
    send(f,"GET http://"H"/api/v1/medals HTTP/1.1\r\nHost:"H"\r\n\r\n",69);
    // (omit flags arg in send and hope 0 will be assumed)

    read(f,b,998);          // Get first 998 bytes of response; same as recv(...,0)

    // Loop through the top 3 & print country names:
    // (p is re-used as a char* now)
    for(f=3;f--;puts(p))        // Loop and print:
        p=strstr(++b,"_n")+9,   //  Find "country_name": "
        b=strchr(p,34),         //  Jump to closing "
        *b=0;                   //  Set the closing " to \0
}

Connection: close\r\nHTTPリクエストの一部として送信しないため、これはサーバーにはあまり適していません。またAccept、medalbot.comはどのような場合でも圧縮を使用していないように見えるため、ヘッダーを省略し、その後のスペースを見逃しHost:ます(これでもサーバーは問題ないようです)。しかし、他の何かを削除できるようには見えません。


オリンピックが終了すると、このプログラムの最も可能性の高い動作は、メモリロケーション9を読み取ろうとするセグメンテーション違反です。おそらく実際にはあまり危険ではありません。しかし、これらの邪悪なハッカーと誰が話すことができますか?


1
ええ、それはそれらのハッカーの害虫です。私たちはどのような種類のハッカーが今まで上げる可能性は低いされているウェブサイトにしている良いことだ...
ターンに終わっはcounterclockwis

1
それはかなりの飛躍でした!
NonlinearFruit

2
@NonlinearFruitええ、風に注意を払い、コードで実装定義の数値を直接使用すると、どれだけの文字を保存できるかが驚くべきことです!これは、「Cでテキストをダウンロードする、最もクレイジーで、最も危険で、現在機能している可能性が最も高いのは何ですか?」の演習になりました。
デイブ

今年は、小さなBobby Tablesに親relativeがいないことを願ってます。
GuitarPicker

読みやすさも、タラゴルフの最初の犠牲者の1つです。。。
NonlinearFruit

12

PowerShell v4 +、88 69バイト

(ConvertFrom-Json(iwr medalbot.com/api/v1/medals))[0..2].country_name

iwr(のエイリアスInvoke-WebRequest)を使用してAPIを取得します。ConvertFrom-JsonJSONテキストをカスタムオブジェクト配列にプルするビルトインへの入力パラメーターとしてそれをフィードします。そのオブジェクト配列を括弧でカプセル化し、最初の3つの要素[0..2]を取得し.country_name、それぞれの要素を取得します。

multiple-object-propertiesには少なくともv4 +が必要です。それ以外の場合は、|Select "country_name"代わりに何かを使用する必要があります。ConvertFrom-Json組み込みには少なくともv3 +が必要です。

PS C:\Tools\Scripts\golfing> .\olympics-gold-leader.ps1
United States
Great Britain
China

あなたは、ドロップすることができますhttp://www.し、PSを約気にしないhttp://かについてのサイトwww.。私のPS(5.1.14393)もを気にしていないようです.content
ニックT

@NickTゴルフをありがとう。Webリクエストの一部ConvertFrom-Jsonだけが明示的に必要なわけではないことに気づきませんでし.contentたが、セットアップでも同様に機能します。
AdmBorkBork

6

R、98、112、108のバイト

@miffのおかげで4ゴルフ

a=jsonlite::fromJSON(readLines("http://www.medalbot.com/api/v1/medals"))
cat(a$c[order(-a$g)[1:3]],sep="\n")

最初の行は、JSONライブラリを使用してデータをインポートします。2行目は、関連する国名を取得します。国を金メダルで昇順に並べ替え、インデックスを逆にし、最初の3つを印刷します。


1
私はあなたが交換することができると思いますrev(order(a$g))order(-a$g)4バイト救うために
MIFF

5

JavaScript(ES6)、122バイト

fetch`http://www.medalbot.com/api/v1/medals`.then(a=>a.json()).then(b=>alert(b.slice(0,3).map(c=>c.country_name).join`\n`))

起因して、ブラウザの安全性の問題、このコードは、上で実行する必要がありますmedalbot.com。ただし、それを利用せず、他の場所で実行される可能性があります。また、\n文字を挿入しましたが、カウントは1つだけであることに注意してください。

Node.js(ES6)、173バイト

require("http").get("http://www.medalbot.com/api/v1/medals",s=>s.on("data",d=>t+=d,t="").on("end",q=>console.log(JSON.parse(t).slice(0,3).map(a=>a.country_name).join`\n`)))

APIがデータをすべて1ストレッチで返した場合、これは非常に短くなりますが、2つのセクションで返されるため、パーツを連結して結合し、解析する必要があります。

Node.js(ES6)+リクエスト、138バイト

require("request")("http://www.medalbot.com/api/v1/medals",(e,r,b)=>console.log(JSON.parse(b).slice(0,3).map(a=>a.country_name).join`\n`))

より良いが、それでもブラウザのバージョンほど良くない。fetch APIに感謝します!リクエストは、リクエストを簡素化するために使用される一般的なHTTPクライアントライブラリであり、ここで有効になることがわかります。


これらのどれがどのブラウザでも動作しますか?リーダーボードの場合、回答の一番上にそれらの最短を入れてもらえますか?
ベータ崩壊

これらの一番上は、最新のブラウザのほとんどで機能し、最短でもあります。他の2つはNode.jsにあり、サーバー上でJavaScriptを作成する方法です(その他にも)。
MayorMonty

@βετѧΛєҫαγIEまたはSafariのどのバージョンでも動作しないことに注意してください
MayorMonty

なるほど、CORSの問題に夢中になっていた
ベータ崩壊を

4

bash + w3m + jq83 59バイト

w3m medalbot.com/api/v1/medals|jq -r '.[:3][].country_name'

Jordanに3バイトありがとう。

さらに24バイトありがとうございます!データがソートされていることがわかります。ワオ。:D


1
.|の結果をsort_by直接省略してインデックスを付けたり、の[:3][]代わりにを使用して別のバイトを保存したりできます[0,1,2]。すべて一緒に:sort_by(-.gold_count)[:3][].country_name
ヨルダン

w3m medalbot.com/api/v1/medals|jq -r '.[:3][].country_name'
あなた

4

Java 8、261 258バイト

これは、ラムダを使用して数バイトを保存し、ネットライブラリを使用してWebページを取得します。それ以外は単なるJavaです。

()->{try{for(int i=0;i<3;System.out.println(new java.util.Scanner(new java.net.URL("http://www.medalbot.com/api/v1/medals").openConnection().getInputStream()).useDelimiter("\\A").next().split("\n")[i++*9+3].replaceAll(".* \"|\",","")));}catch(Exception e){}}

テスト(およびゴルフ)用の私の(古い)POJOは次のとおりです。

class QuickGolf {
  static void f(h x){x.g();}
  static interface h{ void g(); }
  static void main(String[] args){
    f(
      ()->{try{for(int i=0;i<3;i++){System.out.println(new java.util.Scanner(new java.net.URL("http://www.medalbot.com/api/v1/medals").openConnection().getInputStream()).useDelimiter("\\A").next().split("\n")[i*9+3].substring(21).replace("\",",""));}}catch(Exception e){}}
    );
  }
}

更新

  • -3 [16-08-17] printステートメントの移動 forループにします
  • -5 [16-08-16]正規表現の置換の改善
  • -9 [16-08-16] java.netインポートを削除

うん いくつかのバイトを保存する必要があります…
デイブ

私は追いついています!あと15バイトだけです!
デイブ

まあ、私は少なくとも数時間先んじていた。それは私に対して動作しますが、あなたはおそらくループカウントを持つことによっていくつかのより多くのバイトを保存することができますダウン 3の代わりに、アップから。
デイブ

@Daveブール値のブレーク条件をそのままにしてみましたが、iJavaはブール値をintまたはその逆に変換しません。また、最後の編集でかなり緊張しました。
NonlinearFruit

3

MATL、67バイト

'http://www.medalbot.com/api/v1/medals'Xi'(?<="c.+e": ")[^"]+'XX3:)

機能Xiurlread)が許可されていないため、これはオンラインでは機能しません。

実行例:

>> matl
 > 'http://www.medalbot.com/api/v1/medals'Xi'(?<="c.+e": ")[^"]+'XX3:)
 > 
United States
Great Britain
China

説明

これは、内容を文字列として読み取り、正規表現'(?<="c.+e": ")[^"]+'を適用して国名を抽出します。正規表現は、コードの長さを減らす"c.+e"代わりに、後読みを使用します"country_name"

'http://www.medalbot.com/api/v1/medals'   % Push string representing the URL
Xi                                        % Read URL contents as a string
'(?<="c.+e": ")[^"]+'                     % String for regex matching
XX                                        % Apply regex
3:)                                       % Get first 3 results

3

Pythonの3、202、164バイト。

Python 3は、短いurl / json処理を行いません。:/
APIが既にゴールドカウントでソートされていることに気づかなかった

from urllib.request import*
import json
print('\n'.join(x['country_name']for x in json.loads(urlopen('http://www.medalbot.com/api/v1/medals').read().decode())[:3]))

3

パイソン2、120の 113バイト

from urllib import*
for x in list(urlopen("http://www.medalbot.com/api/v1/medals"))[3:26:9]:
    print x[21:-4]

@Nick Tと@Value Inkに感謝


1
from urllib import*urlopenあとで使用すると1バイト節約されます。また、printステートメントを取得し、コロンの直後に配置して、インデントを省くことができるはずです。
バリューインク

1
urlopenオブジェクトをフィードする場合list()、それは同じことをし.readlines()ますか?
ニックT

3

JavaScript + jQuery、114100バイト

$.get("www.medalbot.com/api/v1/medals",a=>alert(a[0][c='country_name']+'\n'+a[1][c]+'\n'+a[2][c]))

クロスオリジンリクエストの理由により、これはmedalbot.comドメインから(jQueryを使用して)実行する必要があります。

歴史

  • @YetiCGNのおかげで-14バイト
  • -Yay295のおかげで2バイト

または、Webセキュリティなしでchromeを実行{chrome.exe --disable-web-security}
2b77bee6-5445-4c77-b1eb-4df3e5

1
2バイトの保存$.get("www.medalbot.com/api/v1/medals",a=>alert(a[0][c='country_name']+'\n'+a[1][c]+'\n'+a[2][c]))
Yay295

2

ルビー、97 79 +-rnet/http(11)= 90バイト

Rubyは後読みで数量詞をサポートしていないため、Luis MendoのMATL answerからの正規表現パターンの修正を使用します。これは@Jordanによってさらに最適化されます。

@Jordanから-18バイト。

puts Net::HTTP.get("www.medalbot.com","/api/v1/medals").scan(/"c.+"(.+)"/)[0,3]

あなたは省略できます.map(&:last)12バイトのために完全に、そして主要な省略/での/apiより1のために。
ヨルダン

また、正常に動作するように見える短い正規表現:/"cou.+"(.+)"/
ヨルダン

または:/y_.+"(.+)"/
ヨルダン

@Jordanが先頭/を省略すると、Rubyバージョンでエラーが発生します。それとも、私がいるネットワークでしょうか?なんでも。あなたが提案した正規表現とは少し異なる正規表現を使用しましたが、長さは同じです。
バリューインク

面白い。FWIW 2.3.1を使用しています。
ヨルダン

2

PowerShell、60

(iwr medalbot.com/api/v1/medals|convertfrom-json)[0..2]|% c*

TimmyDと同じ基本的な考え方(私が投稿する前に彼らの答えを見なかった)が、かなり短い:-)


1
悪魔はその|% c*解析をどのように機能させますか?つまり、試してみただけですが、それは奇妙な構文です(エラーとしてISEで強調表示されます)。
AdmBorkBork

1
@TimmyD:ForEach-Objectには、単一のプロパティを展開するか、引数を指定してメソッドを呼び出すパラメーターセットがありますForEach-Object [-MemberName] <String>。この-MemberNameパラメーターはワイルドカードをサポートしているため、この場合、ワイルドカードに一致する唯一のメンバーを展開しcountry_nameます:。かなりの数の文字も保存されます;-)
ジョーイ

2

Mathematica 96 66バイト

@alephalphaはファイルから直接(保存せずに)作業する方法を見つけ、それにより30バイトを節約しました!

Import["http://www.medalbot.com/api/v1/medals","RawJSON"][[;;3,2]]

ImportファイルをRaw JSONファイルとしてインポートします。 [[;;3,2]]行1〜3、2番目のエントリ(国名)を取ります。


Import["http://www.medalbot.com/api/v1/medals","RawJSON"][[;;3,2]]
alephalpha

2

PHP、205139124116111109バイト

PHP 7の新しい宇宙船演算子を1回使用したかっただけです(編集:並べ替えが不要なため、不要です)。

<?$d=json_decode(file_get_contents('http://www.medalbot.com/api/v1/medals'),1);usort($d,function($a,$b){$g='gold_count';return$b[$g]<=>$a[$g];});$c='country_name';foreach([0,1,2]as$i){echo$d[$i][$c]."\n";}

不要な並べ替え手順を省略し、APIがgold_countの降順で並べ替えられたデータを配信すると仮定した場合(見た目どおり)、これをさらに短縮できます。

while($i<3)echo json_decode(file_get_contents('http://medalbot.com/api/v1/medals'))[+$i++]->country_name."
";

注:文字列内の改行は、\ nからバイトを保存するためのものです。

歴史

  • 通知をスローする引用符と中括弧を省略し、country_nameインデックスの$ c変数を削除しました。これらのヒントをもっと多くのキャラクターに保存してくれた@manatworkに感謝します。
  • より短いwhileループを指摘してくれた@jeroenに感謝します。また、124から116に移動するオブジェクトアクセスに切り替えました。
  • ループ内でAPIを呼び出すことにより、さらに5バイトを節約しました。確かに、それは時間がかかり、APIを破壊しますが、それはCode Golfです。配列の逆参照のため、PHP 5.5が動作する必要があります。
  • このメタ回答に従って、短い開始タグを削除して、さらに2バイトを節約しました

ありがとう!他のすべてのエントリがソートされているのを見て、何かを見逃したと思った。
YetiCGN

1
なぜ変数に「country_name」を入れているのですか?とにかく、error_reportingのデフォルト値は通知を表示しないため、二重引用符を省略できます。そして、medalbot APIはwwwがなくても動作するようです。サブドメインも。その後、中括弧は必要ありませんecho
マナトワーク

本当にありがとう!まあ、遅かった... $ c変数は、forループに切り替えたときに捨てた以前の最適化からの残り物です。クリーンコーディング(通知なし)はまだ深く根付いていると思うので、あなたが指摘したこれらの最適化については考慮しません。だから、もう一度ありがとう!
YetiCGN

foreachを次のforループに置き換えます:for(;$i<3;)echo$d[+$i++][country_name]." "5バイトに減らします。最後のスペースは入場コースです。またはちょうどwhileループwhile($i<3)
Jeroen

1

BASH + w3m +コアユーティリティ、70バイト

w3m www.medalbot.com/api/v1/medals|grep -m3 tr|cut -f6- -d\ |tr -d \",

出力は既にソートされているように見えます。余分なテキストをすべて捨てるだけです。


1

CJam(57バイト)

"http://www.medalbot.com/api/v1/medals"gN/3>9%3<{'"/3=N}%

Webからコンテンツを取得するため、オンラインデモは利用できません。これは、実際にJSONを解析するのではなく、構造が変わらないことを前提としています。(ただし、既存の回答のほとんどは異なる方法で行います)。


1

Python 2、117バイト

from requests import *
for x in get('http://www.medalbot.com/api/v1/medals').json()[:3]:
    print(x['country_name'])

PPCGへようこそ!importとの間のスペースを削除して、行のコロンの直後にtoを*移動すると、数バイト節約できます。通常、ヘッダーにはbeforeおよびafter の代わりにs を使用します。print2#**
-NoOneIsHere

1
通常、提出者は、必要なサードパーティライブラリを回答ヘッダーに含める必要があります。要求は標準ライブラリモジュールではないため、この回答の言語は「Python 2 +要求」である必要があります。
メゴ

1

Clojure、122バイト

(fn[](mapv #(println(%"country_name"))(take 3(read-string(.replace(slurp"http://www.medalbot.com/api/v1/medals")":""")))))

JSONライブラリは使用していません:)。URLから文字列を読み取り、コロンを空の文字列に置き換え、その文字列を評価してClojureマップにします。最初の3つの要素を取りcountry_name、各要素のプロパティを出力するマップが熱心に機能します。


1

Javaの8 386 384 459のバイト

@Easterly Irkから2バイト保存

私の最初のコードはゴルフの提出ですので、たくさんのバイトを節約する方法があると確信していますが、まあ:)

Gsonを使用してJSONを読み取ります

必要なもの:

import java.util.*;
import java.io.*;

ゴルフコード:

void p()throws Exception{List<A> a=new com.google.gson.Gson().fromJson(new InputStreamReader((InputStream)((new java.net.URL("http://www.medalbot.com/api/v1/medals").openConnection())).getContent()),new com.google.gson.reflect.TypeToken<List<A>>(){}.getType());a.sort((b,c)->c.gold_count.compareTo(b.gold_count));for(int i=0;i<3;)System.out.println(a.get(i++).country_name);}class A{String country_name;Integer gold_count;}

未ゴルフコード:

void p() throws Exception {
    List<A> a = new com.google.gson.Gson().fromJson(new InputStreamReader((InputStream)((new java.net.URL("http://www.medalbot.com/api/v1/medals").openConnection())).getContent()),new com.google.gson.reflect.TypeToken<List<A>>(){}.getType());
    a.sort((b, c) -> c.gold_count.compareTo(b.gold_count));
    for(int i=0; i<3;)
        System.out.println(a.get(i++).country_name);
}

class A {
    String country_name;
    Integer gold_count;
}

「g = new Gson()」のスペースを削除できますか?
Rɪᴋᴇʀ

2
待って、これはimportコンパイルするのにいくつかのを必要としませんか?
デイブ

インポートステートメントをバイトカウントに追加する必要がありますか?
-yitzih

輸入をどのように計算しますか?
-yitzih

Javaの正確なルールが何であるかはわかりません。以前ここに投稿したことはありませんが、通常のルールでは、コードを有効にするために必要なすべてをカウントする必要があります(Javaヒントをすばやく検索することからページでは、インポートコードを最小化する方法についてさまざまな提案を見ることができます。D:私はかなり偏っていますので、しかし、その後、再び、私はまた、私のCの答えはこの質問でJavaに勝つために取得しようとしている
デイブ・

1

R、97 95バイト

t=rjson::fromJSON(f="http://www.medalbot.com/api/v1/medals")
for(i in 1:3)cat(t[[c(i,2)]],"\n")

user5957401の回答をほとんど改善せず、並べ替えが不要で、ライブラリ名が短くなっています。また、ゴルフの私の最初の試み;)


すべての言語と同様に、「www」を省略できます。ライブラリが次のリダイレクトに従う場合、ドメインの一部であり、さらに4バイトを節約します。
YetiCGN

1

Kotlin(スクリプト)125 121 119バイト

java.net.URL("http://medalbot.com/api/v1/medals").readText().lines().filter{'m' in it}.take(3).map{println(it.split('"')[3])}

kotlinc -script <filename>IDEA を使用して、またはIDEAを介して* .ktsファイルとして実行可能。

ここで、行数を含む形式について非常に大きな仮定を行うと、次のようにトリミングできます。

java.net.URL("http://medalbot.com/api/v1/medals").readText().lines().slice(setOf(3,12,21)).map{println(it.split('"')[3])}

あるいは

java.net.URL("http://medalbot.com/api/v1/medals").readText().lines().slice(3..21 step 9).map{println(it.split('"')[3])}

Kotlin slackチームの皆さん、私が数十バイトをトリミングするのを手伝ってくれてありがとう!


ClojureとJSよりも3シンボル短いですか?それを取ります。
CypherAJ

0

Javascript 167バイト

x=new XMLHttpRequest();x.open("GET","http://www.medalbot.com/api/v1/medals",false);x.send()
i=-3;while(i++)console.log(JSON.parse(x.responseText)[i+2]["country_name"])
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.