stanza - 如何计算 Stanza 列表中函数的 argmax?
问题描述
我想知道是否有一个函数可以计算 Stanza 中f
的数字列表(整数、长整数、浮点数)上的函数的 argmax numbers
。
它将具有以下行为:
defn argmax (f, numbers: Tuple) :
val N = length(numbers)
if N == 0 :
fatal("Can't compute the argmax of an empty tuple")
var max-index = 0
var max-value = numbers[0]
for idx in 1 to N do :
val value = f(numbers[idx])
if value > max-value :
max-index = idx
max-value = value
max-index
defn f (x) :
x * x
println $ argmax(f, [1, 6, 2, 5])
结果 :
1
谢谢!
解决方案
一种创建方法argmax
是功能样式,如下所示:
defn argmax (nums:Tuple<Comparable>) :
reduce(fn (a, b) : a when (a[1] > b[1]) else b, zip(0 to false, nums))[0]
max
它对组合索引和值的元组应用成对。要完成解决方案,您将使用以下内容:
defn f (x) :
x * x
defn argmax (f, nums:Tuple<Comparable>) :
argmax(map(f, nums))
推荐阅读
- asp.net-core - 如何从类型的给定属性中找到相应的 JsonSchema 属性?
- r - R data.table'变量<-名称(DT)':变量被:=运算符覆盖
- groovy - 为什么匿名类构造过程中访问局部变量会导致NPE
- c++ - 在 Qt QML 中附加时如何在 BarSeries xAxis 中设置标签的 tickCount
- angular - 动态组件Angular 12的问题
- node.js - 未找到边界 为什么?
- winapi - 非 HWND 特定的 Windows Ink
- python - 从 Flutter 上传图片
- python - AWS Chime 创建会议 Chime 链接
- javascript - Jquery 动态选择器