How to resolve the algorithm World Cup group stage step by step in the Visual Basic .NET programming language
How to resolve the algorithm World Cup group stage step by step in the Visual Basic .NET programming language
Table of Contents
Problem Statement
It's World Cup season (or at least it was when this page was created)! The World Cup is an international football/soccer tournament that happens every 4 years. Countries put their international teams together in the years between tournaments and qualify for the tournament based on their performance in other international games. Once a team has qualified they are put into a group with 3 other teams. For the first part of the World Cup tournament the teams play in "group stage" games where each of the four teams in a group plays all three other teams once. The results of these games determine which teams will move on to the "knockout stage" which is a standard single-elimination tournament. The two teams from each group with the most standings points move on to the knockout stage. Each game can result in a win for one team and a loss for the other team or it can result in a draw/tie for each team.
Don't worry about tiebreakers as they can get complicated. We are basically looking to answer the question "if a team gets x standings points, where can they expect to end up in the group standings?". Hint: there should be no possible way to end up in second place with less than two points as well as no way to end up in first with less than three. Oddly enough, there is no way to get 8 points at all.
Let's start with the solution:
Step by Step solution about How to resolve the algorithm World Cup group stage step by step in the Visual Basic .NET programming language
Source code in the visual programming language
Imports System.Text
Module Module1
Dim games As New List(Of String) From {"12", "13", "14", "23", "24", "34"}
Dim results = "000000"
Function FromBase3(num As String) As Integer
Dim out = 0
For Each c In num
Dim d = Asc(c) - Asc("0"c)
out = 3 * out + d
Next
Return out
End Function
Function ToBase3(num As Integer) As String
Dim ss As New StringBuilder
While num > 0
Dim re = num Mod 3
num \= 3
ss.Append(re)
End While
Return New String(ss.ToString().Reverse().ToArray())
End Function
Function NextResult() As Boolean
If results = "222222" Then
Return False
End If
Dim res = FromBase3(results)
Dim conv = ToBase3(res + 1)
results = conv.PadLeft(6, "0"c)
Return True
End Function
Sub Main()
Dim points(0 To 3, 0 To 9) As Integer
Do
Dim records(0 To 3) As Integer
For index = 0 To games.Count - 1
Select Case results(index)
Case "2"c
records(Asc(games(index)(0)) - Asc("1"c)) += 3
Case "1"c
records(Asc(games(index)(0)) - Asc("1"c)) += 1
records(Asc(games(index)(1)) - Asc("1"c)) += 1
Case "0"c
records(Asc(games(index)(1)) - Asc("1"c)) += 3
End Select
Next
Array.Sort(records)
For index = 0 To records.Length - 1
Dim t = records(index)
points(index, t) += 1
Next
Loop While NextResult()
Console.WriteLine("POINTS 0 1 2 3 4 5 6 7 8 9")
Console.WriteLine("-------------------------------------------------------------")
Dim places As New List(Of String) From {"1st", "2nd", "3rd", "4th"}
For i = 0 To places.Count - 1
Console.Write("{0} place", places(i))
For j = 0 To 9
Console.Write("{0,5}", points(3 - i, j))
Next
Console.WriteLine()
Next
End Sub
End Module
You may also check:How to resolve the algorithm Date format step by step in the Neko programming language
You may also check:How to resolve the algorithm FizzBuzz step by step in the Babel programming language
You may also check:How to resolve the algorithm Arrays step by step in the SPL programming language
You may also check:How to resolve the algorithm Multiple distinct objects step by step in the Modula-3 programming language
You may also check:How to resolve the algorithm Ethiopian multiplication step by step in the Z80 Assembly programming language