#!/usr/bin/hopper #include /* main program */ begin ld=0 set decimal '0' // work with integers only prepare data(DATA) // my dear "old" BASIC! get len data, move to 'ld' iter group ( --ld, ld, get data, perform(digital root), echo ) end /* procedures */ .locals func(digital root, n) c = 0, cnum=n iter group (++c, #(n>=10), s=0, q=0, m=n, \ iter group ( m=q, #( m<>0 ),\ #( q=int(m/10) ), #( s+= m-(q*10) ) ), n=s ) /* put all into stack */ #( lpad(".", 20, string(cnum) ) ) " -> digital root = ", #(n+0),", (additive persistence = ",#(c+0),")" back DATA: data( 9992, 39390, 588225, 627615, 393900588225, 9837703004232342 ) data( 126765060022822940, 199, 10 ) back