• Log InLog In
  • Register
Liquid`
Team Liquid Liquipedia
EDT 11:33
CEST 17:33
KST 00:33
  • 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
[ASL22] Ro4 Preview: Mirror Mirror4[ASL22] Ro8 Preview: Within Reach5[ASL22] Ro8 Preview: In A Tizzy11[ASL22] Ro16 Preview: Holy Diver5[ASL22] Ro16 Preview: Rough Waters10
Community News
SC4ALL: II SC2 Complete Invited Player Lineup9StarCraft II 5.0.17 PTR Patch Notes (Sept 30, 2026)69Weekly Cups (Sept 21-27): herO and ByuN double2Weekly Cups (Sep 13-20): herO scores triple3BSL Season 2316
StarCraft 2
General
SC4ALL: II SC2 Complete Invited Player Lineup StarCraft II 5.0.17 PTR Patch Notes (Sept 30, 2026) How do you feel about the mass reverts in the 5.0.17 PTR? Back to SC2 after 14 years - Protoss CTRL groups? October World Ranking: herO stays #1, ByuN returns
Tourneys
Stellar Fest TWO the Moon (Dec 16-20) Sparkling Tuna Cup - Weekly Open Tournament 2026 GSTL Grand Finals Sea Duckling Open (Global, Bronze-Diamond) SC2 INu's Battles#21 [ 3-Days tournament ]
Strategy
[H] ZvP Mid-Late Game: Stalkers Collossi HT
Custom Maps
[M] (2) Sweltering Sands [M] (2) Frigid Storage
External Content
Mutation # 546 Catch the Train The PondCast: SC2 News & Results Mutation # 545 And Drops and Rifts Mutation # 544 Double Trouble
Brood War
General
Sagi.gg Launcher Released Fantasy returning? Bot on ladder [ASL22] Ro4 Preview: Mirror Mirror mca64Launcher 2.0
Tourneys
[ASL22] Semifinal A [Megathread] Daily Proleagues [ASL22] Ro8 Day 4 2v2v2v2 Tournament
Strategy
Cliff Jump Revisited (1 in a 1000 strategy) Replay Review Process - What do you do? Simple Questions, Simple Answers Odyssey Mineral Stack Saturation
Other Games
General Games
Nintendo Switch Thread General RTS Discussion Thread Warcraft III: The Frozen Throne Stormgate/Frost Giant Megathread Total Annihilation Zero
Dota 2
Dota 2 Champions League Season 3 Begins April 25! Official 'what is Dota anymore' discussion
League of Legends
[TL LoL EUW IHs] Teemo shall perish
Heroes of the Storm
Heroes of the Storm 2.0
Hearthstone
Deck construction bug
TL Mafia
TL Mafia Community Thread
Community
General
US Politics Mega-thread Russo-Ukrainian War Thread Things Aren’t Peaceful in Palestine Canadian Politics Mega-thread Artificial Intelligence Thread
Fan Clubs
Serral Fan Club
Media & Entertainment
Movie Discussion! [Manga] One Piece Diablo Animated Series on Netflix
Sports
Football (Soccer) Thread MLB/Baseball 2023
World Cup 2022
Tech Support
Computer Build, Upgrade & Buying Resource Thread
TL Community
Recent Gifted Posts
Blogs
[ASL22] Ro4 Day1 Ticket Giv…
bITt.mAN
Escaping Into Video Games: G…
TrAiDoS
38 yo Retired SWE loo…
PurE)Rabbit-SF
Can Bots Beat Pros?? Starcr…
namkraft
[meme] I finally understa…
LUCKY_NOOB
Regacy Esports:Our Goa…
regacyesports
Customize Sidebar...

Website Feedback

Closed Threads



Active: 8117 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
Spain18451 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
Poland17847 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
Spain18451 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
Poland17847 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
Poland17847 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
Spain18451 Posts
October 25 2016 13:59 GMT
#15716
Lol. Travis, were you expecting this? :D
Manit0u
Profile Blog Joined August 2004
Poland17847 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
Poland17847 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
WardiTV Weekly
20:00
WardiTV Mondays #107
IntoTheiNu 1352
WardiTV1037
OGKoka 243
Liquipedia
[ Submit Event ]
Live Streams
Refresh
StarCraft 2
OGKoka 243
StarCraft: Brood War
Calm 5012
Bisu 2014
Shuttle 976
Larva 830
Stork 487
EffOrt 477
BeSt 465
Horang2 339
actioN 290
Mini 251
[ Show more ]
Rush 237
Light 144
Mind 119
hero 99
910 90
Zeus 86
Snow 68
Mong 63
sorry 57
Shinee 51
Barracks 48
JYJ 37
Bale 29
ToSsGirL 27
Killer 26
Sexy 26
Aegong 20
yabsab 18
HiyA 17
scan(afreeca) 14
Terrorterran 14
zelot 14
Free 10
Sacsri 7
Dota 2
Gorgc5729
qojqva2670
Dendi1098
febbydoto40
Counter-Strike
fl0m3501
Fnx 691
Heroes of the Storm
Lowko476
Other Games
singsing2480
hiko942
B2W.Neo733
TKL 715
Livibee344
ceh9296
XBOCT274
Hui .232
Liquid`VortiX232
XaKoH 151
Chillindude11
Organizations
Dota 2
PGL Dota 2 - Main Stream23
[ Show 15 non-featured ]
StarCraft 2
• mYiSmile123
• LUISG 22
• AfreecaTV YouTube
• intothetv
• Kozan
• IndyKCrew
• Migwel
StarCraft: Brood War
• HerbMon 35
• iopq 7
• FirePhoenix2
• BSLYoutube
• STPLYoutube
• ZZZeroYoutube
League of Legends
• Nemesis3102
• Jankos2111
Upcoming Events
Monday Night Weeklies
27m
Replay Cast
7h 27m
Afreeca Starleague
18h 27m
Soma vs Soulkey
INu's Battles
19h 27m
SHIN vs Cure
ByuN vs Zoun
PiGosaur Cup
1d 8h
The PondCast
2 days
INu's Battles
2 days
Percival vs TBD
TBD vs herO
OSC
3 days
Replay Cast
4 days
BSL: Ladder Tournament
5 days
[ Show More ]
Sparkling Tuna Cup
5 days
Patches Events
5 days
BSL Open Qualifier
6 days
BSL Open Qualifier
6 days
Liquipedia Results

Completed

CSL 2026 AUTUMN (S22)
Blizzard Classic Cup 2026
Copium Cup

Ongoing

ASL Season 22
Super Anchor Qualifying S3
Acropolis #5
Acropolis #5 - GSB
ESL Pro League Season 24
Stake Ranked Episode 4
1win Private Club #1
Logitech G Play Connect 2026
SL StarSeries Fall 2026
FISSURE Playground #3
BLAST Open Fall 2026
Esports World Cup 2026
BLAST Bounty Summer 2026
BLAST Bounty Summer Qual

Upcoming

Acropolis #5 - GSC
BSL Season 23
SC4ALL II: Brood War
BSL 23: Non-Korean Championship
HSC XXX
Stellar Fest 2: Lunar Cup
SC4ALL II: StarCraft II
Kung Fu Cup 2026 Grand Finals
RSL Offline Finals
HCC Season 3
eXTREMESLAND 2026
PGL Major Singapore 2026
Stake Ranked Episode 6
BLAST Rivals Fall 2026
IEM Beijing 2026
Stake Ranked Episode 5
PGL Masters Bucharest 2026
1win Private Club #2
Thunderpick World Champ. '26
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.