--- title: 'The Year 11779 Oshi Mark Problem' description: 'When will we run out of 2-emoji oshi marks?' pubDate: 'Oct 24 2024' heroImage: 'https://files.catbox.moe/8gr7k2.jpg' --- import Latex from '../../components/Latex.astro'; (This is a problem that lives rent-free in my head) The oshi mark is are emoji(s) that VTuber fans will often put in their social media usernames to represent their support for a particular VTuber. These are typically chosen during or before a VTuber's debut stream, you'll often see many VTubers changing their usernames to include them too! Seems like a good idea, until you realize that there is a finite number of emojis... ## Definition As of writing this there are 3790 emojis in the Unicode standard. I know that platforms like X have may have their own standards (Twemoji), but for the sake of this problem let's assume that we're using the Unicode standard. This also includes skin-tones, which may or may not be appropriate to use in this context as well. However, this is just all theory anyways so let's include them and take this as a best-case scenario. ## Problem Ideally, VTubers all want a unique oshi mark to represent them. Of course, in the early days of VTubing a single emoji would be enough to represent a VTuber. However, as the industry grows and more VTubers debut, the chances of a VTuber getting a unique oshi mark decreases... So the fix is intuitive, let's just use 2 emojis for each new VTuber. This is fine, in fact its the solution we're on right now, but how long until we run out of 2-emoji oshi marks? We then assume that all 1-emoji oshi marks are taken, so add that to the total number of 2-emoji oshi marks and we end up with 7,175,545 VTubers. ### Predicting Growth We can predict VTuber growth in a fairly crude manner using Holodex. I wrote a Java wrapper for the Holodex API a while back, so I was easily able to spin something up quick. ```java import com.pinapelz.Holodex; import com.pinapelz.HolodexException; import com.pinapelz.datatypes.Video; import com.pinapelz.query.VideoQueryBuilder; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.HashMap; import java.util.List; import java.util.Map; public class App { public static void main(String[] args) { try { Holodex holodex = new Holodex("API_KEY"); VideoQueryBuilder query = new VideoQueryBuilder().setTopic("Debut_Stream").setLimit(100); List