朝日新聞2006年6月16日のパズル横丁問題

問題

アルファベットをある規則で変換したところ以下の数式が成り立つ。□□に入るアルファベットは?

A+B=C

BX=VD

ST+HF=SF+□□

解答への道(ヒント)

A+B=C

うーん,おいらはプログラマ。何も考えずに以下のプログラムを作ったら答えが出ちゃった。

画面にNGが出たらどうしようかと思ったけど,OK,OKが出たので最後の出力も合っているでしょう。

#include "puzutl.h"

int c2i( char c) 
{
  return ある規則で文字を数字に変換。
}

int two( int x, int y)
{
  2つの数字を合体。
}

void rev_two( int v, char& c1, char& c2)
{
  1つの数字を2つの文字に分解
}

int main( int argc, cstring argv[])
{
  int a = c2i('A');
  int b = c2i('B');
  int c = c2i('C');
  int d = c2i('D');
  int s = c2i('S');
  int t = c2i('T');
  int h = c2i('H');
  int f = c2i('F');
  int x = c2i('X');
  int v = c2i('V');
  int bx = two(b,x);
  int vd = two(v,d);
  int st = two(s,t);
  int hf = two(h,f);
  int sf = two(s,f);
  ps( "A+B=C : ");
  if( a+b == c) ps( "OK\n"); else ps( "NG\n");
  ps( "BX=VD : ");
  if( bx == vd) ps( "OK\n"); else ps( "NG\n");
  ps( "ST+HF=SF+□□ : ");
  int R = st+hf-sf;
  char c1, c2;
  rev_two( R, c1, c2);
  ps( "%c%c(%d)\n", c1, c2, R);
  return    0;
}

出力を見ただけではいまいち自信がないので合計値を出力するように変更したら,合ってそうな感じ。

 

テレビを録画しているハードディスクが,冷蔵庫状態になってきた。

 

解速度