• Log InLog In
  • Register
Liquid`
Team Liquid Liquipedia
EDT 17:06
CEST 23:06
KST 06:06
  • Home
  • Forum
  • Calendar
  • Streams
  • Liquipedia
  • Features
  • Store
  • EPT
  • TL+
  • StarCraft 2
  • Brood War
  • Smash
  • Heroes
  • Counter-Strike
  • Overwatch
  • Liquibet
  • Fantasy StarCraft
  • TLPD
  • StarCraft 2
  • Brood War
  • Blogs
Forum Sidebar
Events/Features
News
Featured News
Team Liquid Map Contest #22: Results and Winners7Code S Season 2 (2026): RO4 and Finals Preview12TL.net Map Contest #22 - Voting & Ladder Map Selection7Code S Season 2 (2026) - RO8 Preview5[ASL21] Finals Preview: Two Legacies21
Community News
Douyu Cup 2026: $20,000 Legends Event (June 26-28)10[BSL22] Non-Korean Championship from 13 to 28 June4Weekly Cups (May 25-31): Clem doubles, 2v2 circuit heads toward finale0StarCraft II 5.0.16 PTR Patch Notes may 26th156Weekly Cups (May 18-24): MaxPax wins doubles0
StarCraft 2
General
TL Poll: How do you feel about the 5.0.16 PTR balance changes? RSL: S6 Finals played at BlizzCon 2026 Team Liquid Map Contest #22: Results and Winners High level ptr replays? where can I find them? StarCraft II 5.0.16 PTR Patch Notes may 26th
Tourneys
Douyu Cup 2026: $20,000 Legends Event (June 26-28) Maestros of The Game 2 announcement and schedule ! Sparkling Tuna Cup - Weekly Open Tournament Sea Duckling Open (Global, Bronze-Diamond) GSL Code S Season 2 (2026)
Strategy
[G] Having the right mentality to improve
Custom Maps
[D]RTS in all its shapes and glory <3
External Content
Mutation # 530 One For All The PondCast: SC2 News & Results Mutation # 529 Opportunities Unleashed Mutation # 528 Infection Detected
Brood War
General
Where is EffOrt? BW General Discussion BGH Auto Balance -> http://bghmmr.eu/ vespene.gg — BW replays in browser Quality of life changes in BW that you will like ?
Tourneys
[Megathread] Daily Proleagues [ASL21] Grand Finals [BSL22] Grand Finals - Sunday 21:00 CEST Escore Tournament StarCraft Season 2
Strategy
Creating a full chart of Zerg builds Relatively freeroll strategies Why doesn't anyone use restoration? Any training maps people recommend?
Other Games
General Games
ZeroSpace Megathread Stormgate/Frost Giant Megathread Path of Exile Nintendo Switch Thread PC Games Sales Thread
Dota 2
Looking for a Dota Mentor Official 'what is Dota anymore' discussion
League of Legends
Heroes of the Storm
Simple Questions, Simple Answers Heroes of the Storm 2.0
Hearthstone
Deck construction bug
TL Mafia
Vanilla Mini Mafia
Community
General
UK Politics Mega-thread US Politics Mega-thread Russo-Ukrainian War Thread Trading/Investing Thread Canadian Politics Mega-thread
Fan Clubs
The HerO Fan Club! The herO Fan Club!
Media & Entertainment
Movie Discussion! [Req][Books] Good Fantasy/SciFi books [TV/BOOK] *SPOILERS* Game of Thrones Discussion [Manga] One Piece
Sports
2024 - 2026 Football Thread TeamLiquid Health and Fitness Initiative For 2023 Formula 1 Discussion Cricket [SPORT] NBA General Discussion
World Cup 2022
Tech Support
Computer Build, Upgrade & Buying Resource Thread Facing Challenges in Mobile App Development
TL Community
Cara Refund Tiket Agoda The Automated Ban List
Blogs
Does Workplace Frustration D…
TrAiDoS
An Exploration of th…
waywardstrategy
I'm an arrogant trash talke…
FlaShFTW
Gauntlet SC2: A Retrospectiv…
Ctone23
Why RTS gamers make better f…
gosubay
Customize Sidebar...

Website Feedback

Closed Threads



Active: 8794 users

The Big Programming Thread - Page 685

Forum Index > General Forum
Post a Reply
Prev 1 683 684 685 686 687 1032 Next
Thread Rules
1. This is not a "do my homework for me" thread. If you have specific questions, ask, but don't post an assignment or homework problem and expect an exact solution.
2. No recruiting for your cockamamie projects (you won't replace facebook with 3 dudes you found on the internet and $20)
3. If you can't articulate why a language is bad, don't start slinging shit about it. Just remember that nothing is worse than making CSS IE6 compatible.
4. Use [code] tags to format code blocks.
Acrofales
Profile Joined August 2010
Spain18312 Posts
December 02 2015 20:29 GMT
#13681
I'm not sure what you're doing, but if you need reflection to implement a stack, I do know that you're doing it the hard way.

Question: why does whoever wants to use your stack have to pass two generic arguments? What até your Stacknode objects for?
WarSame
Profile Blog Joined February 2010
Canada1950 Posts
December 02 2015 20:37 GMT
#13682
Well the first one is for the type of StackNode object(i.e. a MinStackNode, StackNode) and the second is the type of data being stored(String, int). I'm making it generic for practice but, is it inefficient to use generics, or just more difficult? I implemented it already without generics, I'm just going back through to get a better grip on them.
Can it be I stayed away too long? Did you miss these rhymes while I was gone?
Acrofales
Profile Joined August 2010
Spain18312 Posts
Last Edited: 2015-12-02 20:55:48
December 02 2015 20:53 GMT
#13683
No, generics are fine. I'm just trying to figure out why you would want them there. If you have a min stack, your stack has to support min(). If you have a normal stack, your stack does not support min(). Therefore I don't see why you want to pass the type of node as an argument. It's predefined by you declaring it as a Stack or as a MinStack. And I'm not sure why this should ever be part of the API of a stack. As a user, I don't want to know anything about StackNode. I want my stack to work when I push and pop with the right objects. I don't care whether it uses StackNodes, an array or twinkly fairy dust to implement the stack (unless I hit a performance bump somewhere). The same for a min stack, a max stack or a pancake-with-cheese stack. When I actually use the stack, I know what I'll need, and will thus declare it as such.

Passing this by argument seems like a bad idea. The least bad, would be with a boolean or enum argument stating what type of stack should be created, but this is extremely unjavalike.

EDIT: just to be clear, generics for the type of object to be stored in the Stack is exactly the type of thing that generics are good for, so Stack<String> or Stack<Jabberwocky> makes perfect sense. Just not Stack<MinstackNode<Jabberwocky>, Jabberwocky>.
spinesheath
Profile Blog Joined June 2009
Germany8679 Posts
December 02 2015 20:55 GMT
#13684
Typically a stack only has one generic argument and that's the type of the data it holds. I don't know a reason why I would want to specify a "StackNode" type. I want to put stuff on the stack and pop it off. Let the stack figure out how to hold that stuff.

In C# you could specify that your generic type parameter needs to have a parameterless constructor, but it doesn't seem like Java has that functionality. So you're left with using a IStackNodeFactory interface that has a CreateStackNode method, or trying to find and call a somehow fitting constructor via reflection (which is like rolling a dice). The factory requires the user to provide yet another class just to use your stack. For a simple container type that's waaaaaaaay to complex.
If you have a good reason to disagree with the above, please tell me. Thank you.
WarSame
Profile Blog Joined February 2010
Canada1950 Posts
Last Edited: 2015-12-02 20:58:15
December 02 2015 20:56 GMT
#13685
Ahhh great point. So I should allow them to, for example, make a MinStack, but then just fill it with MinStackNodes automatically? It ended up this way because I was having problems with inheriting MinStack from Stack - I'll give your feedback a whirl and see what I come up with. Thanks!

EDIT: I'm not really sure how to replace the StackNodes with MinStackNodes after the inheritance, though. That was the original reason that I did all the weird stuff I didd.
Can it be I stayed away too long? Did you miss these rhymes while I was gone?
WarSame
Profile Blog Joined February 2010
Canada1950 Posts
December 02 2015 21:08 GMT
#13686
On December 03 2015 05:55 spinesheath wrote:
Typically a stack only has one generic argument and that's the type of the data it holds. I don't know a reason why I would want to specify a "StackNode" type. I want to put stuff on the stack and pop it off. Let the stack figure out how to hold that stuff.

In C# you could specify that your generic type parameter needs to have a parameterless constructor, but it doesn't seem like Java has that functionality. So you're left with using a IStackNodeFactory interface that has a CreateStackNode method, or trying to find and call a somehow fitting constructor via reflection (which is like rolling a dice). The factory requires the user to provide yet another class just to use your stack. For a simple container type that's waaaaaaaay to complex.

It seemed like a decent abstraction to me - the node needs to store data, and it needs to store the next node. I don't know if you can do those in Java without a class holding them, but I'm really not sure. Anyway, I'm trying to figure one more thing out: my Stack now just has the 1 generic type, but when I extend it in my MinStack I have problems because it assumes I want to use StackNodes. I want to use MinStackNodes, though, so that I can keep track of the min. Is it possible for me to implement this while still extending?
Can it be I stayed away too long? Did you miss these rhymes while I was gone?
Acrofales
Profile Joined August 2010
Spain18312 Posts
December 02 2015 21:08 GMT
#13687
On December 03 2015 05:56 WarSame wrote:
Ahhh great point. So I should allow them to, for example, make a MinStack, but then just fill it with MinStackNodes automatically? It ended up this way because I was having problems with inheriting MinStack from Stack - I'll give your feedback a whirl and see what I come up with. Thanks!

EDIT: I'm not really sure how to replace the StackNodes with MinStackNodes after the inheritance, though. That was the original reason that I did all the weird stuff I didd.

But that's a different problem. What I would probably do in this case is just cast my MinStackNodes to StackNodes for the stack functionalities, but without more code it's hard to say for sure that this is the best solution.
WarSame
Profile Blog Joined February 2010
Canada1950 Posts
December 02 2015 21:13 GMT
#13688
That seems like it'd be a good idea, but I don't know how to do that in my code. I'll pastebin the code:

Stack and StackNode

MinStack and MinStackNode
Can it be I stayed away too long? Did you miss these rhymes while I was gone?
Acrofales
Profile Joined August 2010
Spain18312 Posts
Last Edited: 2015-12-02 21:49:18
December 02 2015 21:44 GMT
#13689
Well, you're going to have to refactor your push...

In your Stack:


public void push(E data) {
StackNode<E> datanode = new StackNode<>(data);
internalPush(datanode);
}

protected void internalPush(StackNode datanode) {
//all the rest of the push code here
}

And then in your MinStack you can use internalPush with MinStackNodes. If you don't do something like this, your Stack will always use StackNodes, and never MinStackNodes.

That said, it might just be better to have your MinStack not extend Stack, but be a wrapper around it, using the Decorator pattern (https://en.wikipedia.org/wiki/Decorator_pattern). Many roads lead to Rome. I personally prefer the Decorator pattern, it is neater. But it's quite a lot of effort for just adding one extension. If you plan on decorating your stack in other ways than just min, it's worth it. Otherwise it's a load of refactoring for little gain.

EDIT: nvm
EDIT 2: yeah, stick with Wikipedia. That example had all kinda shit wrong with it :D
WarSame
Profile Blog Joined February 2010
Canada1950 Posts
December 02 2015 21:48 GMT
#13690
Alright, I'll look into both of those. Thanks for all of the options and clear explanations. I'm here to learn, so it doesn't matter to me what takes longer - I've got 8 hours a day for 1.5 months to do this.
Can it be I stayed away too long? Did you miss these rhymes while I was gone?
spinesheath
Profile Blog Joined June 2009
Germany8679 Posts
December 02 2015 22:20 GMT
#13691
If you're subclassing, it's easy to create either kind of StackNode, just use a protected virtual CreateStackNode method that returns an instance of an IStackNode interface. In the normal Stack version, it creates StackNodes, in MinStack you override it to create MinStackNodes. And since we're talking patterns already, that would make your Push a Template Method that calls a Factory Method.
If you have a good reason to disagree with the above, please tell me. Thank you.
waffelz
Profile Blog Joined June 2012
Germany711 Posts
Last Edited: 2015-12-03 07:01:34
December 03 2015 06:52 GMT
#13692
Could someone give me a hint where should I look if I want to know how comparing really works?
Like:

if (string a == string b)
{
}

I mean on a deep down level. How exactly does the comparison work? Did the strings get compared for each bit or is there some optimisation involved (I assume so in terms of strings). Do they get compared per character? How does it work on other data-types? Just need a general direction where to go for this kind of stuff since google keeps flooding me with “how to”-articles.

I have to write a small paper on the subject of searching this semester and would like to actually figure something out myself rather than acting like I did by simply comparing different search algorithms and thought that figuring out a few improved algorithms for cases where you normally would have to use linear searchalgorithms / lazysearch because your data might be unsorted / doesn’t support the usual algorithms properly.

EDIT: I should also note that my results aren’t that important, focus of this is the scientific progress, so it would be fine if I came to the conclusion that my algorithms aren’t better (which I assume is most likely besides in some very special cases). I just liked to include some actual testing where the results have the potential to surprise me while also being able to justify the time I need to sink in compared to the low CP I get for it.
RIP "The big travis CS degree thread", taken from us too soon | Honourable forum princess, defended by Rebs-approved white knights
teamamerica
Profile Blog Joined July 2010
United States958 Posts
December 03 2015 07:49 GMT
#13693
On December 03 2015 15:52 waffelz wrote:
Could someone give me a hint where should I look if I want to know how comparing really works?
Like:

if (string a == string b)
{
}

I mean on a deep down level. How exactly does the comparison work? Did the strings get compared for each bit or is there some optimisation involved (I assume so in terms of strings). Do they get compared per character? How does it work on other data-types? Just need a general direction where to go for this kind of stuff since google keeps flooding me with “how to”-articles.

I have to write a small paper on the subject of searching this semester and would like to actually figure something out myself rather than acting like I did by simply comparing different search algorithms and thought that figuring out a few improved algorithms for cases where you normally would have to use linear searchalgorithms / lazysearch because your data might be unsorted / doesn’t support the usual algorithms properly.

EDIT: I should also note that my results aren’t that important, focus of this is the scientific progress, so it would be fine if I came to the conclusion that my algorithms aren’t better (which I assume is most likely besides in some very special cases). I just liked to include some actual testing where the results have the potential to surprise me while also being able to justify the time I need to sink in compared to the low CP I get for it.


Depends on lang I'd say for comparison like that. Java == will compare memory references which is why you're advised to use .equals (with a cavaeat about interned strings will work with ==, interned strings being either those in the source code already or those with interned called on). Actual implementation of .equals() on String class is fairly boring. I don't know of any huge secrets for actually checking equality besides well...actually checking each char. There's tradesoffs you can make in accuracy (see bloom filters) to get faster results but then you're trading off accurary (which is why Java String equals doesn't use hashCode, which would be a cached value after it's first computed).

If you're interested in searching I'd review search algorithms in the context of modern processors with many cores / numa memory and real world implementations (e.g. picking good pivot for quicksorts to avoid pathological cases).
RIP GOMTV. RIP PROLEAGUE.
teamamerica
Profile Blog Joined July 2010
United States958 Posts
Last Edited: 2015-12-03 08:19:56
December 03 2015 08:04 GMT
#13694
On December 03 2015 05:16 WarSame wrote:
So I've been at the library 9-6 for today and yesterday preparing for my job. I've run into a snag with Java, and I can't understand the answers I've googled.

I'm creating a generic stack Stack<T extends StackNode<E>, E>, with StackNode<E>. However, I can't declare a new StackNode in my Stack properly. Using
T node = new T(data);
throws an error on the T, saying it can't be instantiated. Google results say this is due to erasure, but not really how to get around it. This seems to be the best answer, but I can't figure out how to apply it to my specific case. Where do I place the function mentioned? Where do I call it from? How do you call it? The comments tried to clear it up but I can't understand those well enough, either.

My current attempt in Stack looks like:


public class Stack<T extends StackNode<E>, E> {
private T top;
private int size;
public Stack(E data){
T node = createContents(T.class, data);
this.top = node;
}
}


and in StackNode:


public class StackNode<E> {
private E data;
private StackNode<E> next;
public E createContents(Class<E> clazz, E data) throws InstantiationException, IllegalAccessException{
return clazz.newInstance();
}
public StackNode(E data){
this.data = data;
this.next = null;
}
}


However, Stack has 2 errors - it can't find CreateContents and it says that T.class is an illegal literal. Further, the "constructor" is only able to call the empty constructor. I think that can be handled by calling another function that sets the value of data, although I'm not sure how to get the value where it needs to be. If anyone can give me advice on how to do this or tell me a better way to do this I'm all ears. Thanks!


I'd also mention that reflection seems unnecessary. StackNode seems like a prime candidate for a private static nested class inside stack, no need for it to be public. I see what you're going for with MinStack but I'd argue that the node knowing the minimum is confusing concerns. What is minimum in the context of a node? It doesn't even know it's part of a bigger data structure. If you're going to have that you can just keep track of min on the stack itself.

Not written Java in a while but this is how I'd imagine itd look. Note I use a Comparator rather then using Comparable because a lot of classes don't implement Comparable so why force someone to wrap them to use your cool codez? See https://docs.oracle.com/javase/7/docs/api/java/util/TreeSet.html as an example for how a Java collection that inherits from an unordered collection offers an ordered subclass.


class Stack<E> {
private static class Node<E> {
... //don't need to keep this private can just access fields directly really, this class is hidden in stack already
}
...
}

class MinStack extends Stack<E> {
private Node minimum;

public MinStack(Comparator<E> comparator) {
...
}

@Override
public Node push (E data) {
super(data);
//do your logic to update minimum using compartor
}

public E minimum () { ... }
}
RIP GOMTV. RIP PROLEAGUE.
Ropid
Profile Joined March 2009
Germany3557 Posts
Last Edited: 2015-12-03 08:26:33
December 03 2015 08:25 GMT
#13695
On December 03 2015 15:52 waffelz wrote:


It depends on the language you talk about, but string is probably not a basic data type and is defined in the language itself and you have the source of that installed somewhere. You could look up the source of "==", though it's probably terrible to read.

If you use an IDE like Visual Studio for your stuff, you could try to step into the "==" function call with the debugger. You could follow what's done on the two strings step-by-step.
"My goal is to replace my soul with coffee and become immortal."
waffelz
Profile Blog Joined June 2012
Germany711 Posts
December 03 2015 13:41 GMT
#13696
On December 03 2015 17:25 Ropid wrote:
It depends on the language you talk about, but string is probably not a basic data type and is defined in the language itself and you have the source of that installed somewhere. You could look up the source of "==", though it's probably terrible to read.

If you use an IDE like Visual Studio for your stuff, you could try to step into the "==" function call with the debugger. You could follow what's done on the two strings step-by-step.


Yeah I already assumed that there isn't a general approach to this, but hoped there would be a more elegant way then just checking through IDEs. Thank you nonetheless.
RIP "The big travis CS degree thread", taken from us too soon | Honourable forum princess, defended by Rebs-approved white knights
WarSame
Profile Blog Joined February 2010
Canada1950 Posts
December 03 2015 15:01 GMT
#13697
On December 03 2015 17:04 teamamerica wrote:
Show nested quote +
On December 03 2015 05:16 WarSame wrote:
So I've been at the library 9-6 for today and yesterday preparing for my job. I've run into a snag with Java, and I can't understand the answers I've googled.

I'm creating a generic stack Stack<T extends StackNode<E>, E>, with StackNode<E>. However, I can't declare a new StackNode in my Stack properly. Using
T node = new T(data);
throws an error on the T, saying it can't be instantiated. Google results say this is due to erasure, but not really how to get around it. This seems to be the best answer, but I can't figure out how to apply it to my specific case. Where do I place the function mentioned? Where do I call it from? How do you call it? The comments tried to clear it up but I can't understand those well enough, either.

My current attempt in Stack looks like:


public class Stack<T extends StackNode<E>, E> {
private T top;
private int size;
public Stack(E data){
T node = createContents(T.class, data);
this.top = node;
}
}


and in StackNode:


public class StackNode<E> {
private E data;
private StackNode<E> next;
public E createContents(Class<E> clazz, E data) throws InstantiationException, IllegalAccessException{
return clazz.newInstance();
}
public StackNode(E data){
this.data = data;
this.next = null;
}
}


However, Stack has 2 errors - it can't find CreateContents and it says that T.class is an illegal literal. Further, the "constructor" is only able to call the empty constructor. I think that can be handled by calling another function that sets the value of data, although I'm not sure how to get the value where it needs to be. If anyone can give me advice on how to do this or tell me a better way to do this I'm all ears. Thanks!


I'd also mention that reflection seems unnecessary. StackNode seems like a prime candidate for a private static nested class inside stack, no need for it to be public. I see what you're going for with MinStack but I'd argue that the node knowing the minimum is confusing concerns. What is minimum in the context of a node? It doesn't even know it's part of a bigger data structure. If you're going to have that you can just keep track of min on the stack itself.

Not written Java in a while but this is how I'd imagine itd look. Note I use a Comparator rather then using Comparable because a lot of classes don't implement Comparable so why force someone to wrap them to use your cool codez? See https://docs.oracle.com/javase/7/docs/api/java/util/TreeSet.html as an example for how a Java collection that inherits from an unordered collection offers an ordered subclass.


class Stack<E> {
private static class Node<E> {
... //don't need to keep this private can just access fields directly really, this class is hidden in stack already
}
...
}

class MinStack extends Stack<E> {
private Node minimum;

public MinStack(Comparator<E> comparator) {
...
}

@Override
public Node push (E data) {
super(data);
//do your logic to update minimum using compartor
}

public E minimum () { ... }
}

The problem with this is that every node needs to have its minimum in it. Say we do it where only the stack has the minimum, and from top(head) to bottom we have: "5,2,8,3". So the stack has its minimum as 2, let's say. We pop 5, it's still 2. We pop 2, what is it now? Does it search through the entire stack for it every time we pop off the min element? What if we have a 10,000 element stack with ints from 1 to 100? This is why I put the min on every node.

And for this reason I believe that I do need a min node class.

I'll look into a Comparator. Thanks
Can it be I stayed away too long? Did you miss these rhymes while I was gone?
solidbebe
Profile Blog Joined November 2010
Netherlands4921 Posts
December 03 2015 15:06 GMT
#13698
What is the exact purpose for a stack keeping track of the minimum element? It seems to me like you'd want either the FIFO functionality of the stack or an ascending ordered list.
That's the 2nd time in a week I've seen someone sig a quote from this GD and I have never witnessed a sig quote happen in my TL history ever before. -Najda
WarSame
Profile Blog Joined February 2010
Canada1950 Posts
December 03 2015 15:15 GMT
#13699
They ask you to implement it in CrackingTheCodingInterview and now that I've got stuck on it I can't bring myself to move past it. Who knows where it'd be useful? I can't really think of any applications, but maybe somewhere it'd be useful.
Can it be I stayed away too long? Did you miss these rhymes while I was gone?
WarSame
Profile Blog Joined February 2010
Canada1950 Posts
December 03 2015 17:10 GMT
#13700
Alright a much simpler question this time: they have a Tower of Hanoi example,but I think it might be wrong. They say, as one of the requirements: " A disk is slid off the top of one rod onto the next rod" so you can only go from tower 1 to 2 and 2 to 3 or the reverse. However, in their solution they seem to ignore this - they move all their disks except the bottom to the buffer tower, and then move the very bottom disk to the destination tower. This means that they skip tower 1, and move it from tower 1 to 3, which violates the requirement. Am I going crazy or is this an error? If you'd like me to paste the solution they have then let me know.
Can it be I stayed away too long? Did you miss these rhymes while I was gone?
Prev 1 683 684 685 686 687 1032 Next
Please log in or register to reply.
Live Events Refresh
Monday Night Weeklies
16:00
#56
RotterdaM1024
ZombieGrub149
LiquipediaDiscussion
[ Submit Event ]
Live Streams
Refresh
StarCraft 2
RotterdaM 1024
ZombieGrub149
ProTech90
StarCraft: Brood War
Shine 11
Counter-Strike
fl0m5124
pashabiceps1475
Heroes of the Storm
Liquid`Hasu420
Other Games
summit1g7953
Grubby3909
Mlord756
shahzam560
FrodaN443
uThermal440
B2W.Neo404
Trikslyr369
mouzStarbuck272
C9.Mang0237
UpATreeSC65
Mew2King64
Tefel13
fpsfer 2
Organizations
Dota 2
PGL Dota 2 - Main Stream2785
StarCraft 2
Blizzard YouTube
StarCraft: Brood War
BSLTrovo
[ Show 18 non-featured ]
StarCraft 2
• Reevou 5
• IndyKCrew
• sooper7s
• AfreecaTV YouTube
• Migwel
• intothetv
• LaughNgamezSOOP
• Kozan
StarCraft: Brood War
• blackmanpl 55
• FirePhoenix5
• STPLYoutube
• ZZZeroYoutube
• BSLYoutube
Dota 2
• masondota2264
League of Legends
• TFBlade915
Other Games
• imaqtpie933
• WagamamaTV306
• Shiphtur84
Upcoming Events
OSC
2h 55m
ByuN vs Shameless
PiGosaur Cup
1d 2h
Replay Cast
1d 11h
The PondCast
2 days
OSC
3 days
CranKy Ducklings
3 days
GSL
4 days
Maru vs ShoWTimE
Classic vs Reynor
herO vs Lambo
Solar vs Clem
BSL22 NKC (BSL vs China)
4 days
XuanXuan vs Jaystar
Mihu vs Messiah
eOnzErG vs Dewalt
Bonyth vs Jaystar
TerrOr vs Messiah
XuanXuan vs Mihu
eOnzErG vs Jaystar
Replay Cast
5 days
GSL
5 days
[ Show More ]
Patches Events
5 days
BSL22 NKC (BSL vs China)
5 days
Dewalt vs Messiah
Bonyth vs Mihu
TerrOr vs XuanXuan
eOnzErG vs Messiah
Jaystar vs Mihu
Dewalt vs XuanXuan
Bonyth vs TerrOr
Replay Cast
6 days
WardiTV Weekly
6 days
Liquipedia Results

Completed

Acropolis #4 - GSB
uThermal 2v2 2026 Main Event
Heroes Pulsing #1

Ongoing

IPSL Spring 2026
KCM Race Survival 2026 Season 2
Acropolis #4
CSCL: Masked Kings S4
YSL S3
BSL 22 Non-Korean Championship
Proleague 2026-06-15
SCTL 2026 Spring
Maestros of the Game 2
WardiTV Spring 2026
Murky Cup 2026
Heroes Pulsing #2
IEM Cologne Major 2026
Stake Ranked Episode 2
CS Asia Championships 2026
Asian Champions League 2026
IEM Atlanta 2026
PGL Astana 2026
BLAST Rivals Spring 2026
IEM Rio 2026
PGL Bucharest 2026
Stake Ranked Episode 1

Upcoming

CSL 2026 Summer (S21)
CSLAN 4
Blizzard Classic Cup 2026
Kung Fu Cup 2026 Grand Finals
RSL Revival: Season 6
CranK Gathers Season 4: BW vs SC2 Team League
HSC XXIX
Douyu Cup 2026
BCC 2026
Heroes Pulsing #3
BLAST Open Fall 2026
Esports World Cup 2026
BLAST Bounty Summer 2026
BLAST Bounty Summer Qual
Stake Ranked Episode 3
XSE Pro League 2026
TLPD

1. ByuN
2. TY
3. Dark
4. Solar
5. Stats
6. Nerchio
7. sOs
8. soO
9. INnoVation
10. Elazer
1. Rain
2. Flash
3. EffOrt
4. Last
5. Bisu
6. Soulkey
7. Mini
8. Sharp
Sidebar Settings...

Advertising | Privacy Policy | Terms Of Use | Contact Us

Original banner artwork: Jim Warren
The contents of this webpage are copyright © 2026 TLnet. All Rights Reserved.