paiza times

paizaがお届けする、テック・キャリア・マネジメント領域における「今必要な情報」を届けるWebメディア

logo

paizaがお届けする、テック・キャリア・マネジメント領域の「今必要な情報」を届けるWebメディア

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

f:id:paiza:20151014154157p:plain

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

https://twitter.com/m1sogi/status/641754265707397121

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

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の方の結果を公開しております!→「え、妻が松江?」回文作成プログラミングコンテスト | paizaオンラインハッカソン(POH)

f:id:paiza:20151014151810p:plain

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)

■コード公開について

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転職」は、自分のプログラミング力が他社で通用するか(こっそり)腕試しができる、IT/Webエンジニアのための転職サービスです。プログラミングスキルチェック(コーディングのテスト)を受けて、スコアが一定基準を超えれば、書類選考なしで複数の会社へ応募ができます。

paiza転職

まずはスキルチェックだけ、という使い方もできます。すぐには転職を考えていない方でも、自分のプログラミングスキルを客観的に知ることができますので、興味がある方はぜひ一度ご覧ください。

paizaのスキルチェック

また、paiza転職をご利用いただいている企業の人事担当や、paiza転職を使って転職を成功した方々へのインタビューもございます。こちらもぜひチェックしてみてください。
詳しくはこちら

paizaのおすすめコンテンツ

PPG proken プログラミングゲーム「初恋 プログラミング研究会〜海に行こうよ〜」 PPG Bingo プログラミングゲーム「コードレビューBINGO!!」
paiza転職 paiza新卒 EN:TRY paizaラーニング 記事内に記載している情報は、記事公開時点でのものとなります。 Copyright Paiza, Inc, All rights reserved.