プログラムの実行結果は以下の通り。
22時11分33秒(22時から693秒後)から3秒間
プログラムのソースは以下の通り。
#include "puzutl.h" int main( int argc, cstring argv[]) { char a[1000+100], b[1000+100], c[1000+100]; int p, i; for( p=0; p< 1000; ) { for( i=0; i< 3; i++) a[p++] = 0; // 3秒消灯 for( i=0; i< 4; i++) a[p++] = 1; // 4秒点灯 } for( p=0; p< 1000; ) { for( i=0; i< 3; i++) b[p++] = 0; // 3秒消灯 for( i=0; i< 6; i++) b[p++] = 1; // 6秒点灯 } for( p=0; p< 1000; ) { for( i=0; i< 3; i++) c[p++] = 0; // 3秒消灯 for( i=0; i< 8; i++) c[p++] = 1; // 8秒点灯 } for( p=3; p< 1000; p++) { // 最初A,B,Cの3つとも消灯だったので3秒後から探す if( a[p+0] == 0 && b[p+0] == 0 && c[p+0] == 0 && // 同時に3秒消灯になるか? a[p+1] == 0 && b[p+1] == 0 && c[p+1] == 0 && a[p+2] == 0 && b[p+2] == 0 && c[p+2] == 0 ) { int h = p/3600 + 22; int m = p/60; int s = p%60; ps( "%d時%d分%d秒(22時から%d秒後)から3秒間\n", h, m, s, p); break; } } return 0; }