paiza開発日誌

IT/Webエンジニア向け総合求人・学習サービス「paiza」(https://paiza.jp ギノ株式会社)の開発者が開発の事、プログラミングネタ、ITエンジニアの転職などについて書いています。

【結果発表】誰と一緒に戦う?女子高生とともに世界を救えるコードとは

f:id:paiza:20151014154157p:plain

今回は、2015年9月1日(火)より開始いたしましたpaizaオンラインハッカソン Vol.6「女子高生プログラマーの大バトル!〜コボール文明の逆襲〜」と「POH6+ 「え、妻が松江?」松江Ruby会議07協賛 回文作成プログラミングコンテスト」の結果レポートと模範解答コードについてお届けします。

皆さん女子高生たちと一緒に世界を救っていただくことはできましたでしょうか??

paiza.jp

paiza.jp

■POH6「女子高生プログラマーの大バトル!〜コボール文明の逆襲〜」グラフ集計

f:id:paiza:20151014144930p:plain

キャラ別提出コード数

霧島京子: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の方の結果を公開しております!→「え、妻が松江?」松江Ruby会議07協賛 回文作成プログラミングコンテスト|POH6+

f:id:paiza:20151014151810p:plain

1位は67バイトのコードを書いてくださったn2さんです!!67バイトということは67文字のコードということですからね……素晴らしいですね!!!!

来週はこのブログで上位の方のコードを公開いたします!!

他の言語と比べてみても、Rubyは実行時間は長めですがバイト数は短くしやすい傾向にありますね。

Ruby以外の言語でご参加いただいた方の結果も各5位までのランキングを公開しております(「え、妻が松江?」松江Ruby会議07協賛 回文作成プログラミングコンテスト|POH6+)が、ここで各一位の方の結果を発表いたします。

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)

■コード公開について

f:id:paiza:20150831131102j:plain
「もっといろんな言語でいろんなコードが見てみたい!」という方は、以前こちらのブログで回答コードを公開してくださっている方々をご紹介しておりますので、ぜひご覧ください!

paiza.hatenablog.com

POHは毎回「ブログやSNS等でコードを公開していただいて構いません!」というスタンスで開催させていただいているオンラインイベントです。挑戦していただいた方々のコードが拝見できるのは毎回とても嬉しいです!

また、POH6+の方は松江Ruby会議で解説をしていただいた動画を見ることができます!「POH6に比べてPOH6+の問題は難しくて分かんない……」「何とか解けたけど、他の解き方も知りたいな~」という方はぜひご覧ください!!

www.youtube.com

来週は上位の方のコードもこのブログで公開いたしますのでお楽しみに。

■壁紙プレゼントについて

paizaに会員登録すると、下記の壁紙3種類がダウンロードできます!是非お気軽にご登録下さい!
f:id:paiza:20151014153402j:plain
f:id:paiza:20151014153444j:plain
f:id:paiza:20151014153458j:plain



paizaではスキルのあるエンジニアがきちんと評価されるようにし、技術を追い続ける事が仕事につながるようにする事で、日本のITエンジニアの地位向上を図っていければと考えています。特にpaizaではWebサービス提供企業などでもとめられる、システム開発力や、テストケースを想定できるかの力(テストコードを書く力)などが問われる問題を出題しています。

テストの結果によりS・A・B・C・D・Eの6段階でランクが分かります。自分のプログラミングスキルを客観的に知りたいという方は是非チャレンジしてみてください。

http://paiza.jp