fork download
  1. USING: sequences kernel arrays strings math.parser math
  2. math.ranges io splitting ;
  3. IN: kaprekar
  4.  
  5. : cleave-at ( str n -- seq ) cut-slice [ >string ] bi@ 2array ;
  6.  
  7. : all-cleaves ( str -- seq ) [ length 1 - ] [ ] bi [ ] curry
  8. replicate [ 1 ] [ length ] bi [a,b] [ cleave-at ] 2map ;
  9.  
  10. : filter-zeroes ( seq -- seq ) [ [ string>number ] map ] map
  11. [ 0 swap member? not ] filter ;
  12.  
  13. : kaprekar? ( n -- ? ) dup sq number>string
  14. all-cleaves filter-zeroes [ sum ] map member? ;
  15.  
  16. : main ( -- ) lines [ " " split [ string>number ] map [ first ]
  17. [ second ] bi [a,b] [ kaprekar? ] filter >array
  18. [ bl ] [ number>string write ] interleave nl ] each ;
  19.  
  20. MAIN: main
Success #stdin #stdout 0.21s 158016KB
stdin
2 100
stdout
Standard output is empty