スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

CodeEvalのFizzBuzzをPythonでやってみた

転職したいなぁ、と思いつつ、放っておいたCodeEvalを見てみました。
CodeEvalで出されるお題をプログラムすると、自分がプログラムできますよぉー的なことを言えるみたい。
(ほんとかなぁ、でも、採用試験で、この結果を提出すると結構、面白いかも(^_^;))

使用方法は、
CodeEvalのサイトから、"Sign Up"を選択し、
自分の身分と、名前とメアドと認証コード(すっごい見づらい、、)をいれて、サインインします。

とりあえず、日頃適当に使っているPythonでFizzBuzzをやってみました。
読んでみると、んー、仕様が不親切。。。
エラーの場合はどうするか等書いてないなぁ、、、と思いつつ。
海外のコーディングなんてこんなもんかと、日本人の生真面目さを呪いつつ。

まぁ、とりあえず、こんな感じの仕様でした。
FizzBuzz
・値xが正のint Aで割れる場合は、"F"を出力する。
・値xが正のint Bで割れる場合は、"B"を出力する。
・A,B両方で割れる場合は、"FB"を出力する。
・1 から正のint N まで、xを数える。
・入力 : スペースで区切った以下の様なファイルが入る。
   A1 B1 N1 \n
   A2 B2 N2 \n
・出力 :  スペースで区切った値を標準出力する。(例は、サイトを参照)
 1 2 3 F ....
・ファイル名は、引数で受け取る。(一応shellで動かすと書いてあるので)
・プログラム成功時は、0を戻り値とし、それ以外は、、、(私は、-1にしました。。。)
・あと5秒以上かかったらダメ。 

ということで、しょぼいと思いますが、以下が私が書いたプログラム。
(自分でやる人は、見ないほうがいいかも)

# -*- coding:utf-8 -*-

import sys
import os

def fizzbuzz(line):
    try:
        ptst = ""
        vals = line.split(' ')
        if(len(vals) != 3):
            return False

        for cnt in range(1,int(vals[2]) + 1):
            valst = ""
            if cnt % int(vals[0]) == 0 :
                valst += "F"
            if cnt % int(vals[1]) == 0 :
                valst += "B"
            if valst == "":
                valst = str(cnt)
            ptst += valst + " "
        
        print ptst[0:len(ptst)]
        
        return True
    except:
        return False
        

if not os.path.exists(sys.argv[1]):
    sys.exit(-1)
    
f = open(sys.argv[1])

for row in f:
    if not fizzbuzz(row):
        sys.exit(-1)

sys.exit(0)

楽しみながらできますし、
情報処理試験ではわからないようなコーディング技術を試す分にはいいのではないでしょうか?
おわり。

スポンサーサイト

テーマ : プログラミング
ジャンル : コンピュータ

コメントの投稿

非公開コメント

プロフィール

ss_9

名前 :ss_9
紹介 :
20代はエンジニア、30代はプロ、40代は管理、50代は人脈。

Twitterボタン

最新記事
カテゴリ
AD
月別アーカイブ
RSSリンクの表示
RSSリンクの表示
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。