💾 Archived View for gem.librehacker.com › soroban.gmi captured on 2021-11-30 at 20:18:30. Gemini links have been rewritten to link to archived content
-=-=-=-=-=-=-
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.
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
#!/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)