和訳してみた。

とにかく和訳。
過去問を解く際の一助となればこれ幸いです。


原文はこちら


比較に特化した簡単な言語の話。

その言語には、2つの表現しか存在しない。
変数名その物と、C言語Java,C+,C#)で使われているような三項間演算子
この言語を使って、2つの整数配列AとBが整数配列wantedを生成する過程を考える。


この言語で書かれたプログラムに引数としてaとbを与えられる。
その時、プログラムは次の4つに限定される。

  • "a" : この文は引数aをそのまま返す。
  • "b" : この文は引数bをそのまま返す。
  • "a<b?a:b" : もしaがbよりも小さければaを返し、そうでなければbを返す
  • "a<b?b:a" : もしaがbよりも小さければbを返し、そうでなければaを返す


さて、A[i]、B[i]を引数としてプログラムに適用した際の結果がwanted[i]にに格納されている。



A[i]、B[i]、wanted[i]が与えられたときにこれを満たすようなプログラムの最小の長さを返せ。
また、これを満たすようなパターンが存在しない時はー1を返せ。