From feeee52376533de6f984a02e03064b5dd887854a Mon Sep 17 00:00:00 2001 From: John Benediktsson Date: Sun, 31 Jul 2022 11:19:14 -0700 Subject: [PATCH] sequences.extras: faster arg-min and arg-max it doesn't have to iterate through the sequence twice now --- extra/sequences/extras/extras.factor | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/extra/sequences/extras/extras.factor b/extra/sequences/extras/extras.factor index 782b7bea73..9d6de7a958 100644 --- a/extra/sequences/extras/extras.factor +++ b/extra/sequences/extras/extras.factor @@ -432,12 +432,6 @@ INSTANCE: odds virtual-sequence : until-empty ( seq quot -- ) [ dup empty? ] swap until drop ; inline -: arg-max ( seq -- n ) - [ supremum ] keep index ; - -: arg-min ( seq -- n ) - [ infimum ] keep index ; - : infimum-by* ( ... seq quot: ( ... elt -- ... x ) -- ... i elt ) [ before? ] select-by* ; inline +: arg-max ( seq -- n ) + [ ] supremum-by* drop ; + +: arg-min ( seq -- n ) + [ ] infimum-by* drop ; + : ?supremum ( seq/f -- elt/f ) [ f ] [ [ ] [ 2dup and [ max ] [ dupd ? ] if ] map-reduce -- 2.34.1