目標)
世界中で使えるTwitter のようなアプリをつくりたい。
投稿内容に投稿時刻を表示させたい。
ただ、世界中にいるユーザーがいるため、ユーザーの住んでいる場所によって表示される投稿時刻を修正したい。
例えば、東京(日本)に住んでいるユーザが現地時刻 19:38 に投稿した日記の時刻は、シンガポールに住んでいるユーザの画面では 21:38 と表示されなければなりません。
これは、日本の時刻がシンガポールの時刻よりもちょうど 2 時間進んでいるためです。なお、時間は 00:00 から 23:59 までの 24 時間制で表すものとします。
N 個の都市の時差を表す情報と、その中のある都市に住むユーザの日記の投稿時刻 (現地時間) が入力されるので
それぞれの都市に住むユーザの画面に表示される投稿時刻を出力するプログラムを作成して下さい。
入力される値
入力は以下のフォーマットで与えられます。
N
p_1 s_1
p_2 s_2
…
p_N s_N
q t
コード ''' 入力例2 27 howland -12 samoa -11 hawaii -10 alaska -9 california -8 arizona -7 texas -6 massachusetts -5 santiago -4 brasilia -3 greenland -2 verde -1 morocco 0 london 1 paris 2 athens 3 moscow 4 islamabad 5 astana 6 bangkok 7 hongkong 8 seoul 9 guam 10 kuril 11 southpole 12 nukualofa 13 tokelau 14 southpole 00:00 出力例2 00:00 01:00 02:00 03:00 04:00 05:00 06:00 07:00 08:00 09:00 10:00 11:00 12:00 13:00 14:00 15:00 16:00 17:00 18:00 19:00 20:00 21:00 22:00 23:00 00:00 01:00 02:00 ''' M = int(input()) data = [list(map(str, input().split())) for x in range(M)] #print(data) #型変換 data = [[x[0]] + [int(e) for e in x[1:]] for x in data] #print(data) c = list(map(str,input().split())) #print(c) place = c[0] hour, minute = list(map(int, c[1].split(':'))) #print(hour) #print(minute) #居住地の世界標準時差を調査 for x in range(M): if place == data[x][0]: place_diff = data[x][1] #print(place_diff) #投稿された国の時刻とユーザーの居住国の時差を計算 for x in range(M): diff = data[x][1] - (place_diff) # print(diff) if diff >= 0: ans_hour = hour + diff else: ans_hour = hour - abs(diff) ans_hour = '{0:02d}'.format(ans_hour) #print(ans_hour) #ゼロ埋めの時間表示 ans_hour = str(ans_hour) print(ans_hour + ':' + str(minute))
#質問
期待値を出力できましたが、皆様の率直な意見を頂戴したいです。
読みづらいや、わかりづらいなど、どんな意見でもいいので更なる成長のためにアドバイスいただきたいです。
#追記
皆さま貴重なご意見ありがとうございます。
その中で、hayataka様からオリジナルコードが誤っているとご指摘を受けました。
そのため、皆さまのアドバイスを参照にコードを再編集致しました。
ただ、ジャッジ結果によると、9/10 とういパーフエクトなロジックにはなりませんでした。
現状、理由を解明することができず、解決方法に正しいコードを載せるまで至っておりません。
前回の内容で、誤った内容を展開してしまし申し訳ございません。
今後、内容を精査し解決方法を更新できるよう努力致します。
取り急ぎ失礼致します。
コード from collections import OrderedDict n = int(input()) timezone_table = OrderedDict() for _ in range(n): city, diff = input().split() timezone_table[city] = int(diff) base_city, base_time = input().split() base_hour, base_minute = map(int, base_time.split(':')) standard_hour = (base_hour - timezone_table[base_city]) % 24 for diff in timezone_table.values(): ans_hour = (standard_hour + diff) % 24 print("{0:02d}:{1}".format(ans_hour, base_minute))
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/04/28 13:48