繁体   English   中英

在给定数量的列宽随机宽度中拆分 100%

Split 100% in a given number of columns width random width

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我想在给定数量的列中拆分 100%。 但列的宽度应该是随机的。 这是我的第一次尝试。 但它是静态的 5 列。 有什么想法可以让它动态吗?

(defn create-columns []

  (let [col1 (int (random/number 14 26))
        col2 (int (random/number 14 26))
        col3 (int (random/number 14 26))
        col4 (int (random/number 14 26))
        col5 (- 100 (+ col1 col2 col3 col4))]

    [{:width col1, :left 0}
     {:width col2, :left (int col1)}
     {:width col3, :left (+ col1 col2)}
     {:width col4, :left (+ col1 col2 col3)}
     {:width col5, :left (+ col1 col2 col3 col4)}]))

结果应该是这样的

[{:width 23, :left 0} {:width 24, :left 23} {:width 23, :left 47} {:width 14, :left 70} {:width 16, :left 84}]

和想法?

1 个回复

这是一个表示为惰性序列操作的算法:

  1. 生成分隔列的随机位置,包括左右边界。
  2. 对所有职位进行排序
  3. 形成每个位置和下一个位置的对
  4. 将这些对映射到具有:left:width映射。

这是执行此操作的代码。

(defn random-cols [total col-count]
  (->> #(rand-int (inc total))
       (repeatedly (dec col-count))
       (into [0 total])
       sort
       (partition 2 1)
       (map (fn [[left right]] {:left left :width (- right left)}))))

(random-cols 100 3)
;; => ({:left 0, :width 21} {:left 21, :width 24} {:left 45, :width 55})

这可以生成宽度为 0 的列,但将列限制为某个最小宽度可能是您可能想要做的事情,尽管问题没有说明任何内容:

(defn random-cols-constrained [total col-count min-width]
  (let [widths (map #(+ min-width (:width %))
                    (random-cols (- total (* col-count min-width))
                                 col-count))]
    (map (fn [w l] {:width w :left l})
         widths
         (reductions + 0 widths))))
1 在给定的翻转次数中查找特定数量的正面和反面的所有组合

我正在尝试计算给定硬币翻转次数的所有可能组合,目前使用 10 作为我的测试用例。 我相信那是笛卡尔积,但我上一堂数学课是很久以前的事了。 然而,扭曲的是我想首先计算最可能的分布。 这是我开始的代码: 这将为我提供 10 次硬币翻转的所有可能组合。 但是第一个结果是全正面,这种可能性不大。 我的想 ...

2 JavaScript-拆分,在给定数字后全选

我有一个动态数组,我想排除字符串的第一部分,但是我不知道在第一部分之后会有多少个对象,我想将它们全部包含在一个新字符串中。 我可以做些什么来将它们全部包括在内吗? 像[1 ..?] 我有JQuery,但不认为那是必要的吧? ...

3 比较元素在给定数量的列表中出现的次数

我在Prolog练习中遇到一些问题。 假设我有赢得奥斯卡奖的演员名单。 像这样: 当名字出现两次时,表示该人赢得了2项奥斯卡奖,以此类推。 我需要做的是浏览此列表,找到每位赢得N或更多奥斯卡奖的演员, 数字为N时,我们必须与列表进行比较。 我已经有了一个功能,该功能可 ...

2011-05-25 18:39:56 1 493   prolog
4 在给定数组中查找阈值

给定一个数组,我必须找到最大阈值,使得小于数组中的元素乘以 c1,大于数组中的元素乘以 c2。 现在,我通过添加数组元素中的所有元素得到的总和应该与用户给出的值相交。 我想过使用 BST。 我想不出任何想法。 你能帮我制定一个有效的算法吗? 示例:400、500、600 c1= 0.05 c2 ...

5 为什么div和表在给定宽度= 100%时表现不同?

这是我的代码,简化为相关部分: 我的问题: 包含“SECOND”的<div>比包含“FIRST”的<table>更宽,尽管两者都是兄弟姐妹,并且通过相同的CSS类具有width=100% <div>也比屏幕宽,导致滚动条出现 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM