Re: How do i get multiple Min() values?

Liste des GroupesRevenir à cl lisp 
Sujet : Re: How do i get multiple Min() values?
De : enometh (at) *nospam* meer.net (Madhu)
Groupes : comp.lang.lisp
Date : 16. Jul 2024, 17:45:55
Autres entêtes
Organisation : Motzarella
Message-ID : <m3a5ih1gss.fsf@leonis4.robolove.meer.net>
References : 1 2 3

* Kaz Kylheku <20240715051340.619@kylheku.com> :
Wrote on Mon, 15 Jul 2024 12:27:58 -0000 (UTC):

On 2024-07-12, HenHanna <HenHanna@devnull.tb> wrote:
>
How do i get multiple Min() values?

You just need the count of the min value.  you don't really need
"multiple min() values". right?

e.g. for   Y = (x-2)*(x-3)   for x in range(-10,10)
the min Y is hit twice
>
print(  min( ((x-2)*(x-3),  (x, (x-2, x-3)))
for x in range(-10,10) ) )
>
is this easy in Scheme(Gauche) ?

if the   Min()   is going to check all of the Candidate values,
     it could (at least) tell us  how many times the Min value was seen!
>
I decided to add something like this to TXR Lisp.
>
It will appear in 296.
>
This is the TXR Lisp interactive listener of TXR 295.
Quit with :quit or Ctrl-D on an empty line. Ctrl-X ? for cheatsheet.
When transferring between containers, do not siphon TXR by mouth.
1> (find-mins -10..11 : [callf * pppred ppred])
(2 3)
2> (find-mins (vec-seq -10..11) : [callf * pppred ppred])
#(2 3)
3> (find-mins "abracadabra")
"aaaaa"
4> (find-maxes "abracacabra")
"rr"
>
I works with any less-like function, assuming equality
when it's neither true that x is less than y, nor that
y is less than x.

Ugh. One would think it is be trivial in CL to track the min-count as a
wrapper around (reduce #'min list)

but the REDUCE spec makes it hairy to get edge cases right (where the
input is an empty list or singleton list).

(defun hen-min (list &aux (min-count 1))
  "LIST is a list of numbers. Return the MIN of the list. Second
return value is the count of the MIN in the given LIST"
  (values (reduce (lambda (&optional a b)
    (when a
      (prog1 (min a b)
(cond ((< b a) (setq min-count 1))
      ((= b a) (incf min-count))))))
  list)
  (if (endp list) 0  min-count)))

It still reads nicer without any [???]

Date Sujet#  Auteur
12 Jul 24 * How do i get multiple Min() values?10HenHanna
12 Jul 24 +* Re: How do i get multiple Min() values?5HenHanna
15 Jul 24 i`* Re: How do i get multiple Min() values?4Kaz Kylheku
16 Jul 24 i `* Re: How do i get multiple Min() values?3Madhu
16 Jul 24 i  +- Re: How do i get multiple Min() values?1Madhu
17 Jul 24 i  `- Re: How do i get multiple Min() values?1Nuno Silva
13 Jul 24 `* Re: How do i get multiple Min() values?4B. Pym
13 Jul 24  +- Re: How do i get multiple Min() values?1HenHanna
13 Jul 24  +- Re: How do i get multiple Min() values?1B. Pym
15 Aug 24  `- Re: How do i get multiple Min() values?1B. Pym

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal