Memoize

BasicWerk   EC Support   Technique   Facebook  

20140715154648_factor_cut-slice_memo

factor_cut-slice_memo

レコードセット(Array)を一定数で分割した配列を作る。

 

例: 229295 件あるデータを 49000 件毎に分割する

 
IN: scratchpad auto-use "SELECT id FROM items" sql-query
--- Data stack:
{ ~array~ ~array~ ~array~ ~array~ ~array~ ~array~ ~array~...
 
! 割り算の結果を integer で -> /i
IN: scratchpad auto-use dup length 49000 /i
 
--- Data stack:
{ ~array~ ~array~ ~array~ ~array~ ~array~ ~array~ ~array~...
4
 
! cut-slice ( seq n -- before-slice after-slice )
! after-slice を 49000 で割る ✕ length を割った回数分(times)  
IN: scratchpad auto-use [ 49000 cut-slice ] times
 
--- Data stack:
T{ slice f 0 49000 ~array~ }
T{ slice f 49000 98000 ~array~ }
T{ slice f 98000 147000 ~array~ }
T{ slice f 147000 196000 ~array~ }
T{ slice f 196000 229295 ~array~ }
 
! 最後にスタックに積んだ全ての Slice を Array にまとめる
IN: scratchpad auto-use { } 4 1 + [ swap suffix ] times 
 
--- Data stack:
{ ~slice~ ~slice~ ~slice~ ~slice~ ~slice~ }
 

 

http://docs.factorcode.org/content/word-cut-slice,sequences.html

http://docs.factorcode.org/content/word-__slash__i%2Cmath.html

http://docs.factorcode.org/content/word-times,math.html

 


© Shin Nakamura/BasicWerk 2014