table_print gem
https://github.com/arches/table_print/
table_print
라는 젬을 보았는데, 데이터를 표로 알아서 이쁘게 잘 뿌려주는 것 같다. 시즌 2에서 printf
와 format string 으로 이리저리 출력했던 걸 좀더 단순화할 수 있을 것 같아서 테스트 해봄.
이걸로 설치하고
gem install table_print
이걸로 불러들이고
require 'table_print'
멀티바이트 문자를 사용하기 때문에 아래와 같이 설정하고
tp.set :multibyte, true
기존 로직에서 printf
하던 부분을 해쉬로 만들어서 배열에 추가하는 방식으로 코드 변경
- printf "#{n}\t%12s\t%12s\t%12s\t#{msg}\n" , fixed_sum, fib_original_sum, fib_filtered_sum
+ all << { absent: n, acc_fixed: fixed_sum, acc_fibo: fib_original_sum, acc_fibo_filtered: fib_filtered_sum, zone: msg}
그리고 배열을 넘기면
tp all
아래와 같이 콘솔에 표로 출력해줌.
$ ruby find_profit_day_fibo_only_with_tp.rb
ABSENT | ACC_FIXED | ACC_FIBO | ACC_FIBO_FILTERED | ZONE
-------|-----------|-----------|-------------------|-------
1 | 1000 | 100 | 100 | 개이득
2 | 2000 | 200 | 200 | 개이득
3 | 3000 | 400 | 400 | 개이득
4 | 4000 | 700 | 700 | 개이득
5 | 5000 | 1200 | 1200 | 개이득
6 | 6000 | 2000 | 2000 | 개이득
7 | 7000 | 3300 | 3300 | 개이득
8 | 8000 | 5400 | 5400 | 개이득
9 | 9000 | 8800 | 8800 | 개이득
10 | 10000 | 14300 | 14300 | 노이득
11 | 11000 | 23200 | 23200 | 노이득
12 | 12000 | 37600 | 37600 | 노이득
13 | 13000 | 60900 | 50000 | 노이득
14 | 14000 | 98600 | 50000 | 노이득
15 | 15000 | 159600 | 50000 | 노이득
16 | 16000 | 258300 | 50000 | 노이득
17 | 17000 | 418000 | 50000 | 노이득
18 | 18000 | 676400 | 50000 | 노이득
19 | 19000 | 1094500 | 50000 | 노이득
20 | 20000 | 1771000 | 50000 | 노이득
21 | 21000 | 2865600 | 50000 | 노이득
22 | 22000 | 4636700 | 50000 | 노이득
23 | 23000 | 7502400 | 50000 | 노이득
24 | 24000 | 12139200 | 50000 | 노이득
25 | 25000 | 19641700 | 50000 | 노이득
26 | 26000 | 31781000 | 50000 | 노이득
27 | 27000 | 51422800 | 50000 | 노이득
28 | 28000 | 83203900 | 50000 | 노이득
29 | 29000 | 134626800 | 50000 | 노이득
30 | 30000 | 217830800 | 50000 | 노이득
31 | 31000 | 352457700 | 50000 | 노이득
전체 소스는 find_profit_day_fibo_only_with_tp.rb 참고.
csv 나 html 으로도 출력할 수 있는 설정을 제공하는 것 같다. 다만 html 은 table 태그가 아니라 위와 같은 텍스트를 pre 태그로 감싸서 표 모양으로 볼 수만 있게 해주는 정도인듯.