ナゾ042
「レイトン教授と魔神の笛」のナゾ042が徹夜明けの頭には辛かったのでプログラムで解いてみました。
でも、なんか答えが違う、、、。
以下、激しくネタバレ。
#include <cstdio> float short_angle(int hh, int mm) { return 360.0f * (float)((hh%12)*60 + mm) / (60.0f*12.0f); } float long_angle(int mm) { return 360.0f * (float)mm / 60.0f; } float clock_angle(int hh, int mm) { float sa = short_angle(hh, mm); float la = long_angle(mm); float a = la - sa; if (a < 0.0f) a += 360.0f; return a; } bool is_continued3(int hh, int mm) { int d[] = { hh/10, hh%10, mm/10, mm%10 }; return ((d[0] == d[1]) && (d[1] == d[2]) && (d[2] != d[3])) || ((d[0] != d[1]) && (d[1] == d[2]) && (d[2] == d[3])) ; } int main() { int max_hh = 0; int max_mm = 0; float max_angle = 0.0f; for (int hh = 1; hh < 24; ++hh) { for (int mm = 0; mm < 60; ++mm) { if (is_continued3(hh, mm)) { float a = clock_angle(hh, mm); if (a > max_angle) { max_hh = hh; max_mm = mm; max_angle = a; } std::printf("%2d:%02d\t%g\n", hh, mm, a); } } } std::printf("max: %2d:%02d\n", max_hh, max_mm); }
枝狩りのない、力任せのコードです。
実行結果は「ナゾ解答の掲載はご遠慮願います」とのことなので載せません。
また、上記プログラムの結果を入力しても正解にはなりません。
ヒントで聞ける数に合わせると、時間は0埋めせず、分は0埋めする模様。
確かに問題文もそうなっています。なので0時は無視。
ちなみに、寝ぼけた頭で考えた答えは「11:1」。それ長針と短針が逆、、、。