ジェイソン・ムーアの回答にリンクされているブログ投稿のスクリーンショットと理論に基づいて、コンテンツが配置される事前定義されたブロック サイズが 10 ほどあると言えます。コンテンツが配置されるボックスのサイズは、さまざまなパラメーターに基づいています。多くの人がリツイートしたりいいねしたりしたものは優先度が高いと見なされるため、より大きなボックスが割り当てられ、写真、ビデオ、または大量のテキストを含むアイテムも優先される場合があります。 . これらのボックス (できればよく考え抜かれたサイズ) は、ページ上で最適にパックされます (ただし、これは単純な問題ではありません。以前の Facebook ストリームの 2 番目のレンダリングの奇妙な空白によって証明されるように、Flipbook でさえ失敗しているようです)。リンクされたブログ投稿)。
レンダリングされた Facebook フィードの外観から、Flipbook には (少なくとも) 次の事前定義されたボックス サイズがあります (幅と高さは、全幅/高さのパーセンテージとして指定されます)。
Designation | Width | Height | Example
---------------------------------------------------------------
full page | 100% | 100% | #12
2/3 page | 100% | 67% | #1
1/3 note | 50% | 33% | #3, #11
1/9 quote | 50% | 11% | #2, #8, #10, #15, #17, #18, #22
1/2 note | 50% | 50% | #16, #19
2/3 note | 50% | 67% | ?
これらのいくつかはかなり明確なグループ化パターンを持っています (たとえば、1/9 引用符は常に一度に 3 つ積み上げられ、1/3 音符と同じサイズのブロックを形成します)、他のものはより自由にパックできます。レンダリングされた Twitter フィードを同様に分析すると、追加のボックスがいくつか表示されます。
概要
したがって、要約すると、アルゴリズムはかなり単純に見えます。いくつかの事前定義された (適切に選択された) ボックス サイズから始めます。新しいフィードがレンダリングされたら、次の操作を行います。
- 人気や画像が含まれているかどうかなど、特定のプロパティに応じてサイズが異なるボックスを各アイテムに割り当てます。
- ボックスを最適にパックします (これは本質的にビン パッキング問題であり、効率的なアルゴリズムがないように見える NP 困難な問題です。貪欲な近似アルゴリズムで問題ありません)。
ここでは、ステップ 1 と、事前定義されたボックスの作成に重点を置く必要があります。
明確にするために:ここで説明する定義済みのボックス サイズは、縦向き用に定義されています。横向きの場合は、質問の写真からわかるように、別のボックス サイズのセットが使用されます。