{"version":"1.0","description":"class Array def bsearch(v) l = -1 r = size while r - l > 1 m = (l + r) / 2 self[m] >= v ? r = m : l = m end self[r] == v ? self[r] : nil end def bsearch_index(v) l = -1 r = size while r - l > 1 m = (l + r) / 2 self[m] < v ? l = m : r = m end r # self[r] == v ? r : nil end def bsearch_insert(v) l = -\u2026","author_url":"https://blog.hatena.ne.jp/KousakuinX/","published":"2026-04-29 01:44:13","height":"190","categories":["Ruby"],"image_url":null,"width":"100%","provider_name":"Hatena Blog","type":"rich","author_name":"KousakuinX","html":"<iframe src=\"https://hatenablog-parts.com/embed?url=https%3A%2F%2Funder-overworld.hatenablog.jp%2Fentry%2F2026%2F04%2F29%2F014413\" title=\"\u3010Ruby\u3011\u4e8c\u5206\u63a2\u7d22 \u81ea\u4f5c - \u5730\u4e0a\u306e\u6d1e\u7a9f\" class=\"embed-card embed-blogcard\" scrolling=\"no\" frameborder=\"0\" style=\"display: block; width: 100%; height: 190px; max-width: 500px; margin: 10px 0px;\"></iframe>","provider_url":"https://hatena.blog","url":"https://under-overworld.hatenablog.jp/entry/2026/04/29/014413","title":"\u3010Ruby\u3011\u4e8c\u5206\u63a2\u7d22 \u81ea\u4f5c","blog_title":"\u5730\u4e0a\u306e\u6d1e\u7a9f","blog_url":"https://under-overworld.hatenablog.jp/"}