Code Jam - Reverse Words for Python

1505 ワード

前編Store Credit同様、Africa 2010、Qualification Roundのテーマで、現在は練習に使われています
Problem
スペースで区切られた単語のリストを与え、各行にL文字とW単語が含まれます.各行にはアルファベットとスペースしか含まれておらず、単語間のスペースは1つしかありません.
Input
最初の行はtest caseの数Nを与える
次のN行には、行ごとにスペースで区切られた単語のリストが含まれます.
Output
各test caseについて、「Case#x:」という行を出力し、その後、その行において所定の単語リストを逆の順序で出力する.
Sample
Input 
Output  3
this is a test
foobar
all your base
Case #1: test a is this
Case #2: foobar
Case #3: base your all

ソース:
方法1:
fin = open('B-large-practice.in', 'r')
fout = open('B-large-practice.out', 'w')

N = int(fin.readline())
for cases in xrange(N):
    words = fin.readline().split()
    L = len(words)
    if L != 1:
        for i in xrange(L):
            if i >= L - i -1:
                break
            tmp = words[i]
            words[i] = words[L - i -1]
            words[L - i -1] = tmp
    fout.write("Case #%d:" %(cases + 1))
    for i in xrange(L):
        fout.write(" %s" %(words[i]))
    fout.write("
") fin.close() fout.close()

この問題はPythonで実現するのが便利で、1行のデータを読み込んだ後、split法で区切り(デフォルトはスペースを間隔にして、問題と一致します)、単語の順序を戻せばいいです.
方法2:
入力したリストを変更せずにそのまま使用することもできます
    fout.write("Case #%d:" %(cases + 1))
    for i in xrange(L):
        fout.write(" %s" %(words[-(i + 1)]))
    fout.write("
")
法により結果が得られた.