Soroban Development Tracking

Soroban

This page documents my progress in learning to use the Soroban (Japanese Abacus). By progress I mean improvements in speed and error rates.

- I use a Scheme script to generate random problems with each number in the problem being in the range [0,10*digits), printing off the Scheme output using LibreOffice.

- "# of prob" is the number of problems I do that day for this test of speed and error rate.

- "Seconds per problem" is the average, and includes time spent writing down the solution as well as clearing the soroban of the previous problem. My soroban does not have a clear button so I must tip it and than slide across the tops rows with my finger.

- The solutions are checked afterwards with Emacs calc to determine the error rate.

Practice Data

date       │ type     │ digits │ # of prob │ secs / prob │ error %
───────────┼──────────┼────────┼───────────┼─────────────┼─────────
2021-10-05 │ addition │ 3      │ 42        │ 27          │ 4.8
2021-10-06 │ addition │ 3      │ 41        │ 26.1        │ 7.3
2021-10-07 │ addition │ 3      │ 37        │ 23.1        │ 13.5
2021-10-08 │ addition │ 3      │ 42        │ 28.2        │ 7.1
2021-10-11 │ addition │ 3      │ 41        │ 24.8        │ 9.8
2021-10-12 │ addition │ 3      │ 35        │ 20.2        │ 2.9
2021-10-13 │ addition │ 3      │ 42        │ 23.5        │ 4.8
2021-10-14 │ addition │ 3      │ 42        │ 24.4        │ 4.8
2021-10-15 │ addition │ 3      │ 42        │ 22.8        │ 2.4
2021-10-18 │ addition │ 3      │ 42        │ 20.9        │ 11.9
2021-10-19 │ addition │ 3      │ 42        │ 23.0        │ 2.4
2021-10-20 │ addition │ 4      │ 41        │ 30.1        │ 4.9
2021-10-21 │ addition │ 4      │ 18        │ 25.8        │ 11.1
2021-10-22 │ addition │ 4      │ 18        │ 27.5        │ 11.1
2021-10-26 │ addition │ 4      │ 17        │ 25.7        │ 11.8
2021-10-27 │ addition │ 4      │ 18        │ 28.9        │ 11.1
2021-11-03 │ addition │ 5      │ 15        │ 30.8        │ 20
2021-11-04 │ addition │ 5      │ 15        │ 35.6        │ 13.3
2021-11-08 │ addition │ 6      │ 9         │ 51.4        │ 11
2021-11-11 │ addition │ 6      │ 10        │ 38.5        │ 20
2021-11-12 │ subtract │ 3      │ 5         │ 37.6        │ 0

Guile Scheme Scripts

#!/home/christopher/.guix-profile/bin/guile -s
!#

(use-modules (ice-9 format))

(define (random-digits n)
  (random (expt 10 n)))

(define (print-problem digits)
  (do ((i 0 (1+ i)))
      ((> i 5))
    (format #t (string-append "  ~" (number->string digits) "@a    ") (random-digits digits)))
  (display "\n")
  (do ((i 0 (1+ i)))
      ((> i 5))
    (format #t (string-append "+ ~" (number->string digits) "@a    ") (random-digits digits)))
  (display "\n")
  (display "\n\n\n\n"))

(define (print-problems n digits)
  (unless (= n 0)
    (print-problem digits)
    (print-problems (- n 1) digits)))

(set! *random-state* (random-state-from-platform))

(print-problems 7 4)