Naomasa Numajiri writes:
> お題:
> 任意の値の異なる1桁の数値4つが与えられたとき、
> 四則演算(+、−、×、÷)を使用して計算結果を
> 10にする。
...やや、気がついたらもうこんな時間だ(;^^ゞ
...なんだかちっとも初心者向けでは無い気がしますが。
ロジックは sugiさん作 [TSabc:153] ticket.rb をパクってます。
--^ ticket1.awk
BEGIN{
split("4 2 1", num); num[0]="8";
split("- * /", op); op[0]="+";
ans=10;
limit=4^3;
for(i=0; i<limit; ++i){
s=num[0] op[int(i/4/4)%4] num[1] op[int(i/4)%4] num[2] op[i%4] num[3];
if(eval(s)==ans) print s,"=",eval(s);
} }
function eval(s, v,command){
command = sprintf("%s \"BEGIN{ print %s }\"", ARGV[0], s);
command | getline v;
close(command);
return v;
}
--$
■実行例
>jgawk -f ticket1.awk[ENTER]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-----
8+4-2*1 = 10
8+4-2/1 = 10
8+4/2*1 = 10
8+4/2/1 = 10
-----
以上