今回は、2015年9月1日(火)より開始いたしましたpaizaオンラインハッカソン Vol.6「女子高生プログラマーの大バトル!〜コボール文明の逆襲〜」と「POH6+ 「え、妻が松江?」松江Ruby会議07協賛 回文作成プログラミングコンテスト」の結果レポートと模範解答コードについてお届けします。
https://twitter.com/m1sogi/status/641754265707397121
奥義!破壊的インフィニティ・デスマーチ! d_nishiyamaさんの結果[100点] |POH6「女子高生プログラマーの大バトル〜コボール文明の逆襲〜」 https://t.co/GhOtgYKMFq #_poh
— にしもん (@d_nishiyama85) 2015年9月14日
忍法!ランタイム・エラー・イリュージョン! zukkykneeさんの結果[100点] |POH6「女子高生プログラマーの大バトル〜コボール文明の逆襲〜」 https://t.co/ZUT7bO5agc #_poh
— ずっきーに (@zukky1729) 2015年9月10日
皆さん女子高生たちと一緒に世界を救っていただくことはできましたでしょうか??
■POH6「女子高生プログラマーの大バトル!〜コボール文明の逆襲〜」グラフ集計
キャラ別提出コード数
霧島京子:2332回
六村リオ:3261回
緑川つばめ:1877回
何でつばめたん一番人気ないんや………………と思ったけど、これは単純に問題難易度の影響ですよね。あと、横並びだと左から順番にクリックするということが多いと思うので、リオちゃんが人気なのはそれも影響してるのかもしれないです。ちなみにPOHはどの問題も何度でも挑戦できますよ!!
以下集計数を見ていきます!
順位 | 言語 | 提出コード数 |
---|---|---|
1 | C++ | 1195提出 |
2 | C | 979提出 |
3 | Ruby | 969提出 |
4 | Java | 963提出 |
5 | Python | 787提出 |
6 | C# | 727提出 |
7 | PHP | 670提出 |
8 | JavaScript | 301提出 |
9 | Perl | 213提出 |
10 | Python3(Beta) | 160提出 |
11 | Haskell(Beta) | 100提出 |
12 | Bash(Beta) | 77提出 |
13 | Scala(Beta) | 73提出 |
14 | Go(Beta) | 51提出 |
15 | COBOL(Beta) | 49提出 |
15 | D(Beta) | 49提出 |
16 | Objective-C(Beta) | 21提出 |
17 | R(Beta) | 20提出 |
18 | Clojure(Beta) | 18提出 |
19 | CoffeeScript(Beta) | 14提出 |
20 | Erlang(Beta) | 12提出 |
20 | VB(Beta) | 12提出 |
21 | F#(Beta) | 10提出 |
いつもC++、C、Javaでのご参加が多いのですが、今回はPOH6+の影響かRubyも多かったですね!
■POH6+ 「え、妻が松江?」松江Ruby会議07協賛 回文作成プログラミングコンテスト Ruby最短コードランキング
今回は、実行時間だけでなくコードゴルフ的に、提出コードのバイト数、いかに短いコードを書くかも評価されたわけですが、ランキングを見てみましょう。(ランキングに反映しているのは、松江Ruby会議07での発表のため、9月24日までにご提出いただいた分までとなっております。トップ50の方の結果を公開しております!→「え、妻が松江?」回文作成プログラミングコンテスト | paizaオンラインハッカソン(POH))
1位は67バイトのコードを書いてくださったn2さんです!!67バイトということは67文字のコードということですからね……素晴らしいですね!!!!
来週はこのブログで上位の方のコードを公開いたします!!
他の言語と比べてみても、Rubyは実行時間は長めですがバイト数は短くしやすい傾向にありますね。
Ruby以外の言語でご参加いただいた方の結果も各5位までのランキングを公開しております(「え、妻が松江?」回文作成プログラミングコンテスト | paizaオンラインハッカソン(POH))が、ここで各一位の方の結果を発表いたします。
【Java】
1位 n2さん
平均実行時間:
提出コードバイト数:403 バイト
【PHP】
1位 satoru_netさん
平均実行時間:0.02 秒
提出コードバイト数:150 バイト
【Python】
1位 satoru_netさん
平均実行時間:0.02 秒
提出コードバイト数:116 バイト
【Perl】
1位 yzxさん
平均実行時間:0.01 秒
提出コードバイト数:86 バイト
【C】
1位 satoru_netさん
平均実行時間:0.01 秒
提出コードバイト数:156 バイト
【C++】
1位 satoru_netさん
平均実行時間:0.01 秒
提出コードバイト数:165 バイト
【C#】
1位 n2さん
平均実行時間:0.02 秒
提出コードバイト数:548 バイト
【C++】
1位 JavaScriptさん
平均実行時間:0.04 秒
提出コードバイト数:189 バイト
やり込んでくださった皆様ありがとうございました、楽しんでいただけましたでしょうか?
ツイッターの@paiza_runでも、趣向を凝らした140字以内のコードをいつも見ておりますが、コードの短さを競うというのも楽しいですね!
■POH5「俺の許嫁と幼なじみが修羅場すぎる」模範解答
(※全てPythonのコードです)
◆霧島京子問題
paiza事務局作成コード
#coding:utf-8 n = input() t = map(int, raw_input().split()) m = input() for i in range(m): d = input() + 1 t_flag = [False]*n res = "No" while True: if d == n: #ゴールに到達で停止 res = "Yes" break if d <= 0 or n < d: #移動前マス外にはみ出て停止 break d += t[d-1] #移動 if d <= 0 or n < d: #移動後マス外にはみ出て停止 break if t_flag[d-1]: #すでに訪れている=ループに入っているので停止 break t_flag[d-1] = True #訪れているフラグを立てる print res
◆六村リオ問題
paiza事務局作成コード
n = input() oyu = 0.0 coffee = 0.0 for i in range(n): t, s = map(float, raw_input().split()) if t == 1: oyu += s if t == 2: coffee += s if t == 3: t_oyu = oyu/(oyu+coffee) t_coffee = coffee/(oyu+coffee) oyu -= t_oyu * s coffee -= t_coffee * s print int(coffee/(oyu+coffee)*100)
◆緑川つばめ問題
paiza事務局作成コード
n = raw_input() a, b = map(int, list(n)) print a+b+int(n)
■POH6+ 「え、妻が松江?」松江Ruby会議07協賛 回文作成プログラミングコンテスト模範解答
(※全てPythonのコードです)
paiza事務局作成コード
def solver(w, n): w.sort() ans = "" used = [False] * 1000 for i in range(n): if used[i] == False: r = w[i][::-1] for j in range(i+1, n): if used[i] == False and w[j] == r: ans += w[i] used[i] = used[j] = True break cen = "" for i in range(n): if used[i] == False: r = w[i][::-1] if w[i] == r: cen = w[i] ans2 = ans[::-1] print ans + cen + ans2 if __name__ == "__main__": w = [] n = input() for i in range(n): w.append(raw_input()) solver(w, n)
■コード公開について
「もっといろんな言語でいろんなコードが見てみたい!」という方は、以前こちらのブログで回答コードを公開してくださっている方々をご紹介しておりますので、ぜひご覧ください!
POHは毎回「ブログやSNS等でコードを公開していただいて構いません!」というスタンスで開催させていただいているオンラインイベントです。挑戦していただいた方々のコードが拝見できるのは毎回とても嬉しいです!
また、POH6+の方は松江Ruby会議で解説をしていただいた動画を見ることができます!「POH6に比べてPOH6+の問題は難しくて分かんない……」「何とか解けたけど、他の解き方も知りたいな~」という方はぜひご覧ください!!
来週は上位の方のコードもこのブログで公開いたしますのでお楽しみに。
■壁紙プレゼントについて
paizaに会員登録すると、下記の壁紙3種類がダウンロードできます!是非お気軽にご登録下さい!
paizaは、技術を追い続けることが仕事につながり、スキルのある人がきちんと評価される場を作ることで、日本のITエンジニアの地位向上を目指したいと考えています。
「paiza転職」は、自分のプログラミング力が他社で通用するか(こっそり)腕試しができる、IT/Webエンジニアのための転職サービスです。プログラミングスキルチェック(コーディングのテスト)を受けて、スコアが一定基準を超えれば、書類選考なしで複数の会社へ応募ができます。
まずはスキルチェックだけ、という使い方もできます。すぐには転職を考えていない方でも、自分のプログラミングスキルを客観的に知ることができますので、興味がある方はぜひ一度ご覧ください。
また、paiza転職をご利用いただいている企業の人事担当や、paiza転職を使って転職を成功した方々へのインタビューもございます。こちらもぜひチェックしてみてください。
詳しくはこちら