• Log InLog In
  • Register
Liquid`
Team Liquid Liquipedia
EDT 13:32
CEST 19:32
KST 02:32
  • 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
Code S Season 2 (2026): RO4 and Finals Preview5TL.net Map Contest #22 - Voting & Ladder Map Selection5Code S Season 2 (2026) - RO8 Preview5[ASL21] Finals Preview: Two Legacies21Code S Season 2 (2026) - RO12 Preview2
Community News
[BSL22] Non-Korean Championship from 13 to 28 June0Weekly Cups (May 25-31): Clem doubles, 2v2 circuit heads toward finale0StarCraft II 5.0.16 PTR Patch Notes may 26th151Weekly Cups (May 18-24): MaxPax wins doubles0Crank Gathers Season 4: BW vs SC2 Team League6
StarCraft 2
General
Code S Season 2 (2026): RO4 and Finals Preview What kind of tool would you be interested in? TL Poll: How do you feel about the 5.0.16 PTR balance changes? Oliveira Would Have Returned If EWC Continued TL.net Map Contest #22 - Voting & Ladder Map Selection
Tourneys
GSL Code S Season 2 (2026) Maestros of The Game 2 announcement and schedule ! Crank Gathers Season 4: BW vs SC2 Team League Sparkling Tuna Cup - Weekly Open Tournament RSL Revival: Season 5 - Qualifiers and Main Event
Strategy
[G] Having the right mentality to improve
Custom Maps
[D]RTS in all its shapes and glory <3
External Content
The PondCast: SC2 News & Results Mutation # 528 Infection Detected Welcome to the External Content forum Mutation # 527 Hell Train
Brood War
General
FlaSh's ASL S21 Finals Review BW animated web series: seeking contributors 25 Years Since Brood War Patch 1.08 FlaShFTW vs A.Alm Grudge Match Event The Korean Terminology Thread
Tourneys
[ASL21] Grand Finals [BSL22] Grand Finals - Sunday 21:00 CEST [Megathread] Daily Proleagues Escore Tournament StarCraft Season 2
Strategy
Any training maps people recommend? Why doesn't anyone use restoration? Muta micro map competition [G] Hydra ZvZ: An Introduction
Other Games
General Games
Stormgate/Frost Giant Megathread Nintendo Switch Thread Path of Exile Warcraft III: The Frozen Throne ZeroSpace Megathread
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 Heroes of StarCraft mini-set
TL Mafia
Vanilla Mini Mafia Mafia Game Mode Feedback/Ideas TL Mafia Community Thread Five o'clock TL Mafia
Community
General
US Politics Mega-thread Dating: How's your luck? Trading/Investing Thread Russo-Ukrainian War Thread How cold is too cold to be outdoors?
Fan Clubs
The herO Fan Club!
Media & Entertainment
Movie Discussion! [Manga] One Piece
Sports
Formula 1 Discussion 2024 - 2026 Football Thread McBoner: A hockey love story TeamLiquid Health and Fitness Initiative For 2023
World Cup 2022
Tech Support
Computer Build, Upgrade & Buying Resource Thread Facing Challenges in Mobile App Development
TL Community
The Automated Ban List
Blogs
I'm an arrogant trash talke…
FlaShFTW
Gauntlet SC2: A Retrospectiv…
Ctone23
Esportsmanship: How to NOT B…
TrAiDoS
Why RTS gamers make better f…
gosubay
ASL S21 English Commentary…
namkraft
StarCraft improvement
iopq
Customize Sidebar...

Website Feedback

Closed Threads



Active: 6124 users

The Big Programming Thread - Page 786

Forum Index > General Forum
Post a Reply
Prev 1 784 785 786 787 788 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.
Deleted User 3420
Profile Blog Joined May 2003
24492 Posts
October 24 2016 22:59 GMT
#15701
We had a few non-graded java recursion exercises on a handout today

one of them was to: "given a string, compute recursively a new string where identical chars that are adjacent in the original string are separated from each other by a "*"

for example, aabba would be ---> a*ab*ba

Wanted to know how any of you would do that. Here is my code if there are any critiques


private static String temp;
private static String newString = "";

public static String pairStar(String str) {

if(str.length() == 1) {
newString = newString + str;
return newString;
}

if(str.charAt(0) == str.charAt(1)) {
temp = str.charAt(0) + "*";
} else {
temp = Character.toString(str.charAt(0));
}

newString = newString + temp;

if(str.length() > 1) {
pairStar(str.substring(1));
}

return newString;

}
Blisse
Profile Blog Joined July 2010
Canada3710 Posts
Last Edited: 2016-10-24 23:12:48
October 24 2016 23:08 GMT
#15702
Just a note that I'm not sure using static variables totally counts as recursion. The approach looks good though I have styling preferences.

Also would crash on empty string.
Don't need the temp variable, just append directly.
Would recommend StringBuilder.
There is no one like you in the universe.
AKnopf
Profile Blog Joined March 2011
Germany259 Posts
Last Edited: 2016-10-24 23:18:53
October 24 2016 23:18 GMT
#15703
While this is technically recursive, you still use those temp and newString variables outside of your recursion. Usually the solution that is aimed at with these kinds of excercises want you to solve the whole problem in the recursion itself; in a kind of functionally way. This means that your recursive function should have no side effects. I think the desired solution should only use input parameters, local variables and the return parameter.

Here is some pseudo code that might help you:



star(string):
if string.length == 1
return string
else
return star(string.first, string.rest)

star(char, string):
if char == string.frist
return char + "*" + star(string)
else
return char + star(string)


Notice that we have two overloads of the function "char":
- One with one parameter named string
- One with two parameters named char and string
Do not confuse the names with java types. I would strongly recommend you use only the type String in your solution. :-)

I guess this solution leaves something for discussion: Some people might find the indirect recursion (two functions call each other recursively) too difficult to understand and might want to write it all in one function.
The world - its a funny place
Acrofales
Profile Joined August 2010
Spain18302 Posts
Last Edited: 2016-10-24 23:27:40
October 24 2016 23:26 GMT
#15704
I tend to do recursion until 0, [] or "" for that very reason. I also agree with blisse that using a field to store your return value in is cheating.

I would probably do it as follows:


recursivestring(teststring);

String recursivestring(test) {
if test == null or test.size() = 0 return "";
else {
Char s = test.charAt(0)
String result = recursivestring(test.substring(1, test.size());
if result.size() = 0 return s;
if s.equals(result.charAt(0))
result = s + "*" + result;
else
result = s + result;
return result;
}


But in proper Java, rather than shitty pseudocode that i mashed up on my phone.

Ninja'd
raNazUra
Profile Joined December 2012
United States10 Posts
Last Edited: 2016-10-24 23:31:13
October 24 2016 23:27 GMT
#15705
On October 25 2016 07:59 travis wrote:
We had a few non-graded java recursion exercises on a handout today

one of them was to: "given a string, compute recursively a new string where identical chars that are adjacent in the original string are separated from each other by a "*"

for example, aabba would be ---> a*ab*ba

Wanted to know how any of you would do that. Here is my code if there are any critiques

+ Show Spoiler +

private static String temp;
private static String newString = "";

public static String pairStar(String str) {

if(str.length() == 1) {
newString = newString + str;
return newString;
}

if(str.charAt(0) == str.charAt(1)) {
temp = str.charAt(0) + "*";
} else {
temp = Character.toString(str.charAt(0));
}

newString = newString + temp;

if(str.length() > 1) {
pairStar(str.substring(1));
}

return newString;

}


Yeah, like Blisse, I'm not sure that using static variables would be ok. Technically, you're still using recursion, since you call the function from within itself, but it's not the cleanest solution.


public static String pairStar(String str) {
if (str.length() <= 1) {
return str;
}
if (str.charAt(0) == str.charAt(1)) {
return str.charAt(0) + "*" + pairStar(str.substring(1));
}
else {
return str.charAt(0) + pairStar(str.substring(1));
}
}


That would be the classic recursion way for me. You could make it a bit more concise:


public static String pairStar(String str) {
if (str.length() <= 1) {
return str;
}
String matchChar = str.charAt(0) == str.charAt(1) ? "*" : ""; // Or whatever Java's ternary operator is
return str.charAt(0) + matchChar + pairStar(str.substring(1));
}


and you could do some stuff to make it tail-recursive, but I'm not sure if Java is able to take advantage of that?

EDIT: AKnopf, I'm curious why you would use indirect recursion on a simple problem like this. Is there an inherent advantage to it, or do you just tend towards that kind of solution? Just curious.

Speak the truth, even if your voice shakes
Manit0u
Profile Blog Joined August 2004
Poland17756 Posts
Last Edited: 2016-10-24 23:50:34
October 24 2016 23:48 GMT
#15706

public static String parseStr(String str) {
if (str == null) {
return "";
}

if (str.length() < 2) {
return str;
}

if (str.charAt(0) == str.charAt(1)) {
return str.charAt(0) + "*" + parseStr(str.substring(1));
}

return str.charAt(0) + parseStr(str.substring(1));
}



and you could do some stuff to make it tail-recursive, but I'm not sure if Java is able to take advantage of that?


AFAIK Java doesn't support TRE. But that might've changed.
Time is precious. Waste it wisely.
Hhanh00
Profile Joined May 2016
34 Posts
Last Edited: 2016-10-25 01:24:44
October 25 2016 01:24 GMT
#15707
Java doesn't support TCO and won't anytime soon.

Using a functional language:


let pair() =
let rec pair_r(s: char list)(acc: char list) =
match s with
| a :: b :: xs ->
if a = b then pair_r s.Tail ('*' :: a :: acc) else pair_r s.Tail (a :: acc)
| [a] -> a :: acc
| [] -> acc
pair_r ['A'; 'A'; 'B'; 'C'; 'C'; 'D'] [] |> List.rev


Which is more elegant in my opinion (and tail recursive).

PS: Normally, you would use a foldr though.
Acrofales
Profile Joined August 2010
Spain18302 Posts
October 25 2016 08:27 GMT
#15708
On October 25 2016 10:24 Hhanh00 wrote:
Java doesn't support TCO and won't anytime soon.

Using a functional language:


let pair() =
let rec pair_r(s: char list)(acc: char list) =
match s with
| a :: b :: xs ->
if a = b then pair_r s.Tail ('*' :: a :: acc) else pair_r s.Tail (a :: acc)
| [a] -> a :: acc
| [] -> acc
pair_r ['A'; 'A'; 'B'; 'C'; 'C'; 'D'] [] |> List.rev


Which is more elegant in my opinion (and tail recursive).

PS: Normally, you would use a foldr though.

Yes. None of that exists in Java, though.

In general, I think learning/teaching recursion in Java is pretty shitty and I would never program the simple string replacement thingy like that in Java using recursion. Yes, it's possible, but it is clunky in comparison to a simple loop, and almost certainly far far slower as well. Whereas if you learn recursion in a language that was actually designed for it (I learned in Haskell), you can appreciate the elegance and power of the method. And then you learn about folds and your mind is blown completely (and your code will never ever be legible again to anybody).
Ilikestarcraft
Profile Blog Joined November 2004
Korea (South)17743 Posts
October 25 2016 09:12 GMT
#15709
I did not expect that last line lol
ils
"Nana is a goddess. Or at very least, Nana is my goddess." - KazeHydra
Manit0u
Profile Blog Joined August 2004
Poland17756 Posts
Last Edited: 2016-10-25 13:06:23
October 25 2016 12:52 GMT
#15710
I did a bit of experimentation out of curiosity:


public static String star(String s, String r) {
if (s.length() < 2) {
return r.length() == 0 ? s : r + s;
}

if (s.charAt(0) == s.charAt(1)) {
return star(s.substring(1), r + s.charAt(0) + "*");
}

return star(s.substring(1), r + s.charAt(0));
}


^ This is more elegant but produces 117 calls.


public static String star(String s) {
if (s.length() < 2) {
return s;
}

if (s.charAt(0) == s.charAt(1)) {
return s.charAt(0) + "*" + star(s.substring(1));
}

return s.charAt(0) + star(s.substring(1));
}


The uglier thing does only 87 calls.

Both tested with just "aabba".

I guess the difference is in the ternary operator. Not sure how to get rid of it though...
Time is precious. Waste it wisely.
Deleted User 101379
Profile Blog Joined August 2010
4849 Posts
October 25 2016 13:26 GMT
#15711
I've tried a few variations and compared them to the last posted, i.e. Manit0u's, since I was bored at work (tomorrow is my last day at my current job):

package test;

class Test
{
private static String StarStringBuilder(String input, int index, StringBuilder output)
{
if (index >= input.length()) return output.toString();
if (index > 0 && input.charAt(index) == input.charAt(index - 1))
{
output.append('*');
}
return StarStringBuilder(input, index + 1, output.append(input.charAt(index)));
}

private static String StarString(String input, int index, String output)
{
if (index >= input.length()) return output;
if (index > 0 && input.charAt(index) == input.charAt(index - 1))
{
output += '*';
}
return StarString(input, index + 1, output + input.charAt(index));
}

public static String Manit0uStar2(String s) {
if (s.length() < 2) {
return s;
}

if (s.charAt(0) == s.charAt(1)) {
return s.charAt(0) + "*" + Manit0uStar2(s.substring(1));
}

return s.charAt(0) + Manit0uStar2(s.substring(1));
}

public static String Manit0uStar1(String s, String r) {
if (s.length() < 2) {
return r.length() == 0 ? s : r + s;
}

if (s.charAt(0) == s.charAt(1)) {
return Manit0uStar1(s.substring(1), r + s.charAt(0) + "*");
}

return Manit0uStar1(s.substring(1), r + s.charAt(0));
}

public static void main(String[] args)
{
long startTime = 0;
long endTime = 0;

startTime = System.currentTimeMillis();
for (int i = 0; i < 100000; ++i)
{
StarStringBuilder("aabba", 0, new StringBuilder());
}
endTime = System.currentTimeMillis();
System.out.printf("StringBuilder: ").println(endTime - startTime);

startTime = System.currentTimeMillis();
for (int i = 0; i < 100000; ++i)
{
StarString("aabba", 0, "");
}
endTime = System.currentTimeMillis();
System.out.printf("String: ").println(endTime - startTime);

startTime = System.currentTimeMillis();
for (int i = 0; i < 100000; ++i)
{
Manit0uStar1("aabba", "");
}
endTime = System.currentTimeMillis();
System.out.printf("Manit0u 1: ").println(endTime - startTime);

startTime = System.currentTimeMillis();
for (int i = 0; i < 100000; ++i)
{
Manit0uStar2("aabba");
}
endTime = System.currentTimeMillis();
System.out.printf("Manit0u 2: ").println(endTime - startTime);
}
}


Result:
StringBuilder: 27
String: 44
Manit0u 1: 67
Manit0u 2: 82


StringBuilders are good.
spinesheath
Profile Blog Joined June 2009
Germany8679 Posts
October 25 2016 13:32 GMT
#15712
Except that you're doing this in Java with static input. The whole inner block can theoretically be optimized away entirely for all these loops (determine that there are no side effects and the return value is never used). At the very least the JIT and Branch Predictor will mess you up big time. In other words: This performance data is not representative.
If you have a good reason to disagree with the above, please tell me. Thank you.
Deleted User 101379
Profile Blog Joined August 2010
4849 Posts
Last Edited: 2016-10-25 13:43:46
October 25 2016 13:41 GMT
#15713
On October 25 2016 22:32 spinesheath wrote:
Except that you're doing this in Java with static input. The whole inner block can theoretically be optimized away entirely for all these loops (determine that there are no side effects and the return value is never used). At the very least the JIT and Branch Predictor will mess you up big time. In other words: This performance data is not representative.


Ok, static input removed, I'm now using a randomly generated string of 100 characters length.

	public static void main(String[] args)
{
long startTime = 0;
long endTime = 0;

int count = 0;
Random random = new Random();
StringBuilder randomStringBuilder = new StringBuilder();
for (int i = 0; i < 100; ++i)
{
randomStringBuilder.append((char)(random.nextInt(26) + (int)'a'));
}
String randomString = randomStringBuilder.toString();
System.out.println(randomString);

String check = StarStringBuilder(randomString, 0, new StringBuilder());

startTime = System.currentTimeMillis();
for (int i = 0; i < 100000; ++i)
{
if (StarStringBuilder(randomString, 0, new StringBuilder()).equals(check))
{
++count;
}
}
endTime = System.currentTimeMillis();
System.out.printf("StringBuilder: ").println(endTime - startTime);

startTime = System.currentTimeMillis();
for (int i = 0; i < 100000; ++i)
{
if (StarString(randomString, 0, "").equals(check))
{
++count;
}
}
endTime = System.currentTimeMillis();
System.out.printf("String: ").println(endTime - startTime);

startTime = System.currentTimeMillis();
for (int i = 0; i < 100000; ++i)
{
if (Manit0uStar1(randomString, "").equals(check))
{
++count;
}
}
endTime = System.currentTimeMillis();
System.out.printf("Manit0u 1: ").println(endTime - startTime);

startTime = System.currentTimeMillis();
for (int i = 0; i < 100000; ++i)
{
if (Manit0uStar2(randomString).equals(check))
{
++count;
}
}
endTime = System.currentTimeMillis();
System.out.printf("Manit0u 2: ").println(endTime - startTime);

System.out.println(StarStringBuilder(randomString, 0, new StringBuilder()).equals(StarString(randomString, 0, "")));
System.out.println(StarString(randomString, 0, "").equals(Manit0uStar1(randomString, "")));
System.out.println(Manit0uStar1(randomString, "").equals(Manit0uStar2(randomString)));
System.out.println(StarStringBuilder(randomString, 0, new StringBuilder()));
System.out.println(count);
}


Result:
qqzbgxoksvandahebthhpoxhiuiwfoxijgveoidclxudatdpolqilkjokwvlxdriblhwfdqsczmnjcxchtuefqdcxhkigvglqjin
StringBuilder: 107
String: 1205
Manit0u 1: 1134
Manit0u 2: 867
true
true
true
q*qzbgxoksvandahebth*hpoxhiuiwfoxijgveoidclxudatdpolqilkjokwvlxdriblhwfdqsczmnjcxchtuefqdcxhkigvglqjin
400000
slmw
Profile Blog Joined October 2010
Finland233 Posts
October 25 2016 13:57 GMT
#15714
That's still a static input in the context of the loops.
Manit0u
Profile Blog Joined August 2004
Poland17756 Posts
October 25 2016 13:59 GMT
#15715
Heh, just for fun:


<?php

function star($str)
{
return preg_replace_callback('/(.)\1+/', function($matches) {
return implode('*', str_split($matches[0], 1));
},
$str
);
}

$start = getrusage();

echo star('aabba') . PHP_EOL;

$end = getrusage();

function getRuntime($start, $end, $measurement)
{
return ($end["ru_{$measurement}.tv_sec"] * 1000 + intval($end["ru_{$measurement}.tv_usec"] / 1000))
- ($start["ru_{$measurement}.tv_sec"] * 1000 + intval($start["ru_{$measurement}.tv_usec"] / 1000));
}

echo "Process took ".getRuntime($start, $end, 'utime')."ms for computations".PHP_EOL;
echo "Process spent ".getRuntime($start, $end, 'stime')."ms in system calls".PHP_EOL;

// ---- OUTPUT ----
a*ab*ba
Process took 0ms for computations
Process spent 0ms in system calls


Does Java have equivalent of preg_replace_callback() from PHP?
Time is precious. Waste it wisely.
Acrofales
Profile Joined August 2010
Spain18302 Posts
October 25 2016 13:59 GMT
#15716
Lol. Travis, were you expecting this? :D
Manit0u
Profile Blog Joined August 2004
Poland17756 Posts
October 25 2016 14:26 GMT
#15717
On October 25 2016 22:59 Acrofales wrote:
Lol. Travis, were you expecting this? :D


Hehe. I guess that no one could've predicted that

Also, I've learned today that JVM has full support for dynamic typing, TCO and other funky shit - just not for Java
Time is precious. Waste it wisely.
Deleted User 3420
Profile Blog Joined May 2003
24492 Posts
October 25 2016 14:27 GMT
#15718
lol no this is great, love the participation.

I'll post the "hard" exercise that was included since you guys seem to enjoy this. I haven't tried it yet, I might this weekend but now I have to study for my calc 2 exam until friday.


Hard exercise:

Your method parameter is an array of ints. The method is a boolean. The goal is to look at the ints and see if you could possibly return 2 arrays from it, both having the same "total" within it.

For example if you were passed {2, 2} it would be true. {2, 3, 2, 3} would be true. {2, 3} would be false. {5, 2, 3} would be true. {5, 2, 4} would be false. {2, 6, 2, 2} would be true. Etc. Have fun!


Oh and it's supposed to use recursion, so no loops. You can make a recursive helper method, though.
Hhanh00
Profile Joined May 2016
34 Posts
October 25 2016 14:40 GMT
#15719
On October 25 2016 23:26 Manit0u wrote:
Show nested quote +
On October 25 2016 22:59 Acrofales wrote:
Lol. Travis, were you expecting this? :D


Hehe. I guess that no one could've predicted that

Also, I've learned today that JVM has full support for dynamic typing, TCO and other funky shit - just not for Java


JVM has no support for TCO. In Scala, TRE is done by the compiler but does not cover mutual recursion. That's why there are trampolines in scalaz.
Manit0u
Profile Blog Joined August 2004
Poland17756 Posts
October 25 2016 14:44 GMT
#15720
On October 25 2016 23:40 Hhanh00 wrote:
Show nested quote +
On October 25 2016 23:26 Manit0u wrote:
On October 25 2016 22:59 Acrofales wrote:
Lol. Travis, were you expecting this? :D


Hehe. I guess that no one could've predicted that

Also, I've learned today that JVM has full support for dynamic typing, TCO and other funky shit - just not for Java


JVM has no support for TCO. In Scala, TRE is done by the compiler but does not cover mutual recursion. That's why there are trampolines in scalaz.


But from what I've read most of the recursion in scala is translated into loops anyway.
Time is precious. Waste it wisely.
Prev 1 784 785 786 787 788 1032 Next
Please log in or register to reply.
Live Events Refresh
uThermal 2v2 Circuit
15:00
Season Finals: Group Stage 1
uThermal1478
Serral1407
RotterdaM703
TaKeTV 401
mouzHeroMarine338
IndyStarCraft 185
SteadfastSC152
Classic35
SHIN 33
elazer22
SKillous15
Shameless12
LiquipediaDiscussion
[ Submit Event ]
Live Streams
Refresh
StarCraft 2
uThermal 1478
Serral 1407
RotterdaM 703
mouzHeroMarine 338
IndyStarCraft 185
SteadfastSC 152
Classic 35
BRAT_OK 29
elazer 22
SKillous 15
trigger 5
StarCraft: Brood War
Britney 23572
Calm 5280
Mini 640
Hyuk 197
Aegong 86
PianO 82
Hyun 62
Free 41
Rock 35
JYJ 27
[ Show more ]
Shine 23
GoRush 20
EG.Machine 15
Dota 2
Gorgc8484
Counter-Strike
fl0m8148
byalli866
Heroes of the Storm
Khaldor304
MindelVK9
Other Games
gofns28042
tarik_tv10138
singsing2296
FrodaN1959
Grubby1706
Mlord496
B2W.Neo432
KnowMe302
mouzStarbuck267
ArmadaUGS105
Livibee88
Mew2King51
SHIN 33
OptimusSC29
fpsfer 1
Organizations
Other Games
EGCTV859
gamesdonequick378
StarCraft 2
angryscii 17
StarCraft: Brood War
lovetv 8
StarCraft 2
Blizzard YouTube
StarCraft: Brood War
BSLTrovo
[ Show 17 non-featured ]
StarCraft 2
• maralekos16
• Reevou 4
• IndyKCrew
• sooper7s
• AfreecaTV YouTube
• intothetv
• Kozan
• Migwel
• LaughNgamezSOOP
StarCraft: Brood War
• STPLYoutube
• ZZZeroYoutube
• BSLYoutube
League of Legends
• Jankos2977
• Nemesis1441
Other Games
• imaqtpie367
• WagamamaTV200
• Shiphtur61
Upcoming Events
Patches Events
28m
BSL
1h 28m
Bonyth vs Dewalt
OSC
6h 28m
Wardi Open
17h 28m
Monday Night Weeklies
22h 28m
Replay Cast
1d 6h
Sparkling Tuna Cup
1d 16h
Replay Cast
2 days
Kung Fu Cup
2 days
Maestros of the Game
2 days
Classic vs Lambo
Clem vs Maru
[ Show More ]
Replay Cast
3 days
The PondCast
3 days
Maestros of the Game
3 days
Serral vs Rogue
herO vs SHIN
Replay Cast
4 days
Maestros of the Game
4 days
Replay Cast
5 days
CranKy Ducklings
5 days
uThermal 2v2 Circuit
5 days
Sparkling Tuna Cup
6 days
uThermal 2v2 Circuit
6 days
Liquipedia Results

Completed

KK 2v2 League Season 1
RSL Revival: Season 5
Heroes Pulsing #1

Ongoing

BSL Season 22
IPSL Spring 2026
KCM Race Survival 2026 Season 2
Acropolis #4
CSCL: Masked Kings S4
YSL S3
SCTL 2026 Spring
WardiTV Spring 2026
Maestros of the Game 2
uThermal 2v2 2026 Main Event
Murky Cup 2026
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
BLAST Open Spring 2026

Upcoming

BSL 22 Non-Korean Championship
CSLAN 4
Blizzard Classic Cup 2026
Kung Fu Cup 2026 Grand Finals
CranK Gathers Season 4: BW vs SC2 Team League
HSC XXIX
Heroes Pulsing #3
Heroes Pulsing #2
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.