#author("2017-08-16T12:53:18+09:00","default:nobuoki","nobuoki")
#author("2017-08-16T13:30:26+09:00","default:nobuoki","nobuoki")
* Q05 いまだに現金払い? [#u1e41cbd]
from &htmlinsert(amazontext,asin=B016QEE30G,text=プログラマ脳を鍛える数学パズル シンプルで高速なコードが書けるようになる70問);

* 回答 [#v26bf050]
echo 1000 |awk 'BEGIN{m=500}{print;s=$1;for(i=2;i<=NF-1;i++)s-=$i;for(a=$0;s>=m;s-=m){a=a" "m;print a}}' |awk 'BEGIN{m=100}{print;s=$1;for(i=2;i<=NF-1;i++)s-=$i;for(a=$0;s>=m;s-=m){a=a" "m;print a}}' |awk 'BEGIN{m=50 }{print;s=$1;for(i=2;i<=NF-1;i++)s-=$i;for(a=$0;s>=m;s-=m){a=a" "m;print a}}' |awk 'BEGIN{m=10 }{print;s=$1;for(i=2;i<=NF-1;i++)s-=$i;for(a=$0;s>=m;s-=m){a=a" "m;print a}}' |awk 'NF<=(15+1){split("",a);b=0;for(i=2;i<=NF;i++){a[$i]++;b+=$i}if($1==b){printf $1": ";for(v in a)printf v"*"a[v]" ";print ""}}'

#pre{{
1000: 100*5 50*10
1000: 100*6 50*8
1000: 100*7 50*6
1000: 100*8 50*4
1000: 100*9 10*5 50*1
1000: 100*9 50*2
1000: 100*10
1000: 10*5 50*9 500*1
1000: 50*10 500*1
1000: 100*1 10*5 50*7 500*1
1000: 100*1 50*8 500*1
1000: 100*2 10*5 50*5 500*1
1000: 100*2 50*6 500*1
1000: 100*3 10*5 50*3 500*1
1000: 100*3 50*4 500*1
1000: 100*4 10*10 500*1
1000: 100*4 10*5 50*1 500*1
1000: 100*4 50*2 500*1
1000: 100*5 500*1
1000: 500*2

real    0m0.015s
user    0m0.000s
sys     0m0.000s
}}

* 解説 [#if9b27fa]
#prism(bash){{{{
echo 1000 |
awk 'BEGIN{m=500}{print;s=$1;for(i=2;i<=NF-1;i++)s-=$i;for(a=$0;s>=m;s-=m){a=a" "m;print a}}' |
awk 'BEGIN{m=100}{print;s=$1;for(i=2;i<=NF-1;i++)s-=$i;for(a=$0;s>=m;s-=m){a=a" "m;print a}}' |
awk 'BEGIN{m=50 }{print;s=$1;for(i=2;i<=NF-1;i++)s-=$i;for(a=$0;s>=m;s-=m){a=a" "m;print a}}' |
awk 'BEGIN{m=10 }{print;s=$1;for(i=2;i<=NF-1;i++)s-=$i;for(a=$0;s>=m;s-=m){a=a" "m;print a}}' |
awk 'NF<=(15+1){split("",a);b=0;for(i=2;i<=NF;i++){a[$i]++;b+=$i}if($1==b){printf $1": ";for(v in a)printf v"*"a[v]" ";print ""}}'
}}}}

* 参考 [#pafc95b8]
rubyに負けてない

#pre{{{
bubka@e1fc2093f609:~/math-puzzle$ time ruby 05_01.rb
20

real    0m0.049s
user    0m0.040s
sys     0m0.000s

bubka@e1fc2093f609:~/math-puzzle$ time ruby 05_02.rb
20

real    0m0.059s
user    0m0.050s
sys     0m0.000s

bubka@e1fc2093f609:~/math-puzzle$ time ruby 05_03.rb
20

real    0m0.048s
user    0m0.040s
sys     0m0.000s
}}}

05_0[123].rb は、&htmlinsert(amazontext,asin=B016QEE30G,text=プログラマ脳を鍛える数学パズル シンプルで高速なコードが書けるようになる70問); の q05_0[123].rb を手打ちしたものです。

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS