Re: Reverse SCAN SPLIT

Liste des GroupesRevenir à cl forth 
Sujet : Re: Reverse SCAN SPLIT
De : dxforth (at) *nospam* gmail.com (dxf)
Groupes : comp.lang.forth
Date : 08. Oct 2024, 03:58:47
Autres entêtes
Organisation : i2pn2 (i2pn.org)
Message-ID : <8263ce17c2bc24361306cf0b88bc923b3019e84d@i2pn2.org>
References : 1 2 3 4 5
User-Agent : Mozilla Thunderbird
On 8/10/2024 6:25 am, Ahmed wrote:
On Mon, 7 Oct 2024 12:07:16 +0000, dxf wrote:
 
..
 
Interesting.  I'd do the numeric conversion in the main routine if
possible.
There's a parsing issue with  s" :30"
 
And what about this:
 
 
: :t  ( add cnt -- add 2 1 | add1 2 add2 2 2 | add1 2 add2 2 add3 2 3)
 bounds  ( end start)
 dup     ( end start start)
 >r      ( end start )   ( r: start)
 swap    ( start end   ) ( r: start)
 dup       ( start end pa)
 -rot    ( pa start end )
 do      ( pa)
    i    ( pa add)
    c@   ( pa c)
    [char] : = ( pa f)
    if         ( pa)
       i       ( pa add)
       -       ( pa-add)
    dup     ( pa-add pa-add)
       2       ( pa-add pa-add 2)
       >       ( pa-add t|f)
       if      ( pa-add)
      drop  ( )
         i     ( add)
         dup     ( add add)
         1+    ( add add+1)
         2     ( add add+1 2)
         rot   ( add+1 2 add)
       else    ( pa-add)
         1 = if ( )
        s" 00" ( add 2)
        i      ( add 2 add)
      else  ( )
           i     ( add)
           dup 1+ 1  ( add add+1 1)
           rot     ( add+1 1 add)
         then
    then
    then
    -1 +loop    ( ... add+1 1|2 pa)
    r>          (               pa start)
    tuck        (               start pa start)
    -           (               start pa-st)
    dup 0= if 2drop s" 00" then
;
 
 
: .t ( s_add s_cnt m_add m_cnt h_add h_cnt)
  type space ." hr"   space
  type space ." min"  space
  type space ." sec"
;
 
with stack juggling !!!!!!!!!!

swap dup -rot --> over
 
Some tests:
 
 
s" 10:1:2"  :t .t 10 hr 1 min 2 sec ok
s" :10:"  :t .t 00 hr 10 min 00 sec ok
s" ::"  :t .t 00 hr 00 min 00 sec ok
s" ::1"  :t .t 00 hr 00 min 1 sec ok
s" :10:1"  :t .t 00 hr 10 min 1 sec ok
s" :10:"  :t .t 00 hr 10 min 00 sec ok
s" 10:10:"  :t .t 10 hr 10 min 00 sec ok
s" 10::"  :t .t 10 hr 00 min 00 sec ok

I wouldn't care about "x:" or "x::x"
Maybe also ":x"
But "5" needs to work :)


Date Sujet#  Auteur
7 Oct 24 * Reverse SCAN SPLIT18dxf
7 Oct 24 +* Re: Reverse SCAN SPLIT6Ahmed
7 Oct 24 i`* Re: Reverse SCAN SPLIT5Ahmed
7 Oct 24 i `* Re: Reverse SCAN SPLIT4dxf
7 Oct 24 i  `* Re: Reverse SCAN SPLIT3Ahmed
8 Oct 24 i   `* Re: Reverse SCAN SPLIT2dxf
8 Oct 24 i    `- Re: Reverse SCAN SPLIT1Ahmed
7 Oct 24 +* Re: Reverse SCAN SPLIT2Ruvim
7 Oct 24 i`- Re: Reverse SCAN SPLIT1dxf
7 Oct 24 +- Re: Reverse SCAN SPLIT1dxf
10 Oct 24 +- Re: Reverse SCAN SPLIT1dxf
10 Oct 24 `* Re: Reverse SCAN SPLIT7albert
10 Oct 24  `* Re: Reverse SCAN SPLIT6dxf
17 Oct 24   +- Re: Reverse SCAN SPLIT1minforth
17 Oct 24   `* Re: Reverse SCAN SPLIT4mhx
18 Oct 24    +- Re: Reverse SCAN SPLIT1dxf
18 Oct 24    `* Re: Reverse SCAN SPLIT2dxf
19 Oct 24     `- Re: Reverse SCAN SPLIT1albert

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal